2 #include <cds/misc/RigtorpSPSCQueue.h>
3 #include <cds_test/stress_test.h>
11 class rigtorpSPSCQueueTest : public cds_test::stress_fixture {
13 static size_t s_nRigtorpSPSCQueuePassCount;
14 static size_t s_nRigtorpSPSCQueueEnqueueStride;
15 static size_t s_nRigtorpSPSCQueueCapacity;
17 rigtorp::SPSCQueue<size_t>* q;
19 static void SetUpTestCase() {
20 cds_test::config const &cfg = get_config("SequentialMisc");
21 GetConfigExpected(RigtorpSPSCQueuePassCount, 10000);
22 GetConfigExpected(RigtorpSPSCQueueEnqueueStride, 1024);
23 GetConfigExpected(RigtorpSPSCQueueCapacity, 2048);
24 if (s_nRigtorpSPSCQueueCapacity <= s_nRigtorpSPSCQueueEnqueueStride) {
25 s_nRigtorpSPSCQueueCapacity = 2 * s_nRigtorpSPSCQueueEnqueueStride;
30 std::unique_ptr<rigtorp::SPSCQueue<size_t>> q(
31 new rigtorp::SPSCQueue<size_t>(s_nRigtorpSPSCQueueCapacity));
36 while (nNo < s_nRigtorpSPSCQueuePassCount) {
37 size_t curr_push_count = std::min(s_nRigtorpSPSCQueuePassCount - nNo,
38 s_nRigtorpSPSCQueueEnqueueStride);
39 for (size_t i = 0; i < curr_push_count; i++) {
45 size_t* res = nullptr;
46 while ((res = q->front())) {
50 EXPECT_EQ(pop_sum, push_sum);
57 size_t rigtorpSPSCQueueTest::s_nRigtorpSPSCQueuePassCount;
58 size_t rigtorpSPSCQueueTest::s_nRigtorpSPSCQueueEnqueueStride;
59 size_t rigtorpSPSCQueueTest::s_nRigtorpSPSCQueueCapacity;
61 TEST_F(rigtorpSPSCQueueTest, PushPop) {