1515 * limitations under the License.
1616 */
1717#include < iostream>
18- #include < cassert>
1918#include < thread>
2019#include < chrono>
2120#include < cstring>
2221
2322#include " nixl.h"
23+ #include " test_utils.h"
24+
2425
2526// Change these values to match your etcd setup
2627const std::string ETCD_ENDPOINT = " http://localhost:2379" ;
@@ -130,7 +131,7 @@ int main() {
130131 std::vector<nixl_backend_t > plugins;
131132
132133 ret1 = A1.getAvailPlugins (plugins);
133- assert (ret1 == NIXL_SUCCESS );
134+ nixl_exit_on_failure (ret1, " Failed to get available plugins " , AGENT1_NAME );
134135
135136 std::cout << " Available plugins:\n " ;
136137
@@ -140,8 +141,8 @@ int main() {
140141 ret1 = A1.getPluginParams (" UCX" , mems1, init1);
141142 ret2 = A2.getPluginParams (" UCX" , mems2, init2);
142143
143- assert (ret1 == NIXL_SUCCESS );
144- assert (ret2 == NIXL_SUCCESS );
144+ nixl_exit_on_failure (ret1, " Failed to get plugin params for UCX " , AGENT1_NAME );
145+ nixl_exit_on_failure (ret2, " Failed to get plugin params for UCX " , AGENT2_NAME );
145146
146147 std::cout << " Params before init:\n " ;
147148 printParams (init1, mems1);
@@ -151,25 +152,25 @@ int main() {
151152 nixlBackendH* ucx1, *ucx2;
152153 ret1 = A1.createBackend (" UCX" , init1, ucx1);
153154 ret2 = A2.createBackend (" UCX" , init2, ucx2);
154-
155- assert (ret1 == NIXL_SUCCESS);
156- assert (ret2 == NIXL_SUCCESS);
155+ nixl_exit_on_failure (ret1, " Failed to create UCX backend" , AGENT1_NAME);
156+ nixl_exit_on_failure (ret2, " Failed to create UCX backend" , AGENT2_NAME);
157157
158158 ret1 = A1.getBackendParams (ucx1, mems1, init1);
159159 ret2 = A2.getBackendParams (ucx2, mems2, init2);
160160
161- assert (ret1 == NIXL_SUCCESS);
162- assert (ret2 == NIXL_SUCCESS);
161+ nixl_exit_on_failure (ret1, " Failed to get UCX backend params" , AGENT1_NAME);
162+ nixl_exit_on_failure (ret2, " Failed to get UCX backend params" , AGENT2_NAME);
163+
163164
164165 std::cout << " Params after init:\n " ;
165166 printParams (init1, mems1);
166167 printParams (init2, mems2);
167168
168169 // Register memory with both agents
169170 status = registerMemory (&addr1, &A1, &dlist1, &extra_params1, ucx1, 0xaa );
170- assert (status == NIXL_SUCCESS );
171+ nixl_exit_on_failure (status, " Failed to register memory " , AGENT1_NAME );
171172 status = registerMemory (&addr2, &A2, &dlist2, &extra_params2, ucx2, 0xbb );
172- assert (status == NIXL_SUCCESS );
173+ nixl_exit_on_failure (status, " Failed to register memory " , AGENT2_NAME );
173174
174175 std::cout << " \n Etcd Metadata Exchange Demo\n " ;
175176 std::cout << " ==========================\n " ;
@@ -179,10 +180,10 @@ int main() {
179180
180181 // Both agents send their metadata to etcd
181182 status = A1.sendLocalMD ();
182- assert (status == NIXL_SUCCESS );
183+ nixl_exit_on_failure (status, " Failed to send local MD " , AGENT1_NAME );
183184
184185 status = A2.sendLocalMD ();
185- assert (status == NIXL_SUCCESS );
186+ nixl_exit_on_failure (status, " Failed to send local MD " , AGENT2_NAME );
186187
187188 // Give etcd time to process
188189 std::this_thread::sleep_for (std::chrono::seconds (1 ));
@@ -192,11 +193,11 @@ int main() {
192193
193194 // Agent1 fetches metadata for Agent2
194195 status = A1.fetchRemoteMD (AGENT2_NAME);
195- assert (status == NIXL_SUCCESS );
196+ nixl_exit_on_failure (status, " Failed to fetch remote MD " , AGENT1_NAME );
196197
197198 // Agent2 fetches metadata for Agent1
198199 status = A2.fetchRemoteMD (AGENT1_NAME);
199- assert (status == NIXL_SUCCESS );
200+ nixl_exit_on_failure (status, " Failed to fetch remote MD " , AGENT2_NAME );
200201
201202 // Do transfer from Agent 1 to Agent 2
202203 size_t req_size = 8 ;
@@ -229,8 +230,10 @@ int main() {
229230 extra_params1.hasNotif = true ;
230231 ret1 = A1.createXferReq (NIXL_WRITE, req_src_descs, req_dst_descs, AGENT2_NAME, req_handle, &extra_params1);
231232 std::cout << " Xfer request created, status: " << nixlEnumStrings::statusStr (ret1) << std::endl;
233+ nixl_exit_on_failure (ret1, " Failed to create Xfer Req" , AGENT1_NAME);
232234
233235 status = A1.postXferReq (req_handle);
236+ nixl_exit_on_failure ((status >= NIXL_SUCCESS), " Failed to post Xfer Req" , AGENT1_NAME);
234237
235238 std::cout << " Transfer was posted\n " ;
236239
@@ -240,20 +243,20 @@ int main() {
240243 while (status != NIXL_SUCCESS || n_notifs == 0 ) {
241244 if (status != NIXL_SUCCESS) status = A1.getXferStatus (req_handle);
242245 if (n_notifs == 0 ) ret2 = A2.getNotifs (notif_map);
243- assert ( status >= 0 );
244- assert (ret2 == NIXL_SUCCESS );
246+ nixl_exit_on_failure (( status >= NIXL_SUCCESS), " Failed to get Xfer status " , AGENT1_NAME );
247+ nixl_exit_on_failure (ret2, " Failed to get notifs " , AGENT2_NAME );
245248 n_notifs = notif_map.size ();
246249 }
247250
248251 std::cout << " Transfer verified\n " ;
249252
250253 ret1 = A1.releaseXferReq (req_handle);
251- assert (ret1 == NIXL_SUCCESS );
254+ nixl_exit_on_failure (ret1, " Failed to release Xfer Req " , AGENT1_NAME );
252255
253256 ret1 = A1.deregisterMem (dlist1, &extra_params1);
254257 ret2 = A2.deregisterMem (dlist2, &extra_params2);
255- assert (ret1 == NIXL_SUCCESS );
256- assert (ret2 == NIXL_SUCCESS );
258+ nixl_exit_on_failure (ret1, " Failed to deregister memory " , AGENT1_NAME );
259+ nixl_exit_on_failure (ret2, " Failed to deregister memory " , AGENT2_NAME );
257260
258261 // 3. Partial Metadata Exchange
259262 std::cout << " \n 3. Sending partial metadata to etcd...\n " ;
@@ -274,36 +277,36 @@ int main() {
274277
275278 // Send partial metadata
276279 status = A1.sendLocalPartialMD (empty_dlist1, &conn_params1);
277- assert (status == NIXL_SUCCESS );
280+ nixl_exit_on_failure (status, " Failed to send local partial MD " , AGENT1_NAME );
278281
279282 status = A2.sendLocalPartialMD (empty_dlist2, &conn_params2);
280- assert (status == NIXL_SUCCESS );
283+ nixl_exit_on_failure (status, " Failed to send local partial MD " , AGENT2_NAME );
281284
282285 // Send once partial with different label
283286 conn_params1.metadataLabel = PARTIAL_LABEL_2;
284287 status = A1.sendLocalPartialMD (empty_dlist1, &conn_params1);
285- assert (status == NIXL_SUCCESS );
288+ nixl_exit_on_failure (status, " Failed to send local partial MD " , AGENT1_NAME );
286289
287290 conn_params2.metadataLabel = PARTIAL_LABEL_2;
288291 status = A2.sendLocalPartialMD (empty_dlist2, &conn_params2);
289- assert (status == NIXL_SUCCESS );
292+ nixl_exit_on_failure (status, " Failed to send local partial MD " , AGENT2_NAME );
290293
291294 nixl_opt_args_t fetch_params;
292295 fetch_params.metadataLabel = PARTIAL_LABEL_1;
293296 status = A1.fetchRemoteMD (AGENT2_NAME, &fetch_params);
294- assert (status == NIXL_SUCCESS );
297+ nixl_exit_on_failure (status, " Failed to fetch remote MD " , AGENT1_NAME );
295298
296299 status = A2.fetchRemoteMD (AGENT1_NAME, &fetch_params);
297- assert (status == NIXL_SUCCESS );
300+ nixl_exit_on_failure (status, " Failed to fetch remote MD " , AGENT2_NAME );
298301
299302 std::this_thread::sleep_for (std::chrono::seconds (1 ));
300303
301304 // 4. Invalidate Metadata
302305 std::cout << " \n 4. Invalidating metadata in etcd...\n " ;
303306
304- // Invalidate agent1 's metadata
307+ // Invalidate AGENT1_NAME 's metadata
305308 status = A1.invalidateLocalMD ();
306- assert (status == NIXL_SUCCESS );
309+ nixl_exit_on_failure (status, " Failed to invalidate local MD " , AGENT1_NAME );
307310
308311 std::this_thread::sleep_for (std::chrono::seconds (1 ));
309312
@@ -316,14 +319,14 @@ int main() {
316319 // Try invalidating again, this should log a debug message
317320 std::cout << " Trying to invalidate again...\n " ;
318321 status = A1.invalidateLocalMD ();
319- assert (status == NIXL_SUCCESS );
322+ nixl_exit_on_failure (status, " Failed to invalidate local MD " , AGENT1_NAME );
320323
321324 std::this_thread::sleep_for (std::chrono::seconds (1 ));
322325
323326 // 5. Fetch metadata with invalid label. This should not block forever and print error message.
324327 std::cout << " \n 5. Fetching metadata with invalid label...\n " ;
325328 status = A2.fetchRemoteMD (" INVALID_AGENT" , &fetch_params);
326- assert (status == NIXL_SUCCESS );
329+ nixl_exit_on_failure (status, " Failed to fetch remote MD " , AGENT2_NAME );
327330
328331 std::this_thread::sleep_for (std::chrono::seconds (1 ));
329332
0 commit comments