Fixed mpmc_q test for osx in travis

This commit is contained in:
gabime 2018-08-17 17:17:16 +03:00
parent a281d21fbf
commit 9ad9cfb898
3 changed files with 21 additions and 17 deletions

View File

@ -84,8 +84,6 @@ matrix:
before_script:
- if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi
- if [ -n "$CLANG_VERSION" ]; then export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}"; fi

View File

@ -7,6 +7,7 @@
#include <exception>
#include <fstream>
#include <ostream>
#include <iostream>
#include <string>
#define SPDLOG_TRACE_ON

View File

@ -2,25 +2,27 @@
using namespace std::chrono;
using std::chrono::milliseconds;
using std::chrono::system_clock;
using test_clock = std::chrono::high_resolution_clock ;
system_clock::time_point now_millis()
static milliseconds millis_from(const test_clock::time_point &tp0)
{
return time_point_cast<milliseconds>(system_clock::now());
return std::chrono::duration_cast<milliseconds>(test_clock::now()-tp0);
}
TEST_CASE("dequeue-empty-nowait", "[mpmc_blocking_q]")
{
size_t q_size = 100;
milliseconds tolerance_wait(10);
milliseconds tolerance_wait(30);
spdlog::details::mpmc_blocking_queue<int> q(q_size);
int popped_item;
auto millis_0 = now_millis();
auto start = test_clock::now();
auto rv = q.dequeue_for(popped_item, milliseconds::zero());
auto millis_1 = now_millis();
auto delta_ms = millis_from(start);
REQUIRE(rv == false);
REQUIRE((millis_1 - millis_0) <= tolerance_wait);
INFO("Delta " << delta_ms.count() << " millis");
REQUIRE(delta_ms <= tolerance_wait);
}
TEST_CASE("dequeue-empty-wait", "[mpmc_blocking_q]")
@ -28,16 +30,17 @@ TEST_CASE("dequeue-empty-wait", "[mpmc_blocking_q]")
size_t q_size = 100;
milliseconds wait_ms(250);
milliseconds tolerance_wait(10);
milliseconds tolerance_wait(30);
spdlog::details::mpmc_blocking_queue<int> q(q_size);
int popped_item;
auto millis_0 = now_millis();
auto start = test_clock::now();
auto rv = q.dequeue_for(popped_item, wait_ms);
auto millis_1 = now_millis();
auto delta_ms = millis_1 - millis_0;
auto delta_ms = millis_from(start);
REQUIRE(rv == false);
INFO("Delta " << delta_ms.count() << " millis");
REQUIRE(delta_ms >= wait_ms);
REQUIRE(delta_ms <= wait_ms + tolerance_wait);
}
@ -47,15 +50,17 @@ TEST_CASE("enqueue_nowait", "[mpmc_blocking_q]")
size_t q_size = 1;
spdlog::details::mpmc_blocking_queue<int> q(q_size);
milliseconds tolerance_wait(10);
milliseconds tolerance_wait(30);
q.enqueue(1);
REQUIRE(q.overrun_counter() == 0);
auto millis_0 = now_millis();
auto start = test_clock::now();
q.enqueue_nowait(2);
auto millis_1 = now_millis();
REQUIRE((millis_1 - millis_0) <= tolerance_wait);
auto delta_ms = millis_from(start);
INFO("Delta " << delta_ms.count() << " millis");
REQUIRE(delta_ms <= tolerance_wait);
REQUIRE(q.overrun_counter() == 1);
}