22#include <glog/logging.h>
23#include <gmock/gmock.h>
24#include <gtest/gtest.h>
37TEST(BatchQueueTest, NoBatch) {
38 BatchQueue<std::unique_ptr<TestItem>> queue(
"test", 100);
39 auto item = std::make_unique<TestItem>();
41 queue.Push(std::move(item));
43 auto out = queue.Pop(100);
44 EXPECT_EQ(out.size(), 1);
45 EXPECT_EQ(out[0]->
data,
"test");
48TEST(BatchQueueTest, Batch) {
50 BatchQueue<std::unique_ptr<TestItem>> queue(
"test", 100);
51 auto th = std::thread([&]() {
53 while (count != tot) {
54 auto out = queue.Pop(100);
59 for (
int i = 0; i < tot; ++i) {
60 auto item = std::make_unique<TestItem>();
62 queue.Push(std::move(item));
67TEST(BatchQueueTest, BatchPerformance) {
69 BatchQueue<std::unique_ptr<TestItem>> queue(
"test", 100);
70 auto th = std::thread([&]() {
71 auto start_time = std::chrono::system_clock::now();
74 while (count != tot) {
75 auto out = queue.Pop(100);
79 auto current_time = std::chrono::system_clock::now();
80 std::chrono::duration<double> diff = (current_time - start_time);
81 printf(
"pop time: %lf num = %d\n", diff.count(), num);
83 auto start_time = std::chrono::system_clock::now();
84 for (
int i = 0; i < tot; ++i) {
85 auto item = std::make_unique<TestItem>();
87 queue.Push(std::move(item));
89 auto current_time = std::chrono::system_clock::now();
90 std::chrono::duration<double> diff = (current_time - start_time);
91 printf(
"push time: %lf\n", diff.count());
92 printf(
"queue size %zu\n", queue.Size());
TEST(NetworkUtilsTest, GetDNSName)