Skip to content

Commit

Permalink
Add async timer tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rnburn authored and Johannes Tax committed Jul 7, 2020
1 parent 76683b0 commit 53bcda4
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
11 changes: 11 additions & 0 deletions sdk/test/event/async_timer/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cc_test(
name = "dispatcher_test",
srcs = [
"dispatcher_test.cc",
],
linkstatic = 1,
deps = [
"//sdk/src/event/async_timer:dispatcher",
"@com_google_googletest//:gtest_main",
],
)
39 changes: 39 additions & 0 deletions sdk/test/event/async_timer/dispatcher_test.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#include "src/event/async_timer/dispatcher.h"

#include <chrono>

#include <gtest/gtest.h>
using opentelemetry::sdk::event::Timer;
using opentelemetry::sdk::event::async_timer::Dispatcher;

TEST(DispatcherTest, Timer)
{
Dispatcher dispatcher;
std::chrono::steady_clock::time_point t1, t2;
auto timer = dispatcher.CreateTimer([&] { t2 = std::chrono::steady_clock::now(); });
timer->EnableTimer(std::chrono::milliseconds{100});
t1 = std::chrono::steady_clock::now();
dispatcher.Run();
auto duration = t2 - t1;
EXPECT_TRUE(duration > std::chrono::milliseconds{50});
EXPECT_TRUE(duration < std::chrono::milliseconds{200});
}

TEST(DispatcherTest, TimerOrder)
{
Dispatcher dispatcher;
std::vector<int> order;

auto t1 = dispatcher.CreateTimer([&] { order.push_back(1); });
t1->EnableTimer(std::chrono::milliseconds{5});

auto t2 = dispatcher.CreateTimer([&] { order.push_back(2); });
t2->EnableTimer(std::chrono::milliseconds{2});

auto t3 = dispatcher.CreateTimer([&] { order.push_back(3); });
t3->EnableTimer(std::chrono::milliseconds{7});

dispatcher.Run();

EXPECT_EQ(order, (std::vector<int>{2, 1, 3}));
}

0 comments on commit 53bcda4

Please sign in to comment.