summaryrefslogtreecommitdiff
path: root/gtests/freebl_gtest
diff options
context:
space:
mode:
authorTim Taubert <ttaubert@mozilla.com>2016-11-17 11:27:20 +0100
committerTim Taubert <ttaubert@mozilla.com>2016-11-17 11:27:20 +0100
commitb9a0edab9a505f63468173a0724cb504f6b992c0 (patch)
treee522f3008586a84f749495108a22c69f57748283 /gtests/freebl_gtest
parent96fd75a8f7dd62fc5b6611e42e1aeacc406280f0 (diff)
downloadnss-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.cc53
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);
}