2 #include <cds/misc/chase-lev-deque.h>
3 #include <cds_test/stress_test.h>
14 typedef cds_others::ChaseLevDeque Deque;
15 static size_t s_nDequePassCount = 1000;
16 static size_t s_nDequeStealerThreadCount = 5;
17 static size_t s_nDequeMainPassCount = 100000000;
19 class ChaseLevDequeTest : public cds_test::stress_fixture {
21 static atomic_int terminate_stealer;
23 static ullong *succ_counts;
24 static ullong push_sum;
25 static ullong push_count;
27 static void SetUpTestCase() {
28 cds_test::config const &cfg = get_config("SequentialMisc");
29 GetConfig(DequePassCount);
30 GetConfig(DequeStealerThreadCount);
31 GetConfig(DequeMainPassCount);
35 atomic_int ChaseLevDequeTest::terminate_stealer;
36 ullong *ChaseLevDequeTest::sums;
37 ullong *ChaseLevDequeTest::succ_counts;
38 ullong ChaseLevDequeTest::push_count;
39 ullong ChaseLevDequeTest::push_sum;
41 TEST_F(ChaseLevDequeTest, ChaseLevDeque_push_take) {
42 std::unique_ptr<Deque> deque(new Deque());
45 for (size_t i = 0; i < s_nDequePassCount; ++i) {
50 size_t supposed_sum = s_nDequePassCount * (s_nDequePassCount - 1) / 2;
51 if (sum != supposed_sum) {
52 std::cout << "Sequential deque take sum: " << sum << " != " << supposed_sum
57 TEST_F(ChaseLevDequeTest, ChaseLevDeque_push_steal) {
58 std::unique_ptr<Deque> deque(new Deque());
61 for (size_t i = 0; i < s_nDequePassCount; ++i) {
66 size_t supposed_sum = s_nDequePassCount * (s_nDequePassCount - 1) / 2;
67 if (sum != supposed_sum) {
68 std::cout << "Sequential deque steal sum: " << sum << " != " << supposed_sum