Skip to content

Commit 2d595ad

Browse files
committed
Simplify tests
1 parent 0585125 commit 2d595ad

1 file changed

Lines changed: 20 additions & 28 deletions

File tree

test/rrd/intrusive_mpsc_queue.cpp

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,12 @@ struct mpsc_single_producer_consumer : rl::test_suite<mpsc_single_producer_consu
5959
struct mpsc_two_producers : rl::test_suite<mpsc_two_producers, 3> {
6060
test_queue queue;
6161
test_node nodes[4] = {test_node{1}, test_node{2}, test_node{3}, test_node{4}};
62-
std::atomic<int> consumed_count{0};
63-
std::atomic<bool> seen[4];
62+
int consumed_count{0};
63+
bool seen[4];
6464

6565
void before() {
66-
consumed_count.store(0, std::memory_order_relaxed);
6766
for (int i = 0; i < 4; ++i) {
68-
seen[i].store(false, std::memory_order_relaxed);
67+
seen[i] = false;
6968
}
7069
}
7170

@@ -80,25 +79,23 @@ struct mpsc_two_producers : rl::test_suite<mpsc_two_producers, 3> {
8079
queue.push_back(&nodes[3]);
8180
} else {
8281
// Consumer
83-
int count = 0;
84-
while (count < 4) {
82+
while (consumed_count < 4) {
8583
test_node* node = queue.pop_front();
8684
if (node) {
8785
int idx = node->value_ - 1;
8886
RL_ASSERT(idx >= 0 && idx < 4);
89-
bool was_seen = seen[idx].exchange(true, std::memory_order_relaxed);
87+
bool was_seen = std::exchange(seen[idx], true);
9088
RL_ASSERT(!was_seen); // Each node should be seen exactly once
91-
++count;
89+
++consumed_count;
9290
}
9391
}
94-
consumed_count.store(count, std::memory_order_relaxed);
9592
}
9693
}
9794

9895
void after() {
99-
RL_ASSERT(consumed_count.load() == 4);
96+
RL_ASSERT(consumed_count == 4);
10097
for (int i = 0; i < 4; ++i) {
101-
RL_ASSERT(seen[i].load());
98+
RL_ASSERT(seen[i]);
10299
}
103100
}
104101
};
@@ -202,13 +199,12 @@ struct mpsc_five_prod_one_cons : rl::test_suite<mpsc_five_prod_one_cons, 6> {
202199
// Producer 4: values 40000-40001
203200
test_node{40000}, test_node{40001}
204201
};
205-
std::atomic<int> consumed_count{0};
206-
std::atomic<bool> seen[10];
202+
int consumed_count{0};
203+
bool seen[10];
207204

208205
void before() {
209-
consumed_count.store(0, std::memory_order_relaxed);
210206
for (int i = 0; i < 10; ++i) {
211-
seen[i].store(false, std::memory_order_relaxed);
207+
seen[i] = false;
212208
}
213209
}
214210

@@ -220,8 +216,7 @@ struct mpsc_five_prod_one_cons : rl::test_suite<mpsc_five_prod_one_cons, 6> {
220216
queue.push_back(&nodes[base_idx + 1]);
221217
} else {
222218
// Consumer thread (5)
223-
std::atomic<int> count = 0;
224-
while (count < 10) {
219+
while (consumed_count < 10) {
225220
test_node* node = queue.pop_front();
226221
if (node) {
227222
// Map value to index
@@ -234,19 +229,18 @@ struct mpsc_five_prod_one_cons : rl::test_suite<mpsc_five_prod_one_cons, 6> {
234229
idx = producer_id * 2 + item_in_producer;
235230
}
236231
RL_ASSERT(idx >= 0 && idx < 10);
237-
bool was_seen = seen[idx].exchange(true, std::memory_order_relaxed);
232+
bool was_seen = std::exchange(seen[idx], true);
238233
RL_ASSERT(!was_seen); // Each node should be seen exactly once
239-
count.fetch_add(1);
234+
++consumed_count;
240235
}
241236
}
242-
consumed_count.store(count, std::memory_order_relaxed);
243237
}
244238
}
245239

246240
void after() {
247-
RL_ASSERT(consumed_count.load() == 10);
241+
RL_ASSERT(consumed_count == 10);
248242
for (int i = 0; i < 10; ++i) {
249-
RL_ASSERT(seen[i].load());
243+
RL_ASSERT(seen[i]);
250244
}
251245
}
252246
};
@@ -258,11 +252,10 @@ struct mpsc_five_producers_ordered : rl::test_suite<mpsc_five_producers_ordered,
258252

259253
test_queue queue;
260254
test_node nodes[TOTAL_ITEMS];
261-
std::atomic<int> consumed_count{0};
255+
int consumed_count{0};
262256
int consumed_values[TOTAL_ITEMS];
263257

264258
void before() {
265-
consumed_count.store(0, std::memory_order_relaxed);
266259
for (int i = 0; i < TOTAL_ITEMS; ++i) {
267260
consumed_values[i] = -1;
268261
// Initialize nodes with their values
@@ -279,19 +272,18 @@ struct mpsc_five_producers_ordered : rl::test_suite<mpsc_five_producers_ordered,
279272
}
280273
} else {
281274
int count = 0;
282-
while (count < TOTAL_ITEMS) {
275+
while (consumed_count < TOTAL_ITEMS) {
283276
test_node* node = queue.pop_front();
284277
if (node) {
285278
consumed_values[count] = node->value_;
286-
++count;
279+
++consumed_count;
287280
}
288281
}
289-
consumed_count.store(count, std::memory_order_relaxed);
290282
}
291283
}
292284

293285
void after() {
294-
RL_ASSERT(consumed_count.load() == TOTAL_ITEMS);
286+
RL_ASSERT(consumed_count == TOTAL_ITEMS);
295287

296288
// Check that each value appears exactly once
297289
bool seen[TOTAL_ITEMS + 1] = {false}; // values are 1-500, so need 501 elements

0 commit comments

Comments
 (0)