diff options
author | Tim Taubert <ttaubert@mozilla.com> | 2016-11-17 11:27:20 +0100 |
---|---|---|
committer | Tim Taubert <ttaubert@mozilla.com> | 2016-11-17 11:27:20 +0100 |
commit | b9a0edab9a505f63468173a0724cb504f6b992c0 (patch) | |
tree | e522f3008586a84f749495108a22c69f57748283 /gtests/freebl_gtest | |
parent | 96fd75a8f7dd62fc5b6611e42e1aeacc406280f0 (diff) | |
download | nss-hg-b9a0edab9a505f63468173a0724cb504f6b992c0.tar.gz |
Bug 1318280 - Fix freebl_gtest on macOS r=franziskus
Differential Revision: https://nss-review.dev.mozaws.net/D75
Diffstat (limited to 'gtests/freebl_gtest')
-rw-r--r-- | gtests/freebl_gtest/mpi_unittest.cc | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/gtests/freebl_gtest/mpi_unittest.cc b/gtests/freebl_gtest/mpi_unittest.cc index fa05c4982..c6e140492 100644 --- a/gtests/freebl_gtest/mpi_unittest.cc +++ b/gtests/freebl_gtest/mpi_unittest.cc @@ -12,9 +12,30 @@ #include <string.h> #include <string> +#ifdef __MACH__ +#include <mach/clock.h> +#include <mach/mach.h> +#endif + #include "mpi.h" namespace nss_test { +void gettime(struct timespec *tp) { +#ifdef __MACH__ + clock_serv_t cclock; + mach_timespec_t mts; + + host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &cclock); + clock_get_time(cclock, &mts); + mach_port_deallocate(mach_task_self(), cclock); + + tp->tv_sec = mts.tv_sec; + tp->tv_nsec = mts.tv_nsec; +#else + clock_gettime(CLOCK_MONOTONIC, tp); +#endif +} + class MPITest : public ::testing::Test { protected: void TestCmp(const std::string a_string, const std::string b_string, @@ -46,9 +67,21 @@ TEST_F(MPITest, MpiCmpConstTest) { ASSERT_EQ(MP_OKAY, mp_init(&b)); ASSERT_EQ(MP_OKAY, mp_init(&c)); - mp_read_radix(&a, const_cast<char *>("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), 16); - mp_read_radix(&b, const_cast<char *>("FF0FFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), 16); - mp_read_radix(&c, const_cast<char *>("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632550"), 16); + mp_read_radix( + &a, + const_cast<char *>( + "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), + 16); + mp_read_radix( + &b, + const_cast<char *>( + "FF0FFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), + 16); + mp_read_radix( + &c, + const_cast<char *>( + "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632550"), + 16); mp_taint(&b); mp_taint(&c); @@ -57,11 +90,12 @@ TEST_F(MPITest, MpiCmpConstTest) { uint32_t time_b = 0, time_c = 0; for (uint32_t i = 0; i < runs; ++i) { struct timespec start, end; - clock_gettime(CLOCK_MONOTONIC, &start); + gettime(&start); int r = mp_cmp(&a, &b); - clock_gettime(CLOCK_MONOTONIC, &end); + gettime(&end); unsigned long long used = end.tv_sec * 1000000000L + end.tv_nsec; - used -= (unsigned long long)start.tv_sec * 1000000000L + start.tv_nsec; + used -= static_cast<unsigned long long>(start.tv_sec * 1000000000L + + start.tv_nsec); time_b += used; ASSERT_EQ(1, r); } @@ -69,11 +103,12 @@ TEST_F(MPITest, MpiCmpConstTest) { for (uint32_t i = 0; i < runs; ++i) { struct timespec start, end; - clock_gettime(CLOCK_MONOTONIC, &start); + gettime(&start); int r = mp_cmp(&a, &c); - clock_gettime(CLOCK_MONOTONIC, &end); + gettime(&end); unsigned long long used = end.tv_sec * 1000000000L + end.tv_nsec; - used -= (unsigned long long)start.tv_sec * 1000000000L + start.tv_nsec; + used -= static_cast<unsigned long long>(start.tv_sec * 1000000000L + + start.tv_nsec); time_c += used; ASSERT_EQ(1, r); } |