0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #include <string.h>
0035 #include <stdio.h>
0036 #include <stdlib.h>
0037 #include <memory.h>
0038 #include <math.h>
0039
0040 #include <atmi.h>
0041 #include <ubf.h>
0042 #include <ndebug.h>
0043 #include <test.fd.h>
0044 #include <ndrstandard.h>
0045 #include <nstopwatch.h>
0046 #include <fcntl.h>
0047 #include <unistd.h>
0048 #include <nstdutil.h>
0049 #include "test41.h"
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062 int main(int argc, char** argv) {
0063
0064 UBFH *p_ub = (UBFH *)tpalloc("UBF", NULL, TEST_MSGSIZE+1024);
0065 long rsplen;
0066 int i, j;
0067 int ret=EXSUCCEED;
0068 char *bufferreq;
0069 BFLDLEN retlen;
0070
0071 bufferreq = NDRX_MALLOC(TEST_MSGSIZE);
0072
0073 if (NULL==bufferreq)
0074 {
0075 NDRX_LOG(log_error, "Failed to malloc: %s", strerror(errno));
0076 EXFAIL_OUT(ret);
0077 }
0078
0079 for (j=0; j<2000; j++)
0080 {
0081 for (i=0; i<TEST_MSGSIZE; i++)
0082 {
0083 char c = (char) ((i+2) & 0xff);
0084 bufferreq[i] = c;
0085 }
0086
0087 if (EXFAIL==Bchg(p_ub, T_CARRAY_FLD, 0, bufferreq, TEST_MSGSIZE))
0088 {
0089 NDRX_LOG(log_debug, "Failed to set T_CARRAY_FLD[0]: %s", Bstrerror(Berror));
0090 ret=EXFAIL;
0091 goto out;
0092 }
0093
0094 if (EXFAIL == tpcall("TESTSV", (char *)p_ub, 0L, (char **)&p_ub, &rsplen,0))
0095 {
0096 NDRX_LOG(log_error, "TESTSV failed: %s", tpstrerror(tperrno));
0097 ret=EXFAIL;
0098 goto out;
0099 }
0100
0101
0102 retlen = TEST_MSGSIZE;
0103 if (EXFAIL==Bget(p_ub, T_CARRAY_FLD, 0, bufferreq, &retlen))
0104 {
0105 NDRX_LOG(log_debug, "Failed to get T_CARRAY_FLD[0]: %s", Bstrerror(Berror));
0106 ret=EXFAIL;
0107 goto out;
0108 }
0109
0110 if (retlen != TEST_MSGSIZE)
0111 {
0112 NDRX_LOG(log_error, "Invalid message size received, expected: %d, got: %d",
0113 (int)retlen, (int)TEST_MSGSIZE);
0114 ret=EXFAIL;
0115 goto out;
0116 }
0117
0118 for (i=0; i<TEST_MSGSIZE; i++)
0119 {
0120 char c = (char) ((i+3) & 0xff);
0121 if (bufferreq[i] != c)
0122 {
0123 NDRX_LOG(log_error, "TESTERROR and index %d: expected %x but got %x",
0124 i, (int)bufferreq[i], (int) (c));
0125 ret=EXFAIL;
0126 goto out;
0127 }
0128 }
0129 }
0130
0131 out:
0132
0133 if (NULL!=bufferreq)
0134 {
0135 NDRX_FREE(bufferreq);
0136 }
0137
0138 tpterm();
0139 fprintf(stderr, "Exit with %d\n", ret);
0140
0141 return ret;
0142 }
0143