mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user