2 #include <cds/misc/RigtorpMPMCQueue.h>
3 #include <cds_test/stress_test.h>
11 class rigtorpMPMCQueueTest : public cds_test::stress_fixture {
13 static size_t s_nRigtorpMPMCQueuePassCount;
14 static size_t s_nRigtorpMPMCQueueEnqueueStride;
15 static size_t s_nRigtorpMPMCQueueCapacity;
17 static void SetUpTestCase() {
18 cds_test::config const &cfg = get_config("SequentialMisc");
19 GetConfigExpected(RigtorpMPMCQueuePassCount, 10000);
20 GetConfigExpected(RigtorpMPMCQueueEnqueueStride, 1024);
21 GetConfigExpected(RigtorpMPMCQueueCapacity, 2048);
22 if (s_nRigtorpMPMCQueueCapacity <= s_nRigtorpMPMCQueueEnqueueStride) {
23 s_nRigtorpMPMCQueueCapacity = 2 * s_nRigtorpMPMCQueueEnqueueStride;
28 std::unique_ptr<rigtorp::MPMCQueue<size_t>> q(
29 new rigtorp::MPMCQueue<size_t>(s_nRigtorpMPMCQueueCapacity));
33 while (nNo < s_nRigtorpMPMCQueuePassCount) {
34 size_t curr_push_count = std::min(s_nRigtorpMPMCQueuePassCount - nNo,
35 s_nRigtorpMPMCQueueEnqueueStride);
36 for (size_t i = 0; i < curr_push_count; i++) {
41 for (size_t i = 0; i < curr_push_count; i++) {
49 s_nRigtorpMPMCQueuePassCount * (s_nRigtorpMPMCQueuePassCount - 1) / 2;
50 EXPECT_EQ(pop_sum, supposed_sum);
54 size_t rigtorpMPMCQueueTest::s_nRigtorpMPMCQueuePassCount;
55 size_t rigtorpMPMCQueueTest::s_nRigtorpMPMCQueueEnqueueStride;
56 size_t rigtorpMPMCQueueTest::s_nRigtorpMPMCQueueCapacity;
58 TEST_F(rigtorpMPMCQueueTest, PushPop) {