Skip to content

Commit 09054c4

Browse files
committed
Unit tests: make concurrent queue accesses more likely in consumer queue test
1 parent 1af809a commit 09054c4

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

testing/test_int_samples.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,30 @@ TEST_CASE("consumer_queue", "[queue][basic]") {
2424
}
2525

2626
TEST_CASE("consumer_queue_threaded", "[queue][threads]") {
27-
const int size = 10000;
27+
const int size = 100000;
2828
lsl::factory fac(lsl_channel_format_t::cft_int8, 4, 1);
2929
auto sample = fac.new_sample(0.0, true);
3030
lsl::consumer_queue queue(size);
3131
std::atomic<bool> done{false};
3232

3333
std::thread pusher([&]() {
34-
for (int i = 0; i < size; ++i) queue.push_sample(sample);
35-
INFO(queue.read_available());
34+
for (unsigned int i = 0; i < size; ++i) queue.push_sample(sample);
3635
done = true;
3736
});
3837

39-
unsigned int n = 0, total = 0;
38+
unsigned flushes = 0, pulled = 0;
4039
// Pull samples until the pusher is done and the queue is empty
41-
while ((n = queue.flush()) != 0 || !done) total += n;
42-
CHECK(total == size);
40+
while (true) {
41+
unsigned int n = queue.flush();
42+
if (n) {
43+
flushes++;
44+
pulled += n;
45+
} else {
46+
if(done && queue.read_available() == 0) break;
47+
std::this_thread::yield();
48+
}
49+
}
50+
INFO(flushes)
51+
CHECK(pulled == size);
4352
pusher.join();
4453
}

0 commit comments

Comments
 (0)