Changeset 1425:b09f1b4c9fad in freeDiameter for tests/testmesg.c
- Timestamp:
- Feb 19, 2020, 8:26:29 AM (4 years ago)
- Branch:
- default
- Phase:
- public
- committer:
- Luke Mewburn <luke@mewburn.net> 1582068430 -39600
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/testmesg.c
r1423 r1425 283 283 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_NAME, "Application test", &application, ENOENT ) ); 284 284 CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_COMMAND, &cmd_data , application, &command ) ); 285 ADD_RULE(command, 0, "Session-Id", RULE_FIXED_HEAD, 1, 1, 1); 286 ADD_RULE(command, 0, "Result-Code", RULE_OPTIONAL, 0, 1, 0); 287 ADD_RULE(command, 0, "Experimental-Result", RULE_OPTIONAL, 0, 1, 0); 288 ADD_RULE(command, 0, "Origin-Host", RULE_REQUIRED, 1, 1, 0); 289 ADD_RULE(command, 0, "Origin-Realm", RULE_REQUIRED, 1, 1, 0); 285 290 } 286 291 … … 317 322 CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_AVP, &avp_data , type, NULL ) ); 318 323 } 319 324 325 { 326 struct dict_object * type = NULL; 327 struct dict_type_data type_data = { AVP_TYPE_UNSIGNED32, "Enumerated(73565/Experimental-Result-Code)" }; 328 struct dict_avp_data avp_data = { 73576, 73565, "Experimental-Result-Code", AVP_FLAG_VENDOR, AVP_FLAG_VENDOR, AVP_TYPE_UNSIGNED32 }; 329 struct dict_enumval_data val1 = { "DIAMETER_TEST_RESULT_1000", { .u32 = 1000 } }; 330 struct dict_enumval_data val2 = { "DIAMETER_TEST_RESULT_5000", { .u32 = 5000 } }; 331 CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_TYPE, &type_data , NULL, &type ) ); 332 CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_AVP, &avp_data , type, NULL ) ); 333 CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_ENUMVAL, &val1 , type, NULL ) ); 334 CHECK( 0, fd_dict_new ( fd_g_config->cnf_dict, DICT_ENUMVAL, &val2 , type, NULL ) ); 335 } 336 320 337 #if 0 321 338 { … … 1478 1495 } 1479 1496 1497 /* Test the fd_msg_add_result function for Result-Code */ 1498 { 1499 struct msg * msg = NULL; 1500 struct dict_object * avp_model = NULL; 1501 struct avp * rc = NULL; 1502 struct avp_hdr * avpdata = NULL; 1503 1504 { 1505 struct dict_object * cmd_model = NULL; 1506 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Test-Command-Answer", &cmd_model, ENOENT ) ); 1507 1508 /* Create a message */ 1509 CHECK( 0, fd_msg_new ( cmd_model, 0, &msg ) ); 1510 1511 /* Add a session id */ 1512 CHECK( 0, fd_msg_new_session( msg, (os0_t)"tm2", strlen("tm2") ) ); 1513 1514 /* Find the DICT_TYPE Enumerated(Result-Code) */ 1515 struct dict_object * restype = NULL; 1516 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_TYPE, TYPE_BY_NAME, "Enumerated(Result-Code)", &restype, ENOENT ) ); 1517 1518 /* Now test the behavior of fd_msg_add_result for Result-Code AVP */ 1519 CHECK( 0, fd_msg_add_result(msg, 0, restype, "DIAMETER_SUCCESS", NULL, NULL, 1) ); 1520 1521 LOG_D("%s", fd_msg_dump_treeview(FD_DUMP_TEST_PARAMS, msg, fd_g_config->cnf_dict, 0, 1)); 1522 } 1523 1524 /* Ensure Result-Code is present */ 1525 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Result-Code", &avp_model, ENOENT ) ); 1526 CHECK( 0, fd_msg_search_avp( msg, avp_model, &rc ) ); 1527 1528 /* Check the Result-Code AVP value is DIAMETER_SUCCESS */ 1529 CHECK( 0, fd_msg_avp_hdr ( rc, &avpdata ) ); 1530 CHECK( ER_DIAMETER_SUCCESS, avpdata->avp_value->u32 ); 1531 1532 /* Ensure Experimental-Result is missing */ 1533 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result", &avp_model, ENOENT ) ); 1534 CHECK( ENOENT, fd_msg_search_avp( msg, avp_model, NULL ) ); 1535 1536 /* Free msg */ 1537 CHECK( 0, fd_msg_free( msg ) ); 1538 } 1539 1540 /* Test the fd_msg_add_result function for Experimental-Result */ 1541 { 1542 struct msg * msg = NULL; 1543 struct dict_object * avp_model = NULL; 1544 struct avp * er = NULL; 1545 struct avp * erc = NULL; 1546 struct avp_hdr * avpdata = NULL; 1547 1548 { 1549 struct dict_object * cmd_model = NULL; 1550 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, "Test-Command-Answer", &cmd_model, ENOENT ) ); 1551 1552 /* Create a message */ 1553 CHECK( 0, fd_msg_new ( cmd_model, 0, &msg ) ); 1554 1555 /* Add a session id */ 1556 CHECK( 0, fd_msg_new_session( msg, (os0_t)"tm2", strlen("tm2") ) ); 1557 1558 /* Find the DICT_TYPE Enumerated(73565/Experimental-Result-Code) */ 1559 struct dict_object * restype = NULL; 1560 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_TYPE, TYPE_BY_NAME, "Enumerated(73565/Experimental-Result-Code)", &restype, ENOENT ) ); 1561 1562 /* Now test the behavior of fd_msg_add_result for Experimental-Result AVP */ 1563 CHECK( 0, fd_msg_add_result(msg, 73565, restype, "DIAMETER_TEST_RESULT_5000", NULL, NULL, 1) ); 1564 1565 LOG_D("%s", fd_msg_dump_treeview(FD_DUMP_TEST_PARAMS, msg, fd_g_config->cnf_dict, 0, 1)); 1566 } 1567 1568 /* Ensure Result-Code is missing */ 1569 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Result-Code", &avp_model, ENOENT ) ); 1570 CHECK( ENOENT, fd_msg_search_avp( msg, avp_model, NULL ) ); 1571 1572 /* Ensure Experimental-Result is present */ 1573 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result", &avp_model, ENOENT ) ); 1574 CHECK( 0, fd_msg_search_avp( msg, avp_model, &er ) ); 1575 1576 /* Ensure Experimental-Result-Code is present */ 1577 CHECK( 0, fd_dict_search ( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Experimental-Result-Code", &avp_model, ENOENT ) ); 1578 CHECK( 0, fd_msg_search_avp( er, avp_model, &erc ) ); 1579 1580 /* Check the Experimental-Result-Code AVP value is 5000 */ 1581 CHECK( 0, fd_msg_avp_hdr ( erc, &avpdata ) ); 1582 CHECK( 5000, avpdata->avp_value->u32 ); 1583 1584 /* Free msg */ 1585 CHECK( 0, fd_msg_free( msg ) ); 1586 } 1587 1480 1588 /* Check IPv4 -> IPv6 and IPv6->IPv4 mapping */ 1481 1589 {
Note: See TracChangeset
for help on using the changeset viewer.