Changeset 706:4ffbc9f1e922 in freeDiameter for tests
- Timestamp:
- Feb 9, 2011, 3:26:58 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- tests
- Files:
-
- 4 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
tests/CMakeLists.txt
r672 r706 13 13 SET(TEST_LIST 14 14 testsctp 15 test list15 testostr 16 16 testdict 17 17 testmesg -
tests/testdisp.c
r662 r706 110 110 struct disp_hdl * hdl[NB_CB]; 111 111 struct disp_when when; 112 c onst char * ec;112 char * ec; 113 113 114 114 /* First, initialize the daemon modules */ … … 116 116 117 117 /* Create a dummy session, we don't use it anyway */ 118 CHECK( 0, fd_sess_new( &sess, "test.disp", NULL, 0 ) ); 118 #define DUMMY_SID "test.disp" 119 CHECK( 0, fd_sess_new( &sess, DUMMY_SID, CONSTSTRLEN(DUMMY_SID), NULL, 0 ) ); 119 120 120 121 memset(&when, 0xff, sizeof(when)); /* check that we don't use un-initialized parts */ -
tests/testostr.c
r662 r706 36 36 #include "tests.h" 37 37 38 #define TEST_STR "This is my test string (with extra unused data)" 39 #define TEST_STRLEN 22 38 #define TEST_STR (os0_t)"This is my test string (with extra unused data)" 40 39 41 40 /* Main test routine */ … … 47 46 /* Check the hash function */ 48 47 { 49 charbuf[30];48 uint8_t buf[30]; 50 49 51 uint32_t hash = fd_ hash(TEST_STR, TEST_STRLEN); /* reference value */50 uint32_t hash = fd_os_hash(TEST_STR, CONSTSTRLEN(TEST_STR)); /* reference value */ 52 51 53 52 /* Check that a hash of a substring / surstring is different */ 54 CHECK( 1, hash != fd_ hash(TEST_STR, TEST_STRLEN- 1) ? 1 : 0 );55 CHECK( 1, hash != fd_ hash(TEST_STR, TEST_STRLEN+ 1) ? 1 : 0 );53 CHECK( 1, hash != fd_os_hash(TEST_STR, CONSTSTRLEN(TEST_STR) - 1) ? 1 : 0 ); 54 CHECK( 1, hash != fd_os_hash(TEST_STR, CONSTSTRLEN(TEST_STR) + 1) ? 1 : 0 ); 56 55 57 56 /* Check alignment of the string is not important */ 58 memcpy(buf + 4, TEST_STR, TEST_STRLEN);59 CHECK( hash, fd_ hash(buf + 4, TEST_STRLEN) );57 memcpy(buf + 4, TEST_STR, CONSTSTRLEN(TEST_STR)); 58 CHECK( hash, fd_os_hash(buf + 4, CONSTSTRLEN(TEST_STR)) ); 60 59 61 memcpy(buf + 3, TEST_STR, TEST_STRLEN);62 CHECK( hash, fd_ hash(buf + 3, TEST_STRLEN) );60 memcpy(buf + 3, TEST_STR, CONSTSTRLEN(TEST_STR)); 61 CHECK( hash, fd_os_hash(buf + 3, CONSTSTRLEN(TEST_STR)) ); 63 62 64 memcpy(buf + 2, TEST_STR, TEST_STRLEN);65 CHECK( hash, fd_ hash(buf + 2, TEST_STRLEN) );63 memcpy(buf + 2, TEST_STR, CONSTSTRLEN(TEST_STR)); 64 CHECK( hash, fd_os_hash(buf + 2, CONSTSTRLEN(TEST_STR)) ); 66 65 67 memcpy(buf + 1, TEST_STR, TEST_STRLEN);68 CHECK( hash, fd_ hash(buf + 1, TEST_STRLEN) );66 memcpy(buf + 1, TEST_STR, CONSTSTRLEN(TEST_STR)); 67 CHECK( hash, fd_os_hash(buf + 1, CONSTSTRLEN(TEST_STR)) ); 69 68 } 70 69 -
tests/testsctp.c
r662 r706 56 56 PASSTEST(); 57 57 #else /* DISABLE_SCTP */ 58 int sock, srvsock, clisock; 58 struct cnxctx cli, srv; /* we use only their cc_socket & cc_state */ 59 int sock; 59 60 char buf1[]="abcdef"; 60 61 char *buf2; 61 62 size_t sz; 62 63 struct fd_list eps = FD_LIST_INITIALIZER(eps); 63 uint32_t status = 0;64 64 uint16_t str; 65 65 int ev; … … 80 80 } 81 81 82 memset(&cli, 0, sizeof(cli)); 83 memset(&srv, 0, sizeof(srv)); 84 82 85 /* First, initialize the daemon modules */ 83 86 INIT_FD(); … … 93 96 94 97 /* Now, create the client socket */ 95 CHECK( 0, fd_sctp_client( &cli sock, 0, TEST_PORT, &eps ));98 CHECK( 0, fd_sctp_client( &cli.cc_socket, 0, TEST_PORT, &eps )); 96 99 97 100 /* Accept this connection */ 98 srv sock= accept(sock, NULL, NULL);101 srv.cc_socket = accept(sock, NULL, NULL); 99 102 100 103 /* Send a first message */ 101 CHECK( 0, fd_sctp_sendstr( srvsock, 1, (uint8_t *)buf1, sizeof(buf1), &status) );102 CHECK( 0, s tatus);104 CHECK( 0, fd_sctp_sendstr(&srv, 1, (uint8_t *)buf1, sizeof(buf1) ) ); 105 CHECK( 0, srv.cc_state); 103 106 104 107 /* Receive this message */ 105 108 redo1: 106 CHECK( 0, fd_sctp_recvmeta( clisock, &str, (uint8_t **)&buf2, &sz, &ev, &status) );109 CHECK( 0, fd_sctp_recvmeta(&cli, &str, (uint8_t **)&buf2, &sz, &ev) ); 107 110 if (ev == FDEVP_CNX_EP_CHANGE) 108 111 goto redo1; 109 112 CHECK( FDEVP_CNX_MSG_RECV, ev); 110 CHECK( 0, status);113 CHECK( 0, cli.cc_state); 111 114 CHECK( 1, str); 112 115 CHECK( sizeof(buf1), sz ); … … 115 118 116 119 /* Send in the other direction */ 117 CHECK( 0, fd_sctp_sendstr( clisock, 2, (uint8_t *)buf1, sizeof(buf1), &status) );118 CHECK( 0, status);120 CHECK( 0, fd_sctp_sendstr(&cli, 2, (uint8_t *)buf1, sizeof(buf1)) ); 121 CHECK( 0, cli.cc_state); 119 122 120 123 /* Receive this message */ 121 124 redo2: 122 CHECK( 0, fd_sctp_recvmeta( srvsock, &str, (uint8_t **)&buf2, &sz, &ev, &status) );125 CHECK( 0, fd_sctp_recvmeta(&srv, &str, (uint8_t **)&buf2, &sz, &ev) ); 123 126 if (ev == FDEVP_CNX_EP_CHANGE) 124 127 goto redo2; 125 128 CHECK( FDEVP_CNX_MSG_RECV, ev); 126 CHECK( 0, s tatus);129 CHECK( 0, srv.cc_state); 127 130 CHECK( 2, str); 128 131 CHECK( sizeof(buf1), sz ); -
tests/testsess.c
r662 r706 37 37 38 38 #define TEST_DIAM_ID "testsess.myid" 39 #define TEST_OPT "suffix" 40 #define TEST_SID TEST_DIAM_ID ";1234;5678;" TEST_OPT 39 #define TEST_OPT_IN "suffix" 40 #define TEST_OPT (os0_t)TEST_OPT_IN 41 #define TEST_SID_IN TEST_DIAM_ID ";1234;5678;" TEST_OPT_IN 42 #define TEST_SID (os0_t)TEST_SID_IN 41 43 42 44 #define TEST_EYEC 0x7e57e1ec 43 45 struct mystate { 44 46 int eyec; /* TEST_EYEC */ 45 char *sid; /* the session with which the data was registered */47 os0_t sid; /* the session with which the data was registered */ 46 48 int * freed; /* location where to write the freed status */ 47 49 void * opaque; /* if opaque was provided, this is the value we expect */ 48 50 }; 49 51 50 static void mycleanup( struct mystate * data, char *sid, void * opaque )52 static void mycleanup( struct mystate * data, os0_t sid, void * opaque ) 51 53 { 52 54 /* sanity */ … … 54 56 CHECK( 1, data? 1 : 0 ); 55 57 CHECK( TEST_EYEC, data->eyec ); 56 CHECK( 0, strcmp( sid,data->sid) );58 CHECK( 0, strcmp((char *)sid, (char *)data->sid) ); 57 59 if (data->freed) 58 60 *(data->freed) += 1; … … 65 67 } 66 68 67 static __inline__ struct mystate * new_state( char *sid, int *freed)69 static __inline__ struct mystate * new_state(os0_t sid, int *freed) 68 70 { 69 71 struct mystate *new; … … 72 74 memset(new, 0, sizeof(struct mystate)); 73 75 new->eyec = TEST_EYEC; 74 new->sid = strdup(sid);76 new->sid = os0dup(sid, strlen((char *)sid)); 75 77 CHECK( 1, new->sid ? 1 : 0 ); 76 78 new->freed = freed; … … 79 81 80 82 void * g_opaque = (void *)"test"; 83 84 /* Avoid a lot of casts */ 85 #define strlen(s) strlen((char *)s) 86 #define strncmp(s1,s2,l) strncmp((char *)s1, (char *)s2, l) 87 #define strcmp(s1,s2) strcmp((char *)s1, (char *)s2) 81 88 82 89 … … 86 93 struct session_handler * hdl1, *hdl2; 87 94 struct session *sess1, *sess2, *sess3; 88 char *str1, *str2; 95 os0_t str1, str2; 96 size_t str1len, str2len; 89 97 int new; 90 98 … … 109 117 { 110 118 /* DiamId is provided, not opt */ 111 CHECK( 0, fd_sess_new( &sess1, TEST_DIAM_ID, NULL, 0 ) );112 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, NULL, 0 ) );119 CHECK( 0, fd_sess_new( &sess1, TEST_DIAM_ID, CONSTSTRLEN(TEST_DIAM_ID), NULL, 0 ) ); 120 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, CONSTSTRLEN(TEST_DIAM_ID), NULL, 0 ) ); 113 121 #if 0 114 122 fd_sess_dump(0, sess1); … … 117 125 118 126 /* Check both string start with the diameter Id, but are different */ 119 CHECK( 0, fd_sess_getsid(sess1, &str1) ); 120 CHECK( 0, strncmp(str1, TEST_DIAM_ID ";", strlen(TEST_DIAM_ID) + 1) ); 121 CHECK( 0, fd_sess_getsid(sess2, &str2) ); 122 CHECK( 0, strncmp(str2, TEST_DIAM_ID ";", strlen(TEST_DIAM_ID) + 1) ); 127 CHECK( 0, fd_sess_getsid(sess1, &str1, &str1len) ); 128 CHECK( 1, (strlen(str1) == str1len) ? 1 : 0 ); 129 CHECK( 0, strncmp(str1, TEST_DIAM_ID ";", CONSTSTRLEN(TEST_DIAM_ID) + 1) ); 130 CHECK( 0, fd_sess_getsid(sess2, &str2, &str2len) ); 131 CHECK( 0, strncmp(str2, TEST_DIAM_ID ";", CONSTSTRLEN(TEST_DIAM_ID) + 1) ); 123 132 CHECK( 1, strcmp(str1, str2) ? 1 : 0 ); 124 133 CHECK( 0, fd_sess_destroy( &sess1 ) ); … … 126 135 127 136 /* diamId and opt */ 128 CHECK( 0, fd_sess_new( &sess1, TEST_DIAM_ID, TEST_OPT, 0 ) );129 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, TEST_OPT, strlen(TEST_OPT) - 1 ) );130 #if 0 131 fd_sess_dump(0, sess1); 132 fd_sess_dump(0, sess2); 133 #endif 134 135 CHECK( 0, fd_sess_getsid(sess1, &str1 ) );136 CHECK( 0, strncmp(str1, TEST_DIAM_ID ";", strlen(TEST_DIAM_ID) + 1) );137 CHECK( 0, strcmp(str1 + str len(str1) - strlen(TEST_OPT) - 1, ";" TEST_OPT) );138 139 CHECK( 0, fd_sess_getsid(sess2, &str2 ) );140 CHECK( 0, strncmp(str2, TEST_DIAM_ID ";", strlen(TEST_DIAM_ID) + 1) );141 CHECK( 0, strncmp(str2 + str len(str2) - strlen(TEST_OPT), ";" TEST_OPT, strlen(TEST_OPT)) );137 CHECK( 0, fd_sess_new( &sess1, TEST_DIAM_ID, 0, TEST_OPT, 0 ) ); 138 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, CONSTSTRLEN(TEST_DIAM_ID), TEST_OPT, CONSTSTRLEN(TEST_OPT_IN) - 1 ) ); 139 #if 0 140 fd_sess_dump(0, sess1); 141 fd_sess_dump(0, sess2); 142 #endif 143 144 CHECK( 0, fd_sess_getsid(sess1, &str1, &str1len) ); 145 CHECK( 0, strncmp(str1, TEST_DIAM_ID ";", CONSTSTRLEN(TEST_DIAM_ID) + 1) ); 146 CHECK( 0, strcmp(str1 + str1len - CONSTSTRLEN(TEST_OPT_IN) - 1, ";" TEST_OPT_IN) ); 147 148 CHECK( 0, fd_sess_getsid(sess2, &str2, &str2len) ); 149 CHECK( 0, strncmp(str2, TEST_DIAM_ID ";", CONSTSTRLEN(TEST_DIAM_ID) + 1) ); 150 CHECK( 0, strncmp(str2 + str2len - CONSTSTRLEN(TEST_OPT_IN), ";" TEST_OPT_IN, CONSTSTRLEN(TEST_OPT_IN)) ); 142 151 143 152 CHECK( 1, strcmp(str1, str2) ? 1 : 0 ); … … 146 155 147 156 /* Now, only opt is provided */ 148 CHECK( 0, fd_sess_new( &sess1, NULL, TEST_SID, 0 ) );149 CHECK( EALREADY, fd_sess_new( &sess2, NULL, TEST_SID, 0 ) );157 CHECK( 0, fd_sess_new( &sess1, NULL, 0, TEST_SID, 0 ) ); 158 CHECK( EALREADY, fd_sess_new( &sess2, NULL, 0, TEST_SID, 0 ) ); 150 159 CHECK( sess2, sess1 ); 151 CHECK( EALREADY, fd_sess_new( &sess3, NULL, TEST_SID, strlen(TEST_SID) ) );160 CHECK( EALREADY, fd_sess_new( &sess3, NULL, 0, TEST_SID, CONSTSTRLEN(TEST_SID_IN) ) ); 152 161 CHECK( sess3, sess1 ); 153 CHECK( 0, fd_sess_new( &sess2, NULL, TEST_SID, strlen(TEST_SID) - 1 ) );154 #if 0 155 fd_sess_dump(0, sess1); 156 fd_sess_dump(0, sess2); 157 #endif 158 CHECK( 0, fd_sess_getsid(sess1, &str1 ) );159 CHECK( 0, fd_sess_getsid(sess2, &str2 ) );160 CHECK( 0, strncmp( str1, str2, strlen(TEST_SID) - 1 ) );162 CHECK( 0, fd_sess_new( &sess2, NULL, 0, TEST_SID, CONSTSTRLEN(TEST_SID_IN) - 1 ) ); 163 #if 0 164 fd_sess_dump(0, sess1); 165 fd_sess_dump(0, sess2); 166 #endif 167 CHECK( 0, fd_sess_getsid(sess1, &str1, &str1len) ); 168 CHECK( 0, fd_sess_getsid(sess2, &str2, &str2len) ); 169 CHECK( 0, strncmp( str1, str2, CONSTSTRLEN(TEST_SID_IN) - 1 ) ); 161 170 CHECK( 0, strcmp( str1, TEST_SID ) ); 171 CHECK( 1, strcmp( str1, str2 ) ? 1 : 0 ); 162 172 163 173 CHECK( 0, fd_sess_destroy( &sess2 ) ); … … 167 177 /* Test fd_sess_fromsid */ 168 178 { 169 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess1, &new ) );170 CHECK( 1, new ? 1 : 0 ); 171 172 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess2, &new ) );179 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess1, &new ) ); 180 CHECK( 1, new ? 1 : 0 ); 181 182 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess2, &new ) ); 173 183 CHECK( 0, new ); 174 184 CHECK( sess1, sess2 ); 175 185 176 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess3, NULL ) );186 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess3, NULL ) ); 177 187 CHECK( sess1, sess3 ); 178 188 … … 184 194 struct mystate *tms; 185 195 186 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess1, &new ) );196 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess1, &new ) ); 187 197 CHECK( 1, new ? 1 : 0 ); 188 198 … … 190 200 CHECK( NULL, sess1 ); 191 201 192 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess1, &new ) );202 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess1, &new ) ); 193 203 CHECK( 1, new ? 1 : 0 ); 194 204 … … 199 209 CHECK( NULL, sess1 ); 200 210 201 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess1, &new ) );211 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess1, &new ) ); 202 212 CHECK( 0, new ); 203 213 204 214 CHECK( 0, fd_sess_destroy( &sess1 ) ); 205 215 206 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess1, &new ) );216 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess1, &new ) ); 207 217 CHECK( 1, new ? 1 : 0 ); 208 218 … … 214 224 struct timespec timeout; 215 225 216 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess1, &new ) );226 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess1, &new ) ); 217 227 CHECK( 1, new ? 1 : 0 ); 218 228 219 229 CHECK( 0, clock_gettime(CLOCK_REALTIME, &timeout) ); 220 CHECK( 0, fd_sess_settimeout( sess1, &timeout) ); 230 CHECK( 0, fd_sess_settimeout( sess1, &timeout) ); /* expire now */ 221 231 timeout.tv_sec = 0; 222 232 timeout.tv_nsec= 50000000; /* 50 ms */ 223 233 CHECK( 0, nanosleep(&timeout, NULL) ); 224 234 225 CHECK( 0, fd_sess_fromsid( TEST_SID, strlen(TEST_SID), &sess1, &new ) );235 CHECK( 0, fd_sess_fromsid( TEST_SID, CONSTSTRLEN(TEST_SID_IN), &sess1, &new ) ); 226 236 CHECK( 1, new ? 1 : 0 ); 227 237 … … 231 241 232 242 /* Create a second session */ 233 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, NULL, 0 ) );234 235 /* We don't really have a way to verify the expiry list is in proper order automatically here... */243 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, 0, NULL, 0 ) ); 244 245 /* We don't really have a way to verify the expiry list is in proper order automatically here... */ 236 246 237 247 CHECK( 0, fd_sess_destroy( &sess2 ) ); … … 248 258 249 259 /* Create three sessions */ 250 CHECK( 0, fd_sess_new( &sess1, TEST_DIAM_ID, NULL, 0 ) );251 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, NULL, 0 ) );252 CHECK( 0, fd_sess_new( &sess3, TEST_DIAM_ID, NULL, 0 ) );260 CHECK( 0, fd_sess_new( &sess1, TEST_DIAM_ID, 0, NULL, 0 ) ); 261 CHECK( 0, fd_sess_new( &sess2, TEST_DIAM_ID, 0, NULL, 0 ) ); 262 CHECK( 0, fd_sess_new( &sess3, TEST_DIAM_ID, 0, NULL, 0 ) ); 253 263 254 264 /* Create 2 states */ 255 CHECK( 0, fd_sess_getsid(sess1, &str1 ) );265 CHECK( 0, fd_sess_getsid(sess1, &str1, &str1len) ); 256 266 freed[0] = 0; 257 267 ms[0] = new_state(str1, &freed[0]); … … 281 291 /* Now create 6 states */ 282 292 memset(&freed[0], 0, sizeof(freed)); 283 CHECK( 0, fd_sess_getsid(sess1, &str1 ) );293 CHECK( 0, fd_sess_getsid(sess1, &str1, &str1len) ); 284 294 ms[0] = new_state(str1, &freed[0]); 285 295 ms[1] = new_state(str1, &freed[1]); 286 CHECK( 0, fd_sess_getsid(sess2, &str1 ) );296 CHECK( 0, fd_sess_getsid(sess2, &str1, &str1len) ); 287 297 ms[2] = new_state(str1, &freed[2]); 288 298 ms[3] = new_state(str1, &freed[3]); 289 CHECK( 0, fd_sess_getsid(sess3, &str1 ) );299 CHECK( 0, fd_sess_getsid(sess3, &str1, &str1len) ); 290 300 ms[4] = new_state(str1, &freed[4]); 291 301 ms[5] = new_state(str1, &freed[5]); 292 302 ms[5]->opaque = g_opaque; 293 str2 = strdup(str1);303 str2 = os0dup(str1, str1len); 294 304 CHECK( 1, str2 ? 1 : 0 ); 295 305 … … 333 343 334 344 /* Create again session 3, check that no data is associated to it */ 335 CHECK( 0, fd_sess_fromsid( str2, str len(str2), &sess3, &new ) );345 CHECK( 0, fd_sess_fromsid( str2, str1len, &sess3, &new ) ); 336 346 CHECK( 1, new ? 1 : 0 ); 337 347 CHECK( 0, fd_sess_state_retrieve( hdl1, sess3, &tms ) ); … … 359 369 /* Check the last data can still be retrieved */ 360 370 CHECK( 0, fd_sess_state_retrieve( hdl1, sess1, &tms ) ); 361 CHECK( 0, fd_sess_getsid(sess1, &str1) ); 371 CHECK( 1, tms ? 1 : 0); 372 CHECK( 0, fd_sess_getsid(sess1, &str1, &str1len) ); 362 373 mycleanup(tms, str1, NULL); 363 374 } 364 375 376 /* TODO: add tests on messages referencing sessions */ 365 377 366 378 /* That's all for the tests yet */
Note: See TracChangeset
for help on using the changeset viewer.