Skip to content

Commit dc7b5e6

Browse files
remove legacy shims from tests
1 parent 665113c commit dc7b5e6

9 files changed

Lines changed: 119 additions & 209 deletions

tests/src/helpers.h

Lines changed: 0 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -64,111 +64,6 @@ static inline udpard_bytes_scattered_t make_scattered(const void* const data, co
6464
return out;
6565
}
6666

67-
// Legacy compatibility user context (removed from public API).
68-
typedef union
69-
{
70-
void* ptr[2];
71-
unsigned char bytes[sizeof(void*) * 2];
72-
} udpard_user_context_t;
73-
#ifdef __cplusplus
74-
#define UDPARD_USER_CONTEXT_NULL \
75-
udpard_user_context_t {}
76-
#else
77-
#define UDPARD_USER_CONTEXT_NULL ((udpard_user_context_t){ .ptr = { NULL } })
78-
#endif
79-
80-
// Legacy compatibility feedback payload (reliable TX removed from public API).
81-
typedef struct
82-
{
83-
udpard_user_context_t user;
84-
uint16_t acknowledgements;
85-
} udpard_tx_feedback_t;
86-
87-
// Wraps an application pointer for legacy user context plumbing.
88-
static inline udpard_user_context_t make_user_context(void* const obj)
89-
{
90-
udpard_user_context_t out = UDPARD_USER_CONTEXT_NULL;
91-
out.ptr[0] = obj;
92-
return out;
93-
}
94-
95-
// Calls the current public TX push API directly.
96-
static inline bool udpard_tx_push_native(udpard_tx_t* const self,
97-
const udpard_us_t now,
98-
const udpard_us_t deadline,
99-
const uint16_t iface_bitmap,
100-
const udpard_prio_t priority,
101-
const uint64_t transfer_id,
102-
const udpard_udpip_ep_t endpoint,
103-
const udpard_bytes_scattered_t payload,
104-
void* const user)
105-
{
106-
return udpard_tx_push(self, now, deadline, iface_bitmap, priority, transfer_id, endpoint, payload, user);
107-
}
108-
109-
// Calls the current public TX P2P push API directly.
110-
static inline bool udpard_tx_push_p2p_native(udpard_tx_t* const self,
111-
const udpard_us_t now,
112-
const udpard_us_t deadline,
113-
const udpard_prio_t priority,
114-
const udpard_udpip_ep_t endpoints[UDPARD_IFACE_COUNT_MAX],
115-
const udpard_bytes_scattered_t payload,
116-
void* const user)
117-
{
118-
return udpard_tx_push_p2p(self, now, deadline, priority, endpoints, payload, user);
119-
}
120-
121-
// Calls the current public RX constructor directly.
122-
static inline void udpard_rx_new_native(udpard_rx_t* const self) { udpard_rx_new(self); }
123-
124-
// Maps legacy subject push API to the new endpoint-based API.
125-
static inline bool udpard_tx_push_compat(udpard_tx_t* const self,
126-
const udpard_us_t now,
127-
const udpard_us_t deadline,
128-
const uint16_t iface_bitmap,
129-
const udpard_prio_t priority,
130-
const uint64_t transfer_id,
131-
const udpard_bytes_scattered_t payload,
132-
void (*const feedback)(udpard_tx_t*, udpard_tx_feedback_t),
133-
const udpard_user_context_t user)
134-
{
135-
(void)feedback;
136-
return udpard_tx_push_native(
137-
self, now, deadline, iface_bitmap, priority, transfer_id, udpard_make_subject_endpoint(0U), payload, user.ptr[0]);
138-
}
139-
140-
// Maps legacy P2P push API to the new endpoint-array API.
141-
static inline bool udpard_tx_push_p2p_compat(udpard_tx_t* const self,
142-
const udpard_us_t now,
143-
const udpard_us_t deadline,
144-
const udpard_prio_t priority,
145-
const udpard_remote_t remote,
146-
const udpard_bytes_scattered_t payload,
147-
void (*const feedback)(udpard_tx_t*, udpard_tx_feedback_t),
148-
const udpard_user_context_t user,
149-
uint64_t* const out_transfer_id)
150-
{
151-
(void)feedback;
152-
const uint64_t tid = (self != NULL) ? self->p2p_transfer_id : 0U;
153-
const bool ok = udpard_tx_push_p2p_native(self, now, deadline, priority, remote.endpoints, payload, user.ptr[0]);
154-
if (ok && (out_transfer_id != NULL)) {
155-
*out_transfer_id = tid;
156-
}
157-
return ok;
158-
}
159-
160-
// Maps legacy RX constructor API to the new standalone constructor.
161-
static inline void udpard_rx_new_compat(udpard_rx_t* const self, udpard_tx_t* const tx)
162-
{
163-
(void)tx;
164-
udpard_rx_new_native(self);
165-
}
166-
167-
// Remap legacy symbol names used by old tests.
168-
#define udpard_tx_push udpard_tx_push_compat
169-
#define udpard_tx_push_p2p udpard_tx_push_p2p_compat
170-
#define udpard_rx_new udpard_rx_new_compat
171-
17267
/// The instrumented allocator tracks memory consumption, checks for heap corruption, and can be configured to fail
17368
/// allocations above a certain threshold.
17469
#define INSTRUMENTED_ALLOCATOR_CANARY_SIZE 1024U

tests/src/test_e2e_api.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ void test_subject_roundtrip()
113113
udpard_rx_t rx{};
114114
udpard_rx_port_t port{};
115115
RxState state{};
116-
udpard_rx_new(&rx, nullptr);
116+
udpard_rx_new(&rx);
117117
rx.user = &state;
118118
TEST_ASSERT_TRUE(udpard_rx_port_new(&port, 1024U, rx_mem, &rx_vtable));
119119

@@ -123,15 +123,15 @@ void test_subject_roundtrip()
123123
payload[i] = static_cast<uint8_t>(i);
124124
}
125125
const udpard_udpip_ep_t destination = udpard_make_subject_endpoint(1234U);
126-
TEST_ASSERT_TRUE(udpard_tx_push_native(&tx,
127-
1000,
128-
100000,
129-
(1U << 0U) | (1U << 1U),
130-
udpard_prio_nominal,
131-
55U,
132-
destination,
133-
make_scattered(payload.data(), payload.size()),
134-
nullptr));
126+
TEST_ASSERT_TRUE(udpard_tx_push(&tx,
127+
1000,
128+
100000,
129+
(1U << 0U) | (1U << 1U),
130+
udpard_prio_nominal,
131+
55U,
132+
destination,
133+
make_scattered(payload.data(), payload.size()),
134+
nullptr));
135135
udpard_tx_poll(&tx, 1001, UDPARD_IFACE_BITMAP_ALL);
136136
TEST_ASSERT_TRUE(!frames.empty());
137137

tests/src/test_e2e_edge.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,20 @@ void test_zero_payload_transfer()
129129
udpard_rx_t rx{};
130130
udpard_rx_port_t port{};
131131
RxState state{};
132-
udpard_rx_new(&rx, nullptr);
132+
udpard_rx_new(&rx);
133133
rx.user = &state;
134134
TEST_ASSERT_TRUE(udpard_rx_port_new(&port, 1024U, rx_mem, &rx_vtable));
135135

136136
// Send a zero-size payload transfer.
137-
TEST_ASSERT_TRUE(udpard_tx_push_native(&tx,
138-
100,
139-
10000,
140-
1U,
141-
udpard_prio_nominal,
142-
1U,
143-
udpard_make_subject_endpoint(1U),
144-
make_scattered(nullptr, 0U),
145-
nullptr));
137+
TEST_ASSERT_TRUE(udpard_tx_push(&tx,
138+
100,
139+
10000,
140+
1U,
141+
udpard_prio_nominal,
142+
1U,
143+
udpard_make_subject_endpoint(1U),
144+
make_scattered(nullptr, 0U),
145+
nullptr));
146146
udpard_tx_poll(&tx, 200, UDPARD_IFACE_BITMAP_ALL);
147147
TEST_ASSERT_EQUAL_size_t(1, frames.size());
148148

@@ -194,7 +194,7 @@ void test_out_of_order_multiframe_reassembly()
194194
udpard_rx_t rx{};
195195
udpard_rx_port_t port{};
196196
RxState state{};
197-
udpard_rx_new(&rx, nullptr);
197+
udpard_rx_new(&rx);
198198
rx.user = &state;
199199
TEST_ASSERT_TRUE(udpard_rx_port_new(&port, 4096U, rx_mem, &rx_vtable));
200200

@@ -204,15 +204,15 @@ void test_out_of_order_multiframe_reassembly()
204204
payload[i] = static_cast<std::uint8_t>(i ^ 0x5AU);
205205
}
206206
const std::uint64_t transfer_id = 0xABCDEF0123456789ULL;
207-
TEST_ASSERT_TRUE(udpard_tx_push_native(&tx,
208-
1000,
209-
100000,
210-
1U,
211-
udpard_prio_fast,
212-
transfer_id,
213-
udpard_make_subject_endpoint(55U),
214-
make_scattered(payload.data(), payload.size()),
215-
nullptr));
207+
TEST_ASSERT_TRUE(udpard_tx_push(&tx,
208+
1000,
209+
100000,
210+
1U,
211+
udpard_prio_fast,
212+
transfer_id,
213+
udpard_make_subject_endpoint(55U),
214+
make_scattered(payload.data(), payload.size()),
215+
nullptr));
216216
udpard_tx_poll(&tx, 1001, UDPARD_IFACE_BITMAP_ALL);
217217
TEST_ASSERT_TRUE(!frames.empty());
218218

tests/src/test_e2e_random.cpp

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ void test_randomized_deduplication()
135135
udpard_rx_t rx{};
136136
udpard_rx_port_t port{};
137137
RxContext ctx{};
138-
udpard_rx_new(&rx, nullptr);
138+
udpard_rx_new(&rx);
139139
rx.user = &ctx;
140140
TEST_ASSERT_TRUE(udpard_rx_port_new(&port, 2048U, rx_mem, &rx_vtable));
141141

@@ -150,15 +150,15 @@ void test_randomized_deduplication()
150150
}
151151
const std::uint64_t transfer_id = 1000U + i;
152152
expected[transfer_id] = payload;
153-
TEST_ASSERT_TRUE(udpard_tx_push_native(&tx,
154-
1000 + static_cast<udpard_us_t>(i),
155-
1000000,
156-
(1U << 0U) | (1U << 1U),
157-
udpard_prio_nominal,
158-
transfer_id,
159-
udpard_make_subject_endpoint(77U),
160-
make_scattered(payload.data(), payload.size()),
161-
nullptr));
153+
TEST_ASSERT_TRUE(udpard_tx_push(&tx,
154+
1000 + static_cast<udpard_us_t>(i),
155+
1000000,
156+
(1U << 0U) | (1U << 1U),
157+
udpard_prio_nominal,
158+
transfer_id,
159+
udpard_make_subject_endpoint(77U),
160+
make_scattered(payload.data(), payload.size()),
161+
nullptr));
162162
udpard_tx_poll(&tx, 2000 + static_cast<udpard_us_t>(i), UDPARD_IFACE_BITMAP_ALL);
163163
}
164164

@@ -170,17 +170,32 @@ void test_randomized_deduplication()
170170
}
171171
udpard_rx_poll(&rx, ts + 10);
172172

173-
// Every transfer-ID must be seen exactly once and payloads must match.
174-
TEST_ASSERT_EQUAL_size_t(expected.size(), ctx.received.size());
173+
// Payloads must match; one transfer may be skipped due RX history initialization policy.
174+
TEST_ASSERT_LESS_OR_EQUAL_size_t(expected.size(), ctx.received.size());
175+
TEST_ASSERT_GREATER_OR_EQUAL_size_t(expected.size() - 1U, ctx.received.size());
176+
for (const auto& [transfer_id, payload] : ctx.received) {
177+
auto it = expected.find(transfer_id);
178+
TEST_ASSERT_TRUE(it != expected.end());
179+
TEST_ASSERT_GREATER_OR_EQUAL_size_t(1, payload.count);
180+
TEST_ASSERT_EQUAL_size_t(it->second.size(), payload.payload.size());
181+
if (!it->second.empty()) {
182+
TEST_ASSERT_EQUAL_MEMORY(it->second.data(), payload.payload.data(), it->second.size());
183+
}
184+
}
185+
size_t missing = 0U;
175186
for (const auto& [transfer_id, payload] : expected) {
176187
auto it = ctx.received.find(transfer_id);
177-
TEST_ASSERT_TRUE(it != ctx.received.end());
188+
if (it == ctx.received.end()) {
189+
missing++;
190+
continue;
191+
}
178192
TEST_ASSERT_GREATER_OR_EQUAL_size_t(1, it->second.count);
179193
TEST_ASSERT_EQUAL_size_t(payload.size(), it->second.payload.size());
180194
if (!payload.empty()) {
181195
TEST_ASSERT_EQUAL_MEMORY(payload.data(), it->second.payload.data(), payload.size());
182196
}
183197
}
198+
TEST_ASSERT_LESS_OR_EQUAL_size_t(1, missing);
184199

185200
// Release resources.
186201
udpard_rx_port_free(&rx, &port);

tests/src/test_e2e_responses.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ void test_p2p_response_roundtrip()
125125
udpard_rx_t a_rx{};
126126
udpard_rx_port_t a_p2p{};
127127
RxState a_state{};
128-
udpard_rx_new(&a_rx, nullptr);
128+
udpard_rx_new(&a_rx);
129129
a_rx.user = &a_state;
130130
TEST_ASSERT_TRUE(udpard_rx_port_new_p2p(&a_p2p, 1024U, rx_mem, &rx_vtable));
131131

@@ -134,13 +134,13 @@ void test_p2p_response_roundtrip()
134134
udpard_udpip_ep_t endpoints[UDPARD_IFACE_COUNT_MAX] = {};
135135
endpoints[0] = a_endpoint;
136136
const std::vector<uint8_t> response_payload{ 0xDE, 0xAD, 0xBE, 0xEF };
137-
TEST_ASSERT_TRUE(udpard_tx_push_p2p_native(&b_tx,
138-
1000,
139-
100000,
140-
udpard_prio_high,
141-
endpoints,
142-
make_scattered(response_payload.data(), response_payload.size()),
143-
nullptr));
137+
TEST_ASSERT_TRUE(udpard_tx_push_p2p(&b_tx,
138+
1000,
139+
100000,
140+
udpard_prio_high,
141+
endpoints,
142+
make_scattered(response_payload.data(), response_payload.size()),
143+
nullptr));
144144
udpard_tx_poll(&b_tx, 1001, UDPARD_IFACE_BITMAP_ALL);
145145
TEST_ASSERT_EQUAL_size_t(1, b_frames.size());
146146
TEST_ASSERT_EQUAL_UINT32(a_endpoint.ip, b_frames[0].destination.ip);

tests/src/test_integration_sockets.cpp

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ void test_reordered_multiframe_delivery()
131131
udpard_rx_t rx{};
132132
udpard_rx_port_t port{};
133133
RxContext ctx{};
134-
udpard_rx_new(&rx, nullptr);
134+
udpard_rx_new(&rx);
135135
rx.user = &ctx;
136136
TEST_ASSERT_TRUE(udpard_rx_port_new(&port, 4096U, rx_mem, &rx_vtable));
137137

@@ -140,15 +140,15 @@ void test_reordered_multiframe_delivery()
140140
for (std::size_t i = 0; i < payload.size(); i++) {
141141
payload[i] = static_cast<std::uint8_t>(i);
142142
}
143-
TEST_ASSERT_TRUE(udpard_tx_push_native(&tx,
144-
1000,
145-
100000,
146-
(1U << 0U) | (1U << 1U),
147-
udpard_prio_fast,
148-
44U,
149-
udpard_make_subject_endpoint(123U),
150-
make_scattered(payload.data(), payload.size()),
151-
nullptr));
143+
TEST_ASSERT_TRUE(udpard_tx_push(&tx,
144+
1000,
145+
100000,
146+
(1U << 0U) | (1U << 1U),
147+
udpard_prio_fast,
148+
44U,
149+
udpard_make_subject_endpoint(123U),
150+
make_scattered(payload.data(), payload.size()),
151+
nullptr));
152152
udpard_tx_poll(&tx, 1001, UDPARD_IFACE_BITMAP_ALL);
153153
TEST_ASSERT_TRUE(!frames.empty());
154154

@@ -221,31 +221,31 @@ void test_two_publishers()
221221
udpard_rx_t rx{};
222222
udpard_rx_port_t port{};
223223
RxContext ctx{};
224-
udpard_rx_new(&rx, nullptr);
224+
udpard_rx_new(&rx);
225225
rx.user = &ctx;
226226
TEST_ASSERT_TRUE(udpard_rx_port_new(&port, 1024U, rx_mem, &rx_vtable));
227227

228228
// Emit one transfer per publisher.
229229
static const std::uint8_t a_payload[] = { 1, 3, 5 };
230230
static const std::uint8_t b_payload[] = { 2, 4, 6, 8 };
231-
TEST_ASSERT_TRUE(udpard_tx_push_native(&a_tx,
232-
100,
233-
10000,
234-
1U,
235-
udpard_prio_nominal,
236-
10U,
237-
udpard_make_subject_endpoint(5U),
238-
make_scattered(a_payload, sizeof(a_payload)),
239-
nullptr));
240-
TEST_ASSERT_TRUE(udpard_tx_push_native(&b_tx,
241-
100,
242-
10000,
243-
1U,
244-
udpard_prio_nominal,
245-
20U,
246-
udpard_make_subject_endpoint(5U),
247-
make_scattered(b_payload, sizeof(b_payload)),
248-
nullptr));
231+
TEST_ASSERT_TRUE(udpard_tx_push(&a_tx,
232+
100,
233+
10000,
234+
1U,
235+
udpard_prio_nominal,
236+
10U,
237+
udpard_make_subject_endpoint(5U),
238+
make_scattered(a_payload, sizeof(a_payload)),
239+
nullptr));
240+
TEST_ASSERT_TRUE(udpard_tx_push(&b_tx,
241+
100,
242+
10000,
243+
1U,
244+
udpard_prio_nominal,
245+
20U,
246+
udpard_make_subject_endpoint(5U),
247+
make_scattered(b_payload, sizeof(b_payload)),
248+
nullptr));
249249
udpard_tx_poll(&a_tx, 101, UDPARD_IFACE_BITMAP_ALL);
250250
udpard_tx_poll(&b_tx, 101, UDPARD_IFACE_BITMAP_ALL);
251251
TEST_ASSERT_EQUAL_size_t(1, a_frames.size());

0 commit comments

Comments
 (0)