Uploaded image for project: 'ZABBIX BUGS AND ISSUES'
  1. ZABBIX BUGS AND ISSUES
  2. ZBX-20159

"evaluate function" test case failure on big endian systems.

XMLWordPrintable

    • Team A
    • Sprint 82 (Nov 2021)
    • 0.125

      When running the tests on an s390x system. There is a test case failure in the evaluate function suite on Evaluate logeventid(^12).

       

       evaluate_function
      ─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────
         0 │ OK      │ Evaluate last() <- 0.1, 0.2
         1 │ OK      │ Evaluate last(#2) <- 0.1, 0.2
         2 │ OK      │ Evaluate last() <- 'xyz'
         3 │ OK      │ Evaluate last() <- '😓...'
         4 │ OK      │ Evaluate last() <- '123'
         5 │ OK      │ Evaluate last() <- ' a b '
         6 │ OK      │ Evaluate last()  <- '\"c:\\\"'
         7 │ OK      │ Evaluate abschange() <- 0.1, 0.2
         8 │ OK      │ Evaluate abschange() <- 10, 7
         9 │ OK      │ Evaluate abschange() <- 'a', 'b'
        10 │ OK      │ Evaluate abschange() <- 'x', 'x'
        11 │ OK      │ Evaluate abschange() <- @log 'a', 'b'
        12 │ OK      │ Evaluate abschange() <- @log 'x', 'x'
        13 │ OK      │ Evaluate avg(#2)
        14 │ OK      │ Evaluate avg(3m)
        15 │ OK      │ Evaluate avg(#2,1m)
        16 │ OK      │ Evaluate band(#1,1)
        17 │ OK      │ Evaluate band(#2,1)
        18 │ OK      │ Evaluate band(2m,2,1m)
        19 │ OK      │ Evaluate change() <- 0.1, 0.2
        20 │ OK      │ Evaluate change() <- 10, 7
        21 │ OK      │ Evaluate change() <- 'a', 'b'
        22 │ OK      │ Evaluate change() <- 'x', 'x'
        23 │ OK      │ Evaluate change() <- @log 'a', 'b'
        24 │ OK      │ Evaluate change() <- @log 'x', 'x'
        25 │ OK      │ Evaluate count(#3,4,ge)
        26 │ OK      │ Evaluate count(#3,o,like)
        27 │ OK      │ Evaluate count(#3,o$,regexp)
        28 │ OK      │ Evaluate count(#3,o,iregexp)
        29 │ OK      │ Evaluate count(#3,1/3,band)
        30 │ OK      │ Evaluate count(#3,2/3,band)
        31 │ OK      │ Evaluate date()
        32 │ OK      │ Evaluate dayofmonth()
        33 │ OK      │ Evaluate dayofweek()
        34 │ OK      │ Evaluate time()
        35 │ OK      │ Evaluate delta(#4)
        36 │ OK      │ Evaluate delta(4m,1m)
        37 │ OK      │ Evaluate diff() <- 0.1, 0.2
        38 │ OK      │ Evaluate diff() <- 0.123, 0.123
        39 │ OK      │ Evaluate diff() <- 10, 7
        40 │ OK      │ Evaluate diff() <- 1234567890, 1234567890
        41 │ OK      │ Evaluate diff() <- 'a', 'b'
        42 │ OK      │ Evaluate diff() <- 'x', 'x'
        43 │ OK      │ Evaluate diff() <- @log 'a', 'b'
        44 │ OK      │ Evaluate diff() <- @log 'x', 'x'
        45 │ OK      │ Evaluate forecast(#5,,1h)
        46 │ OK      │ Evaluate forecast(#5,1h,1h)
        47 │ OK      │ Evaluate fuzzytime(1) < @uint64
        48 │ OK      │ Evaluate fuzzytime(1) < @float
        49 │ OK      │ Evaluate iregexp(^o,#5)
        50 │ OK      │ Evaluate regexp(^o,#5)
        51 │ OK      │ Evaluate str(o,#5)
        52 │ FAILURE │ Evaluate logeventid(^12)
      STDOUT:
      [==========] Running 1 test(s).
      [ RUN      ] zbx_mock_test_entry
      [  FAILED  ] zbx_mock_test_entry
      [==========] 1 test(s) run.
      STDERR:
      [  ERROR   ] --- function result: Expected value "1.000000" while got "0.000000"
      [   LINE   ] --- evaluate_function.c:113: error: Failure!
      [  PASSED  ] 0 test(s).
      [  FAILED  ] 1 test(s), listed below:
      [  FAILED  ] zbx_mock_test_entry 1 FAILED TEST(S)
        53 │ OK      │ Evaluate logeventid(^34)
        54 │ OK      │ Evaluate logseverity()
        55 │ OK      │ Evaluate logsource('(Application|System)') <- Application
        56 │ OK      │ Evaluate logsource("(Application|System)") <- Security
        57 │ OK      │ Evaluate max(5m)
        58 │ OK      │ Evaluate max(5m,2m)
        59 │ OK      │ Evaluate min(4m)
        60 │ OK      │ Evaluate min(4m,2m)
        61 │ OK      │ Evaluate nodata(1m)
        62 │ OK      │ Evaluate nodata(5m)
        63 │ OK      │ Evaluate now()
        64 │ OK      │ Evaluate percentile(5m,,100)
        65 │ OK      │ Evaluate percentile(5m,,50)
        66 │ OK      │ Evaluate prev() <- 0.1, 0.2
        67 │ OK      │ Evaluate strlen()
        68 │ OK      │ Evaluate strlen(1m)
        69 │ OK      │ Evaluate strlen(,2m)
        70 │ OK      │ Evaluate strlen() <- 😓
        71 │ OK      │ Evaluate strlen() <- @log
        72 │ OK      │ Evaluate sum(#4)
        73 │ OK      │ Evaluate sum(4m,1m)
        74 │ OK      │ Evaluate time()
        75 │ OK      │ Evaluate timeleft(5m,,65)
      ─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────
      
      # uname -a
      Linux 5.4.0-89-generic #100-Ubuntu SMP Fri Sep 24 14:27:47 UTC 2021 s390x s390x s390x GNU/Linux
      # cat /etc/os-release
      NAME="Ubuntu"
      VERSION="20.04 LTS (Focal Fossa)"
      ID=ubuntu
      ID_LIKE=debian
      PRETTY_NAME="Ubuntu 20.04 LTS"
      VERSION_ID="20.04"
      HOME_URL="https://www.ubuntu.com/"
      SUPPORT_URL="https://help.ubuntu.com/"
      BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
      PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
      VERSION_CODENAME=focal
      UBUNTU_CODENAME=focal
      
      

      It's caused by:

      if (FAIL == is_uint64(data, &log->logeventid))
      

      in the function:

      static void zbx_vcmock_read_history_value

      in the files:

      tests/mocks/valuecache/valuecache_mock.c

      tests/libs/zbxhistory/zbx_history_get_values.c

       

      should be:

      if (FAIL == is_uint32(data, &log->logeventid))
      

      since logeventid is a 32 bit integer

       

            vso Vladislavs Sokurenko
            adpopescu Adrian D. Popescu
            Team A
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: