test(zmq): add SIMD sample validation

Add `TxRxSamplesSIMD` to validate the correctness of the new ZMQ
device transmit and receive paths with int16 complex samples.

Signed-off-by: Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
This commit is contained in:
Bartosz Podrygajlo
2026-07-09 08:38:58 +02:00
parent 1ec719bd44
commit 8bed33d44e

View File

@@ -153,6 +153,48 @@ TEST_F(ZMQTest, TxRxSamples)
t2.join();
}
TEST_F(ZMQTest, TxRxSamplesSIMD)
{
const int size = 100;
std::thread t1([this, size]() {
c16_t rx_samples[size];
openair0_timestamp_t rx_timestamp;
void *samples[1] = {rx_samples};
ASSERT_EQ(device1.trx_read_func(&device1, &rx_timestamp, samples, size, 1), size);
for (int i = 0; i < size; i++) {
ASSERT_EQ(rx_samples[i].r, 0);
ASSERT_EQ(rx_samples[i].i, 0);
}
c16_t tx_samples[size];
openair0_timestamp_t tx_timestamp = rx_timestamp + size;
for (int i = 0; i < size; i++) {
tx_samples[i].r = (int16_t)i;
tx_samples[i].i = (int16_t)(i + 1);
}
samples[0] = tx_samples;
ASSERT_EQ(device1.trx_write_func(&device1, tx_timestamp, samples, size, 1, 0), size);
});
std::thread t2([this, size]() {
c16_t rx_samples[size];
openair0_timestamp_t rx_timestamp;
void *samples[1] = {rx_samples};
ASSERT_EQ(device2.trx_read_func(&device2, &rx_timestamp, samples, size, 1), size);
for (int i = 0; i < size; i++) {
ASSERT_EQ(rx_samples[i].r, 0);
ASSERT_EQ(rx_samples[i].i, 0);
}
openair0_timestamp_t rx_timestamp2;
ASSERT_EQ(device2.trx_read_func(&device2, &rx_timestamp2, samples, size, 1), size);
for (int i = 0; i < size; i++) {
ASSERT_EQ(rx_samples[i].r, (int16_t)i);
ASSERT_EQ(rx_samples[i].i, (int16_t)(i + 1));
}
ASSERT_EQ(rx_timestamp + size, rx_timestamp2);
});
t1.join();
t2.join();
}
TEST_F(ZMQTest, BenchmarkThroughput)
{
int level = g_log->log_component[HW].level;