Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-19677

Intel library self-check in unit tests

    XMLWordPrintable

    Details

    • Backwards Compatibility:
      Fully Compatible
    • Backport Requested:
      v3.4
    • Sprint:
      Platforms 2017-03-27

      Description

      We would like the intel library to be tested, since it is prone to mis-compilation which could cause decimal arithmetic in mongo to be incorrect. There is an extensive test suite that comes with the library, and runs quite quickly (a few seconds). The intel built in test compiles to a standalone executable. It's not clear how to best integrate into our test suite. We could execute it from a CppUnitTest, or have a separate scons target that is a standalone task on evergreen.

      The self tests are located at: src/third_party/IntelRDFPMathLib20U1/TESTS/readtest.c and use readtest.in as the input. They should be built using the same flags as the library, libm must be included on some platforms as well for proper functionality.

      Ideally these would be integrated into the unittest task, however they currently have minor failures on some systems that must be resolved by changing compilation or skipped:

      • win64: bid32_sin fails on a edge case. Not an issue as we do not need this function.
      • win32: some inaccuracies with bid128_pow when returning inexact results. There are tests which check that the error is expected for this function, these are failing. We are not sure if the issue is related to mis-compilation, or is a problem with the platform's pow implementation (used underneath bid128_pow).

      Besides these systems, the self-tests have been confirmed to pass on all other evergreen targets.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: