MCPcopy Create free account
hub / github.com/deepseek-ai/3FS / TEST

Function TEST

tests/common/utils/TestBoundedQueue.cc:15–76  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13using namespace std::chrono_literals;
14
15TEST(TestBoundedQueue, Normal) {
16 BoundedQueue<int> queue(4);
17 ASSERT_TRUE(queue.empty());
18
19 queue.enqueue(1);
20 queue.enqueue(2);
21 queue.enqueue(3);
22 queue.enqueue(4);
23 ASSERT_TRUE(queue.full());
24 ASSERT_FALSE(queue.try_enqueue(5));
25
26 // 1. sync.
27 {
28 std::jthread dequeue([&] {
29 std::this_thread::sleep_for(100ms);
30 ASSERT_EQ(queue.dequeue(), 1);
31 });
32
33 auto start = std::chrono::steady_clock::now();
34 queue.enqueue(5);
35 auto elapsed = std::chrono::steady_clock::now() - start;
36 ASSERT_LE(50ms, elapsed);
37 ASSERT_LE(elapsed, 150ms);
38 }
39
40 // 2. async.
41 {
42 std::jthread dequeue([&] {
43 std::this_thread::sleep_for(100ms);
44 ASSERT_EQ(folly::coro::blockingWait(queue.co_dequeue()), 2);
45 });
46
47 auto start = std::chrono::steady_clock::now();
48 folly::coro::blockingWait(queue.co_enqueue(6));
49 auto elapsed = std::chrono::steady_clock::now() - start;
50 ASSERT_LE(50ms, elapsed);
51 ASSERT_LE(elapsed, 150ms);
52 }
53
54 // 3. try enqueue/dequeue.
55 {
56 ASSERT_FALSE(queue.try_enqueue(7));
57 ASSERT_EQ(queue.try_dequeue(), std::optional<int>{3});
58 ASSERT_TRUE(queue.try_enqueue(7));
59
60 int value;
61 ASSERT_TRUE(queue.try_dequeue(value));
62 ASSERT_EQ(value, 4);
63
64 ASSERT_EQ(queue.size(), 3);
65
66 queue.dequeue(value);
67 ASSERT_EQ(value, 5);
68
69 folly::coro::blockingWait(queue.co_dequeue(value));
70 ASSERT_EQ(value, 6);
71
72 ASSERT_EQ(queue.try_dequeue(), std::optional<int>{7});

Callers

nothing calls this directly

Calls 9

try_enqueueMethod · 0.80
co_enqueueMethod · 0.80
emptyMethod · 0.45
enqueueMethod · 0.45
fullMethod · 0.45
dequeueMethod · 0.45
co_dequeueMethod · 0.45
try_dequeueMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected