This source file includes following definitions.
- main
- test1
- test2
- test3
- test4
- test5
- test6
- test7
- test8
- test9
- test10
- test11
- test12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include "opal_config.h"
23 #include "opal/constants.h"
24
25
26 #include <stdio.h>
27 #include <string.h>
28 #include <stdlib.h>
29 #ifdef HAVE_SYS_PARAM_H
30 #include <sys/param.h>
31 #endif
32 #include <string.h>
33
34 #include "opal/runtime/opal.h"
35 #include "opal/dss/dss.h"
36 #include "opal/util/printf.h"
37
38 #define NUM_ITERS 100
39 #define NUM_ELEMS 1024
40
41 static bool test1(void);
42 static bool test2(void);
43 static bool test3(void);
44 static bool test4(void);
45 static bool test5(void);
46 static bool test6(void);
47 static bool test7(void);
48 static bool test8(void);
49 static bool test9(void);
50 static bool test10(void);
51 static bool test11(void);
52 static bool test12(void);
53
54 static FILE *test_out;
55
56
57 int main (int argc, char* argv[])
58 {
59 int ret = 0;
60
61 opal_init(&argc, &argv);
62
63 test_out = stderr;
64
65
66
67 fprintf(test_out, "executing test1\n");
68 if (test1()) {
69 fprintf(test_out, "Test1 succeeded\n");
70 } else {
71 fprintf(test_out, "Test1 failed\n");
72 ret = 1;
73 }
74
75 fprintf(test_out, "executing test2\n");
76 if (test2()) {
77 fprintf(test_out, "Test2 succeeded\n");
78 } else {
79 fprintf(test_out, "Test2 failed\n");
80 ret = 2;
81 }
82
83 fprintf(test_out, "executing test3\n");
84 if (test3()) {
85 fprintf(test_out, "Test3 succeeded\n");
86 } else {
87 fprintf(test_out, "Test3 failed\n");
88 ret = 3;
89 }
90
91 fprintf(test_out, "executing test4\n");
92 if (test4()) {
93 fprintf(test_out, "Test4 succeeded\n");
94 } else {
95 fprintf(test_out, "Test4 failed\n");
96 ret = 4;
97 }
98
99 fprintf(test_out, "executing test5\n");
100 if (test5()) {
101 fprintf(test_out, "Test5 succeeded\n");
102 } else {
103 fprintf(test_out, "Test5 failed\n");
104 ret = 5;
105 }
106
107 fprintf(test_out, "executing test6\n");
108 if (test6()) {
109 fprintf(test_out, "Test6 succeeded\n");
110 } else {
111 fprintf(test_out, "Test6 failed\n");
112 ret = 6;
113 }
114
115 fprintf(test_out, "executing test7\n");
116 if (test7()) {
117 fprintf(test_out, "Test7 succeeded\n");
118 } else {
119 fprintf(test_out, "Test7 failed\n");
120 ret = 7;
121 }
122
123 fprintf(test_out, "executing test8\n");
124 if (test8()) {
125 fprintf(test_out, "Test8 succeeded\n");
126 } else {
127 fprintf(test_out, "Test8 failed\n");
128 ret = 8;
129 }
130
131 fprintf(test_out, "executing test9\n");
132 if (test9()) {
133 fprintf(test_out, "Test9 succeeded\n");
134 } else {
135 fprintf(test_out, "opal_dss test9 failed\n");
136 ret = 9;
137 }
138
139 fprintf(test_out, "executing test10\n");
140 if (test10()) {
141 fprintf(test_out, "Test10 succeeded\n");
142 } else {
143 fprintf(test_out, "opal_dss test10 failed\n");
144 ret = 10;
145 }
146
147 fprintf(test_out, "executing test11\n");
148 if (test11()) {
149 fprintf(test_out, "Test11 succeeded\n");
150 } else {
151 fprintf(test_out, "opal_dss test11 failed\n");
152 ret = 11;
153 }
154
155 fprintf(test_out, "executing test12\n");
156 if (test12()) {
157 fprintf(test_out, "Test12 succeeded\n");
158 } else {
159 fprintf(test_out, "opal_dss test12 failed\n");
160 ret = 12;
161 }
162
163 fclose(test_out);
164
165 opal_finalize();
166
167 return ret;
168 }
169
170 static bool test1(void)
171 {
172 opal_buffer_t *bufA;
173
174 bufA = OBJ_NEW(opal_buffer_t);
175 if (NULL == bufA) {
176 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
177 return false;
178 }
179
180 OBJ_RELEASE(bufA);
181 if (NULL != bufA) {
182 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
183 return false;
184 }
185 return (true);
186 }
187
188
189
190
191 static bool test2(void)
192 {
193 opal_buffer_t *bufA;
194 int rc;
195 int32_t i;
196 int16_t src[NUM_ELEMS];
197 int16_t dst[NUM_ELEMS];
198
199 for(i=0; i<NUM_ELEMS; i++)
200 src[i] = i;
201
202 bufA = OBJ_NEW(opal_buffer_t);
203 if (NULL == bufA) {
204 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
205 return false;
206 }
207
208 bufA->type = OPAL_DSS_BUFFER_NON_DESC;
209
210 for (i=0;i<NUM_ITERS;i++) {
211 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_INT16);
212 if (OPAL_SUCCESS != rc) {
213 fprintf(test_out, "opal_dss.pack failed with return code %d\n", rc);
214 return(false);
215 }
216 }
217
218 for (i=0; i<NUM_ITERS; i++) {
219 int j;
220 int32_t count;
221
222 for(j=0; j<NUM_ELEMS; j++)
223 dst[j] = -1;
224
225 count = NUM_ELEMS;
226 rc = opal_dss.unpack(bufA, dst, &count, OPAL_INT16);
227 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
228 fprintf(test_out, "opal_dss.unpack failed with return code %d\n", rc);
229 return(false);
230 }
231
232 for(j=0; j<NUM_ELEMS; j++) {
233 if(src[j] != dst[j]) {
234 fprintf(test_out, "test2: invalid results from unpack\n");
235 return(false);
236 }
237 }
238 }
239
240 OBJ_RELEASE(bufA);
241 if (NULL != bufA) {
242 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
243 return false;
244 }
245
246 return (true);
247 }
248
249
250
251
252 static bool test3(void)
253 {
254 opal_buffer_t *bufA;
255 int rc;
256 int32_t i;
257 int src[NUM_ELEMS];
258 int dst[NUM_ELEMS];
259
260 for(i=0; i<NUM_ELEMS; i++)
261 src[i] = i;
262
263 bufA = OBJ_NEW(opal_buffer_t);
264 if (NULL == bufA) {
265 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
266 return false;
267 }
268
269 for (i=0;i<NUM_ITERS;i++) {
270 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_INT);
271 if (OPAL_SUCCESS != rc) {
272 fprintf(test_out, "opal_dss.pack failed with return code %d\n", rc);
273 return(false);
274 }
275 }
276
277 for (i=0; i<NUM_ITERS; i++) {
278 int j;
279 int32_t count;
280
281 for(j=0; j<NUM_ELEMS; j++)
282 dst[j] = -1;
283
284 count = NUM_ELEMS;
285 rc = opal_dss.unpack(bufA, dst, &count, OPAL_INT);
286 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
287 fprintf(test_out, "opal_dss.unpack failed with return code %d\n", rc);
288 return(false);
289 }
290
291 for(j=0; j<NUM_ELEMS; j++) {
292 if(src[j] != dst[j]) {
293 fprintf(test_out, "test2: invalid results from unpack\n");
294 return(false);
295 }
296 }
297 }
298
299 OBJ_RELEASE(bufA);
300 if (NULL != bufA) {
301 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
302 return false;
303 }
304
305 return (true);
306 }
307
308
309
310
311 static bool test4(void)
312 {
313 opal_buffer_t *bufA;
314 int rc;
315 int32_t i;
316 int32_t src[NUM_ELEMS];
317 int32_t dst[NUM_ELEMS];
318
319 for(i=0; i<NUM_ELEMS; i++)
320 src[i] = i;
321
322 bufA = OBJ_NEW(opal_buffer_t);
323 if (NULL == bufA) {
324 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
325 return false;
326 }
327
328 for (i=0;i<NUM_ITERS;i++) {
329 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_INT32);
330 if (OPAL_SUCCESS != rc) {
331 fprintf(test_out, "opal_dss.pack failed with return code %d\n", rc);
332 return(false);
333 }
334 }
335
336 for (i=0; i<NUM_ITERS; i++) {
337 int j;
338 int32_t count = NUM_ELEMS;
339
340 for(j=0; j<NUM_ELEMS; j++)
341 dst[j] = -1;
342
343 rc = opal_dss.unpack(bufA, dst, &count, OPAL_INT32);
344 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
345 fprintf(test_out, "opal_dss.unpack failed with return code %d\n", rc);
346 return(false);
347 }
348
349 for(j=0; j<NUM_ELEMS; j++) {
350 if(src[j] != dst[j]) {
351 fprintf(test_out, "test2: invalid results from unpack\n");
352 return(false);
353 }
354 }
355 }
356
357 OBJ_RELEASE(bufA);
358 if (NULL != bufA) {
359 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
360 return false;
361 }
362
363 return (true);
364 }
365
366
367
368
369 static bool test5(void)
370 {
371 opal_buffer_t *bufA;
372 int rc;
373 int32_t i;
374 int64_t src[NUM_ELEMS];
375 int64_t dst[NUM_ELEMS];
376
377 for(i=0; i<NUM_ELEMS; i++)
378 src[i] = 1000*i;
379
380 bufA = OBJ_NEW(opal_buffer_t);
381 if (NULL == bufA) {
382 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
383 return false;
384 }
385
386 for (i=0;i<NUM_ITERS;i++) {
387 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_INT64);
388 if (OPAL_SUCCESS != rc) {
389 fprintf(test_out, "opal_dss.pack int64 failed with return code %d\n", rc);
390 return(false);
391 }
392 }
393
394 for (i=0; i<NUM_ITERS; i++) {
395 int j;
396 int32_t count = NUM_ELEMS;
397
398 for(j=0; j<NUM_ELEMS; j++)
399 dst[j] = -1;
400
401 rc = opal_dss.unpack(bufA, dst, &count, OPAL_INT64);
402 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
403 fprintf(test_out, "opal_dss.unpack int64 failed with return code %d\n", rc);
404 return(false);
405 }
406
407 for(j=0; j<NUM_ELEMS; j++) {
408 if(src[j] != dst[j]) {
409 fprintf(test_out, "test2: invalid results from unpack int64\n");
410 return(false);
411 }
412 }
413 }
414
415 OBJ_RELEASE(bufA);
416 if (NULL != bufA) {
417 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
418 return false;
419 }
420
421 return (true);
422 }
423
424
425
426
427
428 static bool test6(void)
429 {
430 opal_buffer_t *bufA;
431 int rc;
432 int32_t i;
433 char* src[NUM_ELEMS];
434 char* dst[NUM_ELEMS];
435
436 for(i=0; i<NUM_ELEMS; i++) {
437 opal_asprintf(&src[i], "%d", i);
438 }
439
440 bufA = OBJ_NEW(opal_buffer_t);
441 if (NULL == bufA) {
442 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
443 return false;
444 }
445
446 for (i=0;i<NUM_ITERS;i++) {
447 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_STRING);
448 if (OPAL_SUCCESS != rc) {
449 fprintf(test_out, "opal_dss.pack failed with return code %d\n", rc);
450 return(false);
451 }
452 }
453
454 for (i=0; i<NUM_ITERS; i++) {
455 int j;
456 int32_t count = NUM_ELEMS;
457
458 for(j=0; j<NUM_ELEMS; j++)
459 dst[j] = NULL;
460
461 rc = opal_dss.unpack(bufA, dst, &count, OPAL_STRING);
462 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
463 fprintf(test_out, "opal_dss.unpack failed with return code %d\n", rc);
464 return(false);
465 }
466
467 for(j=0; j<NUM_ELEMS; j++) {
468 if(strcmp(src[j],dst[j]) != 0) {
469 fprintf(test_out, "test4: invalid results from unpack\n");
470 fprintf(test_out, "item %d src=[%s] len=%d dst=[%s] len=%d\n", j, src[j], (int)strlen(src[j]), dst[j], (int)strlen(dst[j]));
471 return(false);
472 }
473 }
474 }
475
476 OBJ_RELEASE(bufA);
477 if (NULL != bufA) {
478 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
479 return false;
480 }
481
482 return (true);
483 }
484
485
486
487
488
489
490 static bool test7(void)
491 {
492 opal_buffer_t *bufA;
493 int rc;
494 int32_t i;
495 bool src[NUM_ELEMS];
496 bool dst[NUM_ELEMS];
497
498 for(i=0; i<NUM_ELEMS; i++)
499 src[i] = ((i % 2) == 0) ? true : false;
500
501 bufA = OBJ_NEW(opal_buffer_t);
502 if (NULL == bufA) {
503 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
504 return false;
505 }
506
507 for (i=0;i<NUM_ITERS;i++) {
508 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_BOOL);
509 if (OPAL_SUCCESS != rc) {
510 fprintf(test_out, "opal_dss.pack failed with return code %d\n", rc);
511 return(false);
512 }
513 }
514
515 for (i=0; i<NUM_ITERS; i++) {
516 int j;
517 int32_t count = NUM_ELEMS;
518 memset(dst,-1,sizeof(dst));
519
520 rc = opal_dss.unpack(bufA, dst, &count, OPAL_BOOL);
521 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
522 fprintf(test_out, "opal_dss.unpack failed with return code %d\n", rc);
523 return(false);
524 }
525
526 for(j=0; j<NUM_ELEMS; j++) {
527 if(src[j] != dst[j]) {
528 fprintf(test_out, "test6: invalid results from unpack\n");
529 return(false);
530 }
531 }
532 }
533
534 OBJ_RELEASE(bufA);
535 if (NULL != bufA) {
536 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
537 return false;
538 }
539
540 return (true);
541 }
542
543
544
545
546
547 static bool test8(void)
548 {
549
550 opal_buffer_t *bufA;
551 int rc;
552 int32_t i;
553 opal_byte_object_t *src[NUM_ELEMS];
554 opal_byte_object_t *dst[NUM_ELEMS];
555
556 for(i=0; i<NUM_ELEMS; i++) {
557 src[i] = (opal_byte_object_t*)malloc(sizeof(opal_byte_object_t));
558 opal_asprintf((char**)&(src[i]->bytes), "%d", i);
559 src[i]->size = strlen((char*)(src[i]->bytes)) + 1;
560 }
561
562 bufA = OBJ_NEW(opal_buffer_t);
563 if (NULL == bufA) {
564 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
565 return false;
566 }
567
568 for (i=0;i<NUM_ITERS;i++) {
569 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_BYTE_OBJECT);
570 if (OPAL_SUCCESS != rc) {
571 fprintf(test_out, "opal_dss.pack failed with return code %d\n", rc);
572 return(false);
573 }
574 }
575
576 for (i=0; i<NUM_ITERS; i++) {
577 int j;
578 int32_t count = NUM_ELEMS;
579
580 rc = opal_dss.unpack(bufA, dst, &count, OPAL_BYTE_OBJECT);
581 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
582 fprintf(test_out, "opal_dss.unpack failed with return code %d\n", rc);
583 return(false);
584 }
585
586 for(j=0; j<NUM_ELEMS; j++) {
587 if(src[j]->size != dst[j]->size ||
588 memcmp(src[j]->bytes,dst[j]->bytes,src[j]->size) != 0) {
589 fprintf(test_out, "test7: invalid results from unpack\n");
590 fprintf(test_out, "test7: object element %d has incorrect unpacked value\n", j);
591 return(false);
592 }
593 }
594 }
595
596
597 OBJ_RELEASE(bufA);
598 if (NULL != bufA) {
599 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
600 return false;
601 }
602
603 return (true);
604 }
605
606
607
608
609
610 static bool test9(void)
611 {
612
613 opal_buffer_t *bufA;
614 int rc;
615 int32_t i;
616
617
618
619 opal_byte_object_t *srco[NUM_ELEMS];
620 opal_byte_object_t *dsto[NUM_ELEMS];
621 char* srcs[NUM_ELEMS];
622 char* dsts[NUM_ELEMS];
623 bool srcb[NUM_ELEMS];
624 bool dstb[NUM_ELEMS];
625 int32_t src32[NUM_ELEMS];
626 int32_t dst32[NUM_ELEMS];
627 int16_t src16[NUM_ELEMS];
628 int16_t dst16[NUM_ELEMS];
629
630 for(i=0; i<NUM_ELEMS; i++) {
631
632 srco[i] = (opal_byte_object_t*)malloc(sizeof(opal_byte_object_t));
633 opal_asprintf((char**)&(srco[i]->bytes), "%d", i+100);
634 srco[i]->size = strlen((char*)(srco[i]->bytes)) + 1;
635
636
637 opal_asprintf(&srcs[i], "%d", i+200);
638
639
640 srcb[i] = ((i % 2) == 0) ? true : false;
641
642
643 src32[i] = i+300;
644
645
646 src16[i] = i+400;
647 }
648
649 bufA = OBJ_NEW(opal_buffer_t);
650 if (NULL == bufA) {
651 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
652 return false;
653 }
654
655 for (i=0;i<NUM_ITERS;i++) {
656
657 rc = opal_dss.pack(bufA, srco, NUM_ELEMS, OPAL_BYTE_OBJECT);
658 if (OPAL_SUCCESS != rc) {
659 fprintf(test_out, "opal_dss.pack on object failed with return code %d\n", rc);
660 return(false);
661 }
662
663 rc = opal_dss.pack(bufA, srcs, NUM_ELEMS, OPAL_STRING);
664 if (OPAL_SUCCESS != rc) {
665 fprintf(test_out, "opal_dss.pack on string failed with return code %d\n", rc);
666 return(false);
667 }
668
669 rc = opal_dss.pack(bufA, srcb, NUM_ELEMS, OPAL_BOOL);
670 if (OPAL_SUCCESS != rc) {
671 fprintf(test_out, "opal_dss.pack on bool failed with return code %d\n", rc);
672 return(false);
673 }
674
675 rc = opal_dss.pack(bufA, src32, NUM_ELEMS, OPAL_INT32);
676 if (OPAL_SUCCESS != rc) {
677 fprintf(test_out, "opal_dss.pack on INT32 failed with return code %d\n", rc);
678 return(false);
679 }
680
681 rc = opal_dss.pack(bufA, src16, NUM_ELEMS, OPAL_INT16);
682 if (OPAL_SUCCESS != rc) {
683 fprintf(test_out, "opal_dss.pack on INT16 failed with return code %d\n", rc);
684 return(false);
685 }
686 }
687
688
689
690 for (i=0; i<NUM_ITERS; i++) {
691 int j;
692 int32_t count;
693
694
695 for(j=0; j<NUM_ELEMS; j++) dsts[j] = NULL;
696
697 memset(dstb,-1,sizeof(dstb));
698
699 for(j=0; j<NUM_ELEMS; j++) dst32[j] = -1;
700
701 for(j=0; j<NUM_ELEMS; j++) dst16[j] = -1;
702
703
704
705 count=NUM_ELEMS;
706 rc = opal_dss.unpack(bufA, dsto, &count, OPAL_BYTE_OBJECT);
707 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
708 fprintf(test_out, "opal_dss.unpack on object failed with return code %d\n", rc);
709 return(false);
710 }
711
712 for(j=0; j<NUM_ELEMS; j++) {
713 if(srco[j]->size != dsto[j]->size ||
714 memcmp(srco[j]->bytes,dsto[j]->bytes,srco[j]->size) != 0) {
715 fprintf(test_out, "test8: object element %d has incorrect unpacked value\n", j);
716 return(false);
717 }
718 }
719
720
721 count = NUM_ELEMS;
722 rc = opal_dss.unpack(bufA, dsts, &count, OPAL_STRING);
723 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
724 fprintf(test_out, "opal_dss.unpack on string failed with return code %d\n", rc);
725 return(false);
726 }
727
728 for(j=0; j<NUM_ELEMS; j++) {
729 if(strcmp(srcs[j],dsts[j]) != 0) {
730 fprintf(test_out, "test8: invalid results from unpack\n");
731 fprintf(test_out, "item %d src=[%s] len=%d dst=[%s] len=%d\n", j, srcs[j], (int)strlen(srcs[j]), dsts[j], (int)strlen(dsts[j]));
732 return(false);
733 }
734 }
735
736
737 count = NUM_ELEMS;
738 rc = opal_dss.unpack(bufA, dstb, &count, OPAL_BOOL);
739 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
740 fprintf(test_out, "opal_dss.unpack on bool failed with return code %d\n", rc);
741 return(false);
742 }
743
744 for(j=0; j<NUM_ELEMS; j++) {
745 if(srcb[j] != dstb[j]) {
746 fprintf(test_out, "test8: invalid results from unpack\n");
747 return(false);
748 }
749 }
750
751
752 count = NUM_ELEMS;
753 rc = opal_dss.unpack(bufA, dst32, &count, OPAL_INT32);
754 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
755 fprintf(test_out, "opal_dss.unpack on int32 failed with return code %d\n", rc);
756 return(false);
757 }
758
759 for(j=0; j<NUM_ELEMS; j++) {
760 if(src32[j] != dst32[j]) {
761 fprintf(test_out, "test8: invalid results from unpack\n");
762 return(false);
763 }
764 }
765
766
767 count = NUM_ELEMS;
768 rc = opal_dss.unpack(bufA, dst16, &count, OPAL_INT16);
769 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
770 fprintf(test_out, "opal_dss.unpack on int16 failed with return code %d\n", rc);
771 return(false);
772 }
773
774 for(j=0; j<NUM_ELEMS; j++) {
775 if(src16[j] != dst16[j]) {
776 fprintf(test_out, "test8: invalid results from unpack\n");
777 return(false);
778 }
779 }
780
781
782 }
783
784 OBJ_RELEASE(bufA);
785 if (NULL != bufA) {
786 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
787 return false;
788 }
789
790 return (true);
791 }
792
793
794 static bool test10(void)
795 {
796 opal_buffer_t *bufA;
797 int rc;
798 int i;
799 int16_t i16[NUM_ELEMS];
800 opal_value_t *src[NUM_ELEMS];
801 opal_value_t *dst[NUM_ELEMS];
802
803
804 for(i=0; i<NUM_ELEMS; i++) {
805 i16[i] = (int16_t)i;
806 src[i] = OBJ_NEW(opal_value_t);
807 src[i]->type = ((i % 2) == 0) ? OPAL_INT16 : OPAL_STRING;
808 if (OPAL_INT16 == src[i]->type)
809 src[i]->data.uint16 = i16[i];
810 else
811 src[i]->data.string = strdup("truly-a-dumb-test");
812 }
813
814 bufA = OBJ_NEW(opal_buffer_t);
815 if (NULL == bufA) {
816 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
817 return false;
818 }
819
820 for (i=0;i<NUM_ITERS;i++) {
821 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_VALUE);
822 if (OPAL_SUCCESS != rc) {
823 fprintf(test_out, "opal_dss.pack failed with error code %d\n", rc);
824 return(false);
825 }
826 }
827
828 for (i=0; i<NUM_ITERS; i++) {
829 int j;
830 int32_t count = NUM_ELEMS;
831 memset(dst,-1,sizeof(dst));
832
833 rc = opal_dss.unpack(bufA, dst, &count, OPAL_VALUE);
834 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
835 fprintf(test_out,
836 "opal_dss.unpack (DATA_VALUE) failed on iteration %d with error code %d\n",
837 i, rc);
838 return(false);
839 }
840
841 for(j=0; j<NUM_ELEMS; j++) {
842 if (src[j]->type != dst[j]->type) {
843 fprintf(test_out, "opal_dss.unpack (DATA_VALUE) invalid results type mismatch from unpack\n");
844 return(false);
845 }
846 if (0 != opal_dss.compare(src[j], dst[j], src[j]->type)) {
847 fprintf(test_out, "opal_dss.unpack (DATA_VALUE) invalid results value mismatch from unpack");
848 return(false);
849 }
850 }
851 }
852
853 OBJ_RELEASE(bufA);
854 if (NULL != bufA) {
855 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
856 return false;
857 }
858
859 return (true);
860 }
861
862
863
864 static bool test11(void)
865 {
866 opal_buffer_t *bufA;
867 int rc;
868 int32_t i;
869 int32_t src[NUM_ELEMS];
870 int32_t dst[NUM_ELEMS];
871
872 for(i=0; i<NUM_ELEMS; i++)
873 src[i] = 1000*i;
874
875 bufA = OBJ_NEW(opal_buffer_t);
876 if (NULL == bufA) {
877 fprintf(test_out, "orte_buffer failed init in OBJ_NEW\n");
878 fprintf(test_out, "OBJ_NEW failed\n");
879 return false;
880 }
881
882 for (i=0;i<NUM_ITERS;i++) {
883 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_INT32);
884 if (OPAL_SUCCESS != rc) {
885 fprintf(test_out, "opal_dss.pack int32_t failed");
886 fprintf(test_out, "orte_pack_int32_t failed with return code %d\n", rc);
887 return(false);
888 }
889 }
890
891 for (i=0; i<NUM_ITERS; i++) {
892 int32_t j;
893 int32_t count;
894
895 count = NUM_ELEMS;
896 rc = opal_dss.unpack(bufA, dst, &count, OPAL_INT32);
897 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
898 fprintf(test_out, "opal_dss.unpack int32_t failed");
899 fprintf(test_out, "orte_unpack_int32_t failed with return code %d\n", rc);
900 return(false);
901 }
902
903 for(j=0; j<NUM_ELEMS; j++) {
904 if(src[j] != dst[j]) {
905 fprintf(test_out, "test11: invalid results from unpack int32_t");
906 return(false);
907 }
908 }
909 }
910
911 OBJ_RELEASE(bufA);
912 if (NULL != bufA) {
913 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer");
914 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer");
915 return false;
916 }
917
918 return (true);
919 }
920
921
922
923
924
925 static bool test12(void)
926 {
927 opal_buffer_t *bufA;
928 int rc;
929 int32_t i;
930 pid_t src[NUM_ELEMS];
931 pid_t dst[NUM_ELEMS];
932
933 for(i=0; i<NUM_ELEMS; i++)
934 src[i] = (pid_t)i;
935
936 bufA = OBJ_NEW(opal_buffer_t);
937 if (NULL == bufA) {
938 fprintf(test_out, "orte_buffer failed init in OBJ_NEW");
939 fprintf(test_out, "OBJ_NEW failed\n");
940 return false;
941 }
942
943 for (i=0;i<NUM_ITERS;i++) {
944 rc = opal_dss.pack(bufA, src, NUM_ELEMS, OPAL_PID);
945 if (OPAL_SUCCESS != rc) {
946 fprintf(test_out, "opal_dss.pack failed");
947 fprintf(test_out, "orte_pack pid_t failed with return code %d\n", rc);
948 return(false);
949 }
950 }
951
952 for (i=0; i<NUM_ITERS; i++) {
953 int32_t j;
954 int32_t count;
955
956 count = NUM_ELEMS;
957 rc = opal_dss.unpack(bufA, dst, &count, OPAL_PID);
958 if (OPAL_SUCCESS != rc || count != NUM_ELEMS) {
959 fprintf(test_out, "opal_dss.unpack failed");
960 fprintf(test_out, "orte_pack pid_t failed with return code %d\n", rc);
961 return(false);
962 }
963
964 for(j=0; j<NUM_ELEMS; j++) {
965 if(src[j] != dst[j]) {
966 fprintf(test_out, "test2: invalid results from unpack");
967 return(false);
968 }
969 }
970 }
971
972 OBJ_RELEASE(bufA);
973 if (NULL != bufA) {
974 fprintf(test_out, "OBJ_RELEASE did not NULL the buffer pointer\n");
975 return false;
976 }
977
978 return (true);
979 }