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("Misc");
19 GetConfig(RigtorpMPMCQueuePassCount);
20 GetConfig(RigtorpMPMCQueueEnqueueStride);
21 GetConfig(RigtorpMPMCQueueCapacity);
25 rigtorp::MPMCQueue<size_t> q(s_nRigtorpMPMCQueueCapacity);
29 while (nNo < s_nRigtorpMPMCQueuePassCount) {
30 size_t curr_push_count =
31 std::min(s_nRigtorpMPMCQueuePassCount - nNo, s_nRigtorpMPMCQueueEnqueueStride);
32 for (size_t i = 0; i < curr_push_count; i++) {
37 for (size_t i = 0; i < curr_push_count; i++) {
45 s_nRigtorpMPMCQueuePassCount * (s_nRigtorpMPMCQueuePassCount - 1) / 2;
46 if (pop_sum != supposed_sum) {
47 std::cout << "Sequential rigtorpMPMC queue pop sum: " << pop_sum
48 << " != " << supposed_sum << "\n";
53 size_t rigtorpMPMCQueueTest::s_nRigtorpMPMCQueuePassCount;
54 size_t rigtorpMPMCQueueTest::s_nRigtorpMPMCQueueEnqueueStride;
55 size_t rigtorpMPMCQueueTest::s_nRigtorpMPMCQueueCapacity;
57 TEST_F(rigtorpMPMCQueueTest, PushPop) {