Sipper 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/sipper/README.rb +26 -0
- data/sipper/b2bua_controller.rb +163 -0
- data/sipper/b2bua_session_mixin.rb +24 -0
- data/sipper/base_controller.rb +425 -0
- data/sipper/bin/common.rb +42 -0
- data/sipper/bin/generate.rb +70 -0
- data/sipper/bin/project.rb +44 -0
- data/sipper/bin/run.rb +85 -0
- data/sipper/bin/run_smoke.rb +8 -0
- data/sipper/config/log4r.xml +71 -0
- data/sipper/controller_class_loader.rb +29 -0
- data/sipper/controller_selector.rb +119 -0
- data/sipper/controllers/invite_controller.rb +30 -0
- data/sipper/controllers/order.yaml +3 -0
- data/sipper/custom_message.rb +4 -0
- data/sipper/detached_session.rb +11 -0
- data/sipper/docs/manual.txt +1621 -0
- data/sipper/generators/README +12 -0
- data/sipper/generators/gen_controller.rb +228 -0
- data/sipper/generators/gen_project.rb +45 -0
- data/sipper/generators/gen_test.rb +72 -0
- data/sipper/generators/project_template_dir/Rakefile +56 -0
- data/sipper/generators/project_template_dir/config/sipper.cfg +31 -0
- data/sipper/generators/project_template_dir/controllers/README.txt +2 -0
- data/sipper/generators/project_template_dir/dot_sipper.proj +2 -0
- data/sipper/generators/project_template_dir/logs/README.txt +2 -0
- data/sipper/generators/project_template_dir/tests/README.txt +2 -0
- data/sipper/lib/smc/statemap.rb +194 -0
- data/sipper/logs/dialog_info_store +0 -0
- data/sipper/logs/r.cmd +6 -0
- data/sipper/logs/r.sh +6 -0
- data/sipper/media/sipper_media_client.rb +268 -0
- data/sipper/media/sipper_media_event.rb +43 -0
- data/sipper/media/sipper_media_manager.rb +145 -0
- data/sipper/media/sipper_media_proxy.rb +60 -0
- data/sipper/media/sipper_offer_answer.rb +285 -0
- data/sipper/message.rb +512 -0
- data/sipper/modified_pattern_formatter.rb +119 -0
- data/sipper/proxy_controller.rb +143 -0
- data/sipper/registration.rb +52 -0
- data/sipper/request.rb +109 -0
- data/sipper/response.rb +123 -0
- data/sipper/ruby_ext/module.rb +27 -0
- data/sipper/ruby_ext/mutable_class.rb +17 -0
- data/sipper/ruby_ext/object.rb +38 -0
- data/sipper/ruby_ext/pqueue.rb +190 -0
- data/sipper/ruby_ext/snapshot.rb +201 -0
- data/sipper/ruby_ext/string.rb +18 -0
- data/sipper/ruby_ext/time.rb +9 -0
- data/sipper/run/run_sipper1.rb +28 -0
- data/sipper/run/run_sipper2.rb +56 -0
- data/sipper/sdp/sdp.rb +257 -0
- data/sipper/sdp/sdp_generator.rb +131 -0
- data/sipper/sdp/sdp_parser.rb +136 -0
- data/sipper/session.rb +1952 -0
- data/sipper/session_manager.rb +170 -0
- data/sipper/session_recorder.rb +190 -0
- data/sipper/session_state/DialogState.sm +54 -0
- data/sipper/session_state/DialogState_sm.rb +337 -0
- data/sipper/session_state/dialog_routes.rb +141 -0
- data/sipper/sip_headers/header.rb +632 -0
- data/sipper/sip_headers/sipuri.rb +352 -0
- data/sipper/sip_logger.rb +65 -0
- data/sipper/sip_message_router.rb +231 -0
- data/sipper/sip_test_driver_controller.rb +10 -0
- data/sipper/sipper.rb +329 -0
- data/sipper/sipper_assertions.rb +21 -0
- data/sipper/sipper_configurator.rb +376 -0
- data/sipper/sipper_http/sipper_http_request_dispatcher.rb +71 -0
- data/sipper/sipper_http/sipper_http_response.rb +25 -0
- data/sipper/stray_message_manager.rb +40 -0
- data/sipper/test_completion_signaling_helper.rb +77 -0
- data/sipper/transaction/Ict.sm +59 -0
- data/sipper/transaction/Ict_sm.rb +430 -0
- data/sipper/transaction/Ist.sm +74 -0
- data/sipper/transaction/Ist_sm.rb +460 -0
- data/sipper/transaction/Nict.sm +51 -0
- data/sipper/transaction/Nict_sm.rb +325 -0
- data/sipper/transaction/Nist.sm +59 -0
- data/sipper/transaction/Nist_sm.rb +356 -0
- data/sipper/transaction/invite_client_transaction.rb +274 -0
- data/sipper/transaction/invite_server_transaction.rb +319 -0
- data/sipper/transaction/non_invite_client_transaction.rb +230 -0
- data/sipper/transaction/non_invite_server_transaction.rb +263 -0
- data/sipper/transaction/state_machine_wrapper.rb +58 -0
- data/sipper/transaction/transaction.rb +212 -0
- data/sipper/transport/base_transport.rb +84 -0
- data/sipper/transport/rel_unrel.rb +19 -0
- data/sipper/transport/transport_and_route_resolver.rb +67 -0
- data/sipper/transport/udp_transport.rb +156 -0
- data/sipper/transport_manager.rb +33 -0
- data/sipper/udp_session.rb +17 -0
- data/sipper/util/command_element.rb +62 -0
- data/sipper/util/compact_converter.rb +50 -0
- data/sipper/util/counter.rb +26 -0
- data/sipper/util/digest/digest_authorizer.rb +204 -0
- data/sipper/util/expectation_parser.rb +164 -0
- data/sipper/util/locator.rb +31 -0
- data/sipper/util/message_fill.rb +58 -0
- data/sipper/util/persistence/ps_sipper_map.rb +63 -0
- data/sipper/util/persistence/sipper_map.rb +41 -0
- data/sipper/util/sipper_util.rb +305 -0
- data/sipper/util/timer/sip_timer_helper.rb +26 -0
- data/sipper/util/timer/timer_manager.rb +80 -0
- data/sipper/util/timer/timer_task.rb +56 -0
- data/sipper/util/validations.rb +44 -0
- data/sipper/version.rb +10 -0
- data/sipper_test/_test_media_uas.rb +79 -0
- data/sipper_test/base_test_case.rb +31 -0
- data/sipper_test/c_134.txt +7 -0
- data/sipper_test/driven_sip_test_case.rb +96 -0
- data/sipper_test/gold.txt +10 -0
- data/sipper_test/gold_res.txt +8 -0
- data/sipper_test/gold_sub.txt +9 -0
- data/sipper_test/hello_sipper.au +0 -0
- data/sipper_test/in_sipper.au +0 -0
- data/sipper_test/nonrr_proxy.rb +17 -0
- data/sipper_test/order_tests.yaml +4 -0
- data/sipper_test/rake_res.txt +399 -0
- data/sipper_test/rr_proxy.rb +17 -0
- data/sipper_test/run_test.cmd +94 -0
- data/sipper_test/sip_test_case.rb +104 -0
- data/sipper_test/test2xx_retransmission.rb +80 -0
- data/sipper_test/test2xx_retransmission_with_limit.rb +81 -0
- data/sipper_test/test2xx_retransmission_with_nist.rb +91 -0
- data/sipper_test/test2xx_retransmission_with_txns.rb +94 -0
- data/sipper_test/test_address_header.rb +66 -0
- data/sipper_test/test_b2bua1.rb +130 -0
- data/sipper_test/test_b2bua2.rb +120 -0
- data/sipper_test/test_b2bua3.rb +160 -0
- data/sipper_test/test_b2bua4.rb +130 -0
- data/sipper_test/test_base_controller.rb +110 -0
- data/sipper_test/test_base_transport.rb +37 -0
- data/sipper_test/test_cancel.rb +21 -0
- data/sipper_test/test_cancel_after2xx.rb +81 -0
- data/sipper_test/test_cancel_retransmission.rb +105 -0
- data/sipper_test/test_cancel_with481.rb +83 -0
- data/sipper_test/test_cancel_with487.rb +70 -0
- data/sipper_test/test_cancel_with_ist_without_nist.rb +99 -0
- data/sipper_test/test_cancel_with_nist.rb +84 -0
- data/sipper_test/test_cancel_without487.rb +77 -0
- data/sipper_test/test_command_element.rb +38 -0
- data/sipper_test/test_compact_converter.rb +33 -0
- data/sipper_test/test_controller_class_loader.rb +37 -0
- data/sipper_test/test_controller_selector.rb +53 -0
- data/sipper_test/test_controller_using_compact_headers.rb +74 -0
- data/sipper_test/test_controller_using_header_order.rb +85 -0
- data/sipper_test/test_controller_using_ict.rb +64 -0
- data/sipper_test/test_controller_using_ict_with_non_success.rb +72 -0
- data/sipper_test/test_controller_using_ict_with_tcbh.rb +24 -0
- data/sipper_test/test_controller_using_ict_with_tcbh_no_action.rb +24 -0
- data/sipper_test/test_controller_using_ist.rb +70 -0
- data/sipper_test/test_controller_using_ist_with_tcbh.rb +24 -0
- data/sipper_test/test_controller_using_nict.rb +115 -0
- data/sipper_test/test_controller_using_nict_with_tcbh.rb +24 -0
- data/sipper_test/test_controller_using_nist.rb +63 -0
- data/sipper_test/test_controller_using_pre_existing_rs0.rb +73 -0
- data/sipper_test/test_controller_using_pre_existing_rs1.rb +75 -0
- data/sipper_test/test_controller_using_pre_existing_rs2.rb +71 -0
- data/sipper_test/test_controller_using_route_set.rb +86 -0
- data/sipper_test/test_controller_with_sdp.rb +80 -0
- data/sipper_test/test_controllers/cancel/order.yaml +2 -0
- data/sipper_test/test_controllers/cancel/uac_cancel_controller.rb +35 -0
- data/sipper_test/test_controllers/cancel/uas_cancel_controller.rb +25 -0
- data/sipper_test/test_controllers/class_loading/ordered/first_ordered_controller.rb +5 -0
- data/sipper_test/test_controllers/class_loading/ordered/order.yaml +3 -0
- data/sipper_test/test_controllers/class_loading/ordered/recond_ordered_controller.rb +6 -0
- data/sipper_test/test_controllers/class_loading/ordered/second_ordered_controller.rb +6 -0
- data/sipper_test/test_controllers/class_loading/unordered/first_unordered_controller.rb +7 -0
- data/sipper_test/test_controllers/class_loading/unordered/second_unordered_controller.rb +6 -0
- data/sipper_test/test_controllers/ctrl_trhandler/lib/transport_filters/my_transport_handler.rb +22 -0
- data/sipper_test/test_controllers/ctrl_trhandler/uac_tr_handler_controller.rb +27 -0
- data/sipper_test/test_controllers/ctrl_trhandler/uas_tr_handler_controller.rb +21 -0
- data/sipper_test/test_controllers/ete/order.yaml +1 -0
- data/sipper_test/test_controllers/ete/uac_controller.rb +39 -0
- data/sipper_test/test_controllers/ete/uas_controller.rb +34 -0
- data/sipper_test/test_controllers/extensions/extension_uac_controller.rb +24 -0
- data/sipper_test/test_controllers/extensions/extension_uas_controller.rb +35 -0
- data/sipper_test/test_controllers/extensions/lib/sipper_extensions/my_from_extension.rb +16 -0
- data/sipper_test/test_controllers/ict_tcbh/lib/transaction_handlers/app_ict_handler.rb +23 -0
- data/sipper_test/test_controllers/ict_tcbh/uac_ict_tcbh_controller.rb +27 -0
- data/sipper_test/test_controllers/ict_tcbh/uac_ict_tcbh_no_action_controller.rb +28 -0
- data/sipper_test/test_controllers/ict_tcbh/uas_ict_tcbh_controller.rb +29 -0
- data/sipper_test/test_controllers/ict_tcbh/uas_ict_tcbh_no_action_controller.rb +31 -0
- data/sipper_test/test_controllers/ist_tcbh/lib/app_ist_handler.rb +13 -0
- data/sipper_test/test_controllers/ist_tcbh/uac_ist_tcbh_controller.rb +22 -0
- data/sipper_test/test_controllers/ist_tcbh/uas_ist_tcbh_controller.rb +31 -0
- data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/in_order.yaml +2 -0
- data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/my_transport_handler1.rb +21 -0
- data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/my_transport_handler2.rb +21 -0
- data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/out_order.yaml +2 -0
- data/sipper_test/test_controllers/multi_trhandlers/uac_multi_tr_handler_controller.rb +27 -0
- data/sipper_test/test_controllers/multi_trhandlers/uas_multi_tr_handler_controller.rb +29 -0
- data/sipper_test/test_controllers/multiple/lib/blank_test.rb +2 -0
- data/sipper_test/test_controllers/multiple/uac_info_controller.rb +21 -0
- data/sipper_test/test_controllers/multiple/uac_msg_controller.rb +20 -0
- data/sipper_test/test_controllers/multiple/uas_info_controller.rb +15 -0
- data/sipper_test/test_controllers/multiple/uas_msg_controller.rb +14 -0
- data/sipper_test/test_controllers/nict_tcbh/lib/transaction_handlers/app_nict_handler.rb +13 -0
- data/sipper_test/test_controllers/nict_tcbh/uac_nict_tcbh_controller.rb +26 -0
- data/sipper_test/test_controllers/nict_tcbh/uas_nict_tcbh_controller.rb +20 -0
- data/sipper_test/test_controllers/state_machine_based/lib/CreditControl.sm +43 -0
- data/sipper_test/test_controllers/state_machine_based/lib/CreditControl_sm.rb +194 -0
- data/sipper_test/test_controllers/state_machine_based/order.yaml +1 -0
- data/sipper_test/test_controllers/state_machine_based/uac_message_controller.rb +34 -0
- data/sipper_test/test_controllers/state_machine_based/uas_message_controller.rb +44 -0
- data/sipper_test/test_controllers/stray_message/lib/sipper_extensions/my_stray_handler.rb +9 -0
- data/sipper_test/test_controllers/stray_message/stray_uac_controller.rb +24 -0
- data/sipper_test/test_controllers/stray_message/stray_uas_controller.rb +31 -0
- data/sipper_test/test_controllers/string/order.yaml +1 -0
- data/sipper_test/test_controllers/string/uac_controller.rb +29 -0
- data/sipper_test/test_controllers/string/uas_controller.rb +22 -0
- data/sipper_test/test_controllers/test_controller.rb +24 -0
- data/sipper_test/test_detached_session1.rb +78 -0
- data/sipper_test/test_dialog_routes.rb +139 -0
- data/sipper_test/test_digest_challenge1.rb +89 -0
- data/sipper_test/test_digest_challenge2.rb +90 -0
- data/sipper_test/test_dynamic_parse.rb +249 -0
- data/sipper_test/test_empty_sdp.rb +89 -0
- data/sipper_test/test_ete.rb +37 -0
- data/sipper_test/test_expectation_parser.rb +76 -0
- data/sipper_test/test_extensions.rb +28 -0
- data/sipper_test/test_freeze.rb +81 -0
- data/sipper_test/test_generated.rb +90 -0
- data/sipper_test/test_header_parameters.rb +75 -0
- data/sipper_test/test_header_parse.rb +141 -0
- data/sipper_test/test_http_client1.rb +84 -0
- data/sipper_test/test_http_client2.rb +90 -0
- data/sipper_test/test_ict_with_timeout.rb +62 -0
- data/sipper_test/test_in_dialog_request.rb +61 -0
- data/sipper_test/test_inline_controller.rb +67 -0
- data/sipper_test/test_invite_client_transaction.rb +272 -0
- data/sipper_test/test_invite_replace.rb +147 -0
- data/sipper_test/test_invite_retransmission.rb +90 -0
- data/sipper_test/test_invite_server_transaction.rb +208 -0
- data/sipper_test/test_lower_cseq.rb +79 -0
- data/sipper_test/test_media.rb +52 -0
- data/sipper_test/test_message.rb +392 -0
- data/sipper_test/test_method_specific_response_handling.rb +81 -0
- data/sipper_test/test_multi_homed1.rb +127 -0
- data/sipper_test/test_multi_homed2.rb +109 -0
- data/sipper_test/test_multi_homed_duplicate.rb +87 -0
- data/sipper_test/test_multi_homed_with_detached.rb +88 -0
- data/sipper_test/test_multiple.rb +49 -0
- data/sipper_test/test_multiple_contacts.rb +89 -0
- data/sipper_test/test_non2xx_retransmission_with_ist.rb +87 -0
- data/sipper_test/test_non_invite_client_transaction.rb +210 -0
- data/sipper_test/test_non_invite_retransmission.rb +91 -0
- data/sipper_test/test_non_invite_server_transaction.rb +202 -0
- data/sipper_test/test_offer_answer_prack.rb +103 -0
- data/sipper_test/test_pickup.rb +258 -0
- data/sipper_test/test_prack.rb +105 -0
- data/sipper_test/test_prack_store_and_dispatch.rb +101 -0
- data/sipper_test/test_prack_timer.rb +105 -0
- data/sipper_test/test_ps_sipper_map.rb +56 -0
- data/sipper_test/test_re_invite_uas_ongoing_ict.rb +81 -0
- data/sipper_test/test_re_invite_uas_ongoing_ist.rb +84 -0
- data/sipper_test/test_re_invite_with_ongoing_ict.rb +101 -0
- data/sipper_test/test_re_invite_with_ongoing_ist.rb +89 -0
- data/sipper_test/test_recorder_swap.rb +157 -0
- data/sipper_test/test_refer.rb +121 -0
- data/sipper_test/test_registeration_clearing.rb +97 -0
- data/sipper_test/test_registrar.rb +109 -0
- data/sipper_test/test_registration_controller.rb +73 -0
- data/sipper_test/test_registration_timeout.rb +90 -0
- data/sipper_test/test_remote_controller.rb +39 -0
- data/sipper_test/test_remote_target_update_on2xx.rb +140 -0
- data/sipper_test/test_request.rb +106 -0
- data/sipper_test/test_response.rb +40 -0
- data/sipper_test/test_response_without_to_tag.rb +92 -0
- data/sipper_test/test_rport.rb +88 -0
- data/sipper_test/test_sdp.rb +91 -0
- data/sipper_test/test_sdp_parser.rb +145 -0
- data/sipper_test/test_session.rb +276 -0
- data/sipper_test/test_session_callback_handler.rb +68 -0
- data/sipper_test/test_session_lifetime.rb +66 -0
- data/sipper_test/test_session_manager.rb +141 -0
- data/sipper_test/test_session_recorder.rb +145 -0
- data/sipper_test/test_session_state_user_defined.rb +84 -0
- data/sipper_test/test_session_states.rb +91 -0
- data/sipper_test/test_simple_dialog_state.rb +86 -0
- data/sipper_test/test_simple_re_invite.rb +86 -0
- data/sipper_test/test_sip_uri.rb +234 -0
- data/sipper_test/test_sipper_util.rb +45 -0
- data/sipper_test/test_smc_controller.rb +17 -0
- data/sipper_test/test_smoke.rb +80 -0
- data/sipper_test/test_stray.rb +28 -0
- data/sipper_test/test_stray_inline.rb +89 -0
- data/sipper_test/test_stray_res_acked.rb +103 -0
- data/sipper_test/test_stray_respond.rb +104 -0
- data/sipper_test/test_stray_retry.rb +92 -0
- data/sipper_test/test_stray_retry_failure.rb +93 -0
- data/sipper_test/test_stray_retry_initial.rb +100 -0
- data/sipper_test/test_strict_router_with_angled.rb +84 -0
- data/sipper_test/test_string_record.rb +31 -0
- data/sipper_test/test_subscribe_notify.rb +141 -0
- data/sipper_test/test_subscribe_notify_client_timeout.rb +158 -0
- data/sipper_test/test_subscribe_notify_dialog.rb +146 -0
- data/sipper_test/test_subscribe_notify_expires.rb +155 -0
- data/sipper_test/test_subscribe_notify_multiple_subscription.rb +157 -0
- data/sipper_test/test_subscribe_notify_server_timeout.rb +144 -0
- data/sipper_test/test_subsequent_unsent.rb +88 -0
- data/sipper_test/test_target_refresh_proxy_detached.rb +128 -0
- data/sipper_test/test_target_refresh_proxy_udp.rb +130 -0
- data/sipper_test/test_target_refresh_rr_proxy_udp.rb +133 -0
- data/sipper_test/test_target_refresh_with_new_port.rb +158 -0
- data/sipper_test/test_target_refresh_with_proxy1.rb +113 -0
- data/sipper_test/test_target_refresh_with_rr_update_proxy.rb +145 -0
- data/sipper_test/test_target_refresh_with_update_proxy.rb +144 -0
- data/sipper_test/test_target_refresh_with_update_proxy2.rb +139 -0
- data/sipper_test/test_timer_manager.rb +71 -0
- data/sipper_test/test_timer_task.rb +60 -0
- data/sipper_test/test_transport_handler.rb +19 -0
- data/sipper_test/test_transport_multi_handler.rb +18 -0
- data/sipper_test/test_udp_transport.rb +119 -0
- data/sipper_test/test_unparsed.rb +70 -0
- data/sipper_test/test_validations.rb +69 -0
- data/sipper_test/test_with_rr_proxy.rb +111 -0
- data/sipper_test/testmediacontroller.rb +71 -0
- data/sipper_test/tracing.rb +23 -0
- data/sipper_test/transaction_test_helper.rb +176 -0
- data/sipper_test/transport_filters.rb +26 -0
- data/sipper_test/ts_sipper.rb +91 -0
- data/sipper_test/ts_smoke.rb +3 -0
- data/sipper_test/tt.cmd +20 -0
- metadata +455 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
ruby test_address_header.rb
|
|
2
|
+
ruby test_b2bua1.rb
|
|
3
|
+
ruby test_b2bua2.rb
|
|
4
|
+
ruby test_b2bua3.rb
|
|
5
|
+
ruby test_base_controller.rb
|
|
6
|
+
ruby test_base_transport.rb
|
|
7
|
+
ruby test_cancel.rb
|
|
8
|
+
ruby test_cancel_after2xx.rb
|
|
9
|
+
ruby test_cancel_retransmission.rb
|
|
10
|
+
ruby test_cancel_with481.rb
|
|
11
|
+
ruby test_cancel_with487.rb
|
|
12
|
+
ruby test_cancel_with_ist_without_nist.rb
|
|
13
|
+
ruby test_cancel_with_nist.rb
|
|
14
|
+
ruby test_cancel_without487.rb
|
|
15
|
+
ruby test_command_element.rb
|
|
16
|
+
ruby test_compact_converter.rb
|
|
17
|
+
ruby test_controller_class_loader.rb
|
|
18
|
+
ruby test_controller_selector.rb
|
|
19
|
+
ruby test_controller_using_compact_headers.rb
|
|
20
|
+
ruby test_controller_using_header_order.rb
|
|
21
|
+
ruby test_controller_using_ict.rb
|
|
22
|
+
ruby test_controller_using_ict_with_non_success.rb
|
|
23
|
+
ruby test_controller_using_ict_with_tcbh.rb
|
|
24
|
+
ruby test_controller_using_ict_with_tcbh_no_action.rb
|
|
25
|
+
ruby test_controller_using_ist.rb
|
|
26
|
+
ruby test_controller_using_ist_with_tcbh.rb
|
|
27
|
+
ruby test_controller_using_nict.rb
|
|
28
|
+
ruby test_controller_using_nict_with_tcbh.rb
|
|
29
|
+
ruby test_controller_using_nist.rb
|
|
30
|
+
ruby test_controller_using_pre_existing_rs0.rb
|
|
31
|
+
ruby test_controller_using_pre_existing_rs1.rb
|
|
32
|
+
ruby test_controller_using_pre_existing_rs2.rb
|
|
33
|
+
ruby test_controller_using_route_set.rb
|
|
34
|
+
ruby test_detached_session1.rb
|
|
35
|
+
ruby test_dialog_routes.rb
|
|
36
|
+
ruby test_digest_challenge1.rb
|
|
37
|
+
ruby test_digest_challenge2.rb
|
|
38
|
+
ruby test_dynamic_parse.rb
|
|
39
|
+
ruby test_ete.rb
|
|
40
|
+
ruby test_expectation_parser.rb
|
|
41
|
+
ruby test_extensions.rb
|
|
42
|
+
ruby test_generated.rb
|
|
43
|
+
ruby test_header_parameters.rb
|
|
44
|
+
ruby test_header_parse.rb
|
|
45
|
+
ruby test_ict_with_timeout.rb
|
|
46
|
+
ruby test_in_dialog_request.rb
|
|
47
|
+
ruby test_inline_controller.rb
|
|
48
|
+
ruby test_invite_client_transaction.rb
|
|
49
|
+
ruby test_invite_retransmission.rb
|
|
50
|
+
ruby test_invite_server_transaction.rb
|
|
51
|
+
ruby test_lower_cseq.rb
|
|
52
|
+
ruby test_media.rb
|
|
53
|
+
ruby test_message.rb
|
|
54
|
+
ruby test_multiple.rb
|
|
55
|
+
ruby test_non2xx_retransmission_with_ist.rb
|
|
56
|
+
ruby test_non_invite_client_transaction.rb
|
|
57
|
+
ruby test_non_invite_retransmission.rb
|
|
58
|
+
ruby test_non_invite_server_transaction.rb
|
|
59
|
+
ruby test_ps_sipper_map.rb
|
|
60
|
+
ruby test_re_invite_uas_ongoing_ict.rb
|
|
61
|
+
ruby test_re_invite_uas_ongoing_ist.rb
|
|
62
|
+
ruby test_re_invite_with_ongoing_ict.rb
|
|
63
|
+
ruby test_re_invite_with_ongoing_ist.rb
|
|
64
|
+
ruby test_recorder_swap.rb
|
|
65
|
+
ruby test_registration_controller.rb
|
|
66
|
+
ruby test_remote_controller.rb
|
|
67
|
+
ruby test_request.rb
|
|
68
|
+
ruby test_response.rb
|
|
69
|
+
ruby test_sdp.rb
|
|
70
|
+
ruby test_sdp_parser.rb
|
|
71
|
+
ruby test_session.rb
|
|
72
|
+
ruby test_session_callback_handler.rb
|
|
73
|
+
ruby test_session_lifetime.rb
|
|
74
|
+
ruby test_session_manager.rb
|
|
75
|
+
ruby test_session_recorder.rb
|
|
76
|
+
ruby test_simple_re_invite.rb
|
|
77
|
+
ruby test_sipper_util.rb
|
|
78
|
+
ruby test_smc_controller.rb
|
|
79
|
+
ruby test_smoke.rb
|
|
80
|
+
ruby test_stray.rb
|
|
81
|
+
ruby test_stray_inline.rb
|
|
82
|
+
ruby test_stray_res_acked.rb
|
|
83
|
+
ruby test_stray_respond.rb
|
|
84
|
+
ruby test_stray_retry.rb
|
|
85
|
+
ruby test_stray_retry_failure.rb
|
|
86
|
+
ruby test_stray_retry_initial.rb
|
|
87
|
+
ruby test_string_record.rb
|
|
88
|
+
ruby test_subsequent_unsent.rb
|
|
89
|
+
ruby test_timer_manager.rb
|
|
90
|
+
ruby test_timer_task.rb
|
|
91
|
+
ruby test_transport_handler.rb
|
|
92
|
+
ruby test_transport_multi_handler.rb
|
|
93
|
+
ruby test_udp_transport.rb
|
|
94
|
+
ruby test_validations.rb
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
unless $ULOGNAME
|
|
2
|
+
x = File.basename($0)[0...-3]
|
|
3
|
+
$ULOGNAME = '_'+x unless x =~/rake_test_loader/
|
|
4
|
+
end
|
|
5
|
+
require 'base_test_case'
|
|
6
|
+
require 'bin/common'
|
|
7
|
+
|
|
8
|
+
class SipTestCase < BaseTestCase
|
|
9
|
+
include SipperAssertions
|
|
10
|
+
|
|
11
|
+
attr_accessor :current_controller
|
|
12
|
+
|
|
13
|
+
@@now_running = "SipTestCase"
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
super
|
|
17
|
+
Thread.current[:name] = "TestMainThread"+name
|
|
18
|
+
if @@now_running != self.class.name
|
|
19
|
+
@@now_running = self.class.name
|
|
20
|
+
setup_once
|
|
21
|
+
end
|
|
22
|
+
@grty = SIP::Locator[:Sth].granularity
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def setup_once
|
|
27
|
+
SIP::Locator[:Sipper].stop if SIP::Locator[:Sipper].running if SIP::Locator[:Sipper]
|
|
28
|
+
SipperConfigurator[:LocalTestPort] ||= SipperUtil::Common.in_project_dir() ? SipperConfigurator[:LocalSipperPort]||5060 : 5066
|
|
29
|
+
if SipperConfigurator[:LocalTestPort].class == Array
|
|
30
|
+
s = SIP::Sipper.new(:Ports=>SipperConfigurator[:LocalTestPort])
|
|
31
|
+
else
|
|
32
|
+
s = SIP::Sipper.new(:Ports=>[SipperConfigurator[:LocalTestPort]])
|
|
33
|
+
end
|
|
34
|
+
s.start
|
|
35
|
+
@grty = SIP::Locator[:Sth].granularity
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Define the controller(s) specified in the string.
|
|
39
|
+
def define_controller_from(str)
|
|
40
|
+
SIP::Locator[:Sipper].load_controller(str)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def set_controller(name)
|
|
44
|
+
@current_controller = SIP::Locator[:Cs].get_controller(name)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def start_named_controller(name, in_mem_rec=false)
|
|
49
|
+
set_controller(name)
|
|
50
|
+
start_controller(in_mem_rec)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def start_controller(in_mem_rec=false)
|
|
54
|
+
start_the_set_controller(in_mem_rec)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def start_the_set_controller(in_mem_rec)
|
|
58
|
+
raise RuntimeError, "No controller set" unless @current_controller
|
|
59
|
+
@rio = StringIO.new if in_mem_rec
|
|
60
|
+
@current_controller.start { @rio }
|
|
61
|
+
end
|
|
62
|
+
protected :start_the_set_controller
|
|
63
|
+
|
|
64
|
+
def get_neutral_recording(idx=0)
|
|
65
|
+
neutral_files = Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_neutral")).sort
|
|
66
|
+
SessionRecorder.load(neutral_files[idx])
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# The "in" recording is special in such that the UAS works in the context of a worker
|
|
70
|
+
# thread. There is no easy way to signal a waiting DrivenSipTestCase so in this case
|
|
71
|
+
# we rely on a File Lock for the recording file or mutex signaling
|
|
72
|
+
def get_in_recording(idx=0)
|
|
73
|
+
str = File.join(SipperConfigurator[:SessionRecordPath], "*_in")
|
|
74
|
+
# in_files = Dir.glob(str).sort{|a,b| File.ctime(a)<=>File.ctime(b)}
|
|
75
|
+
|
|
76
|
+
in_files = Dir.glob(str).sort
|
|
77
|
+
SessionRecorder.load(in_files[idx])
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def get_out_recording(idx=0)
|
|
81
|
+
if @rio
|
|
82
|
+
@rio.rewind
|
|
83
|
+
SessionRecorder.load( @rio )
|
|
84
|
+
else
|
|
85
|
+
str = File.join(SipperConfigurator[:SessionRecordPath], "*_out")
|
|
86
|
+
out_files = Dir.glob(str).sort
|
|
87
|
+
#out_files = Dir.glob(str).sort{|a,b| File.ctime(a)<=>File.ctime(b)}
|
|
88
|
+
SessionRecorder.load(out_files[idx])
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def teardown
|
|
95
|
+
|
|
96
|
+
Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_in")).each {|f| File.delete(f)}
|
|
97
|
+
Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_out")).each {|f| File.delete(f)}
|
|
98
|
+
Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_neutral")).each {|f| File.delete(f)}
|
|
99
|
+
SessionManager.clean_all
|
|
100
|
+
super
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
|
|
2
|
+
require 'driven_sip_test_case'
|
|
3
|
+
|
|
4
|
+
class Test2xxRetransmission < DrivenSipTestCase
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
super
|
|
8
|
+
str = <<-EOF
|
|
9
|
+
|
|
10
|
+
require 'sip_test_driver_controller'
|
|
11
|
+
|
|
12
|
+
module Test2xxRetransmission_SipInline
|
|
13
|
+
class Uas2xxController < SIP::SipTestDriverController
|
|
14
|
+
|
|
15
|
+
transaction_usage :use_transactions=>false
|
|
16
|
+
|
|
17
|
+
t2xx_usage true
|
|
18
|
+
|
|
19
|
+
t2xx_timers :Start=>100
|
|
20
|
+
|
|
21
|
+
session_timer 500
|
|
22
|
+
|
|
23
|
+
def on_invite(session)
|
|
24
|
+
logd("Received INVITE in #{name}")
|
|
25
|
+
session.local_tag = 6 #todo differentiate automatically on the same container somehow
|
|
26
|
+
r = session.create_response(200, "OK")
|
|
27
|
+
session.send(r)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def on_ack(session)
|
|
31
|
+
session.invalidate
|
|
32
|
+
session.flow_completed_for("Test2xxRetransmission")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def order
|
|
36
|
+
0
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class Uac2xxController < SIP::SipTestDriverController
|
|
41
|
+
transaction_usage :use_transactions=>false
|
|
42
|
+
session_timer 500
|
|
43
|
+
|
|
44
|
+
def start
|
|
45
|
+
r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
|
|
46
|
+
u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
|
|
47
|
+
u.send(r)
|
|
48
|
+
logd("Sent a new INVITE from #{name}")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def on_success_res(session)
|
|
52
|
+
logd("Received response in #{name}")
|
|
53
|
+
if session['act']
|
|
54
|
+
session.create_and_send_ack
|
|
55
|
+
session.invalidate
|
|
56
|
+
else
|
|
57
|
+
session['act'] = true
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
EOF
|
|
64
|
+
define_controller_from(str)
|
|
65
|
+
set_controller("Test2xxRetransmission_SipInline::Uac2xxController")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def test_2xx_retransmissions
|
|
70
|
+
self.expected_flow = ["> INVITE","< 200 {2,}", "> ACK"]
|
|
71
|
+
start_controller
|
|
72
|
+
verify_call_flow(:out)
|
|
73
|
+
self.expected_flow = ["< INVITE", "> 200 {2,2}", "< ACK"]
|
|
74
|
+
|
|
75
|
+
verify_call_flow(:in)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
|
|
2
|
+
require 'driven_sip_test_case'
|
|
3
|
+
|
|
4
|
+
class Test2xxRetransmissionWithLimit < DrivenSipTestCase
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
super
|
|
8
|
+
str = <<-EOF
|
|
9
|
+
|
|
10
|
+
require 'sip_test_driver_controller'
|
|
11
|
+
|
|
12
|
+
module SipInline
|
|
13
|
+
class Uas2xxLimitController < SIP::SipTestDriverController
|
|
14
|
+
|
|
15
|
+
transaction_usage :use_transactions=>false
|
|
16
|
+
|
|
17
|
+
t2xx_usage true
|
|
18
|
+
|
|
19
|
+
# increased by a factor of 2
|
|
20
|
+
t2xx_timers :Start=>200, :Cap=>400, :Limit=>1500
|
|
21
|
+
|
|
22
|
+
session_timer 100
|
|
23
|
+
|
|
24
|
+
def on_invite(session)
|
|
25
|
+
logd("Received INVITE in #{name}")
|
|
26
|
+
session.local_tag = 7
|
|
27
|
+
r = session.create_response(200, "OK")
|
|
28
|
+
session.send(r)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def no_ack_received(session)
|
|
32
|
+
session.do_record("NO_ACK")
|
|
33
|
+
session.invalidate
|
|
34
|
+
session.flow_completed_for("Test2xxRetransmissionWithLimit")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def order
|
|
38
|
+
0
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
class Uac2xxLimitController < SIP::SipTestDriverController
|
|
43
|
+
transaction_usage :use_transactions=>false
|
|
44
|
+
|
|
45
|
+
def start
|
|
46
|
+
r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
|
|
47
|
+
u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
|
|
48
|
+
u.send(r)
|
|
49
|
+
logd("Sent a new INVITE from #{name}")
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def on_success_res(session)
|
|
53
|
+
if session['count']
|
|
54
|
+
session['count'] = session['count']+1
|
|
55
|
+
session.invalidate if session['count'] == 4
|
|
56
|
+
else
|
|
57
|
+
session['count'] = 1
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
EOF
|
|
65
|
+
define_controller_from(str)
|
|
66
|
+
set_controller("SipInline::Uac2xxLimitController")
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_2xx_retransmission_timeout
|
|
71
|
+
self.expected_flow = ["> INVITE","< 200 {4,5}"]
|
|
72
|
+
start_controller
|
|
73
|
+
verify_call_flow(:out)
|
|
74
|
+
self.expected_flow = ["< INVITE", "> 200 {4,5}", "! NO_ACK"]
|
|
75
|
+
verify_call_flow(:in)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
|
|
2
|
+
require 'driven_sip_test_case'
|
|
3
|
+
|
|
4
|
+
class Test2xxRetransmissionWithNist < DrivenSipTestCase
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
super
|
|
8
|
+
str = <<-EOF
|
|
9
|
+
|
|
10
|
+
#-------- Transport Filters------------
|
|
11
|
+
|
|
12
|
+
require 'transport/base_transport'
|
|
13
|
+
module TransportHandlerForTestNonInvite2xxModule
|
|
14
|
+
class MyInTransportHandler < Transport::TransportIngressFilter
|
|
15
|
+
def do_filter(msg)
|
|
16
|
+
if msg =~ /200 OK/
|
|
17
|
+
# redefine the method
|
|
18
|
+
def do_filter(msg)
|
|
19
|
+
msg
|
|
20
|
+
end
|
|
21
|
+
return nil
|
|
22
|
+
else
|
|
23
|
+
msg
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
#--------- Controllers ---------------
|
|
31
|
+
|
|
32
|
+
require 'sip_test_driver_controller'
|
|
33
|
+
|
|
34
|
+
module SipInline
|
|
35
|
+
class UasNi2xxController < SIP::SipTestDriverController
|
|
36
|
+
|
|
37
|
+
transaction_usage :use_transactions=>true
|
|
38
|
+
|
|
39
|
+
session_timer #{@grty*5}
|
|
40
|
+
|
|
41
|
+
def on_message(session)
|
|
42
|
+
logd("Received MESSAGE in "+name)
|
|
43
|
+
session.do_record("MSG_RECVD")
|
|
44
|
+
r = session.create_response(200, "OK")
|
|
45
|
+
session.send(r)
|
|
46
|
+
session.invalidate(true)
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def order
|
|
52
|
+
0
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class UacNi2xxController < SIP::SipTestDriverController
|
|
57
|
+
transaction_usage :use_transactions=>true
|
|
58
|
+
transaction_timers :t1=>#{@grty*2}
|
|
59
|
+
|
|
60
|
+
def start
|
|
61
|
+
r = Request.create_initial("message", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
|
|
62
|
+
u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
|
|
63
|
+
u.send(r)
|
|
64
|
+
logd("Sent a new MESSAGE from " + name)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def on_success_res(session)
|
|
68
|
+
logd("Received response in #{name}")
|
|
69
|
+
session.invalidate(true)
|
|
70
|
+
session.flow_completed_for("Test2xxRetransmissionWithNist")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
EOF
|
|
76
|
+
define_controller_from(str)
|
|
77
|
+
set_controller("SipInline::UacNi2xxController")
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def test_2xx_retransmissions
|
|
82
|
+
self.expected_flow = ["> MESSAGE {2,2}", "< 200"]
|
|
83
|
+
start_controller
|
|
84
|
+
verify_call_flow(:out)
|
|
85
|
+
self.expected_flow = ["< MESSAGE", "! MSG_RECVD", "> 200", "< MESSAGE", "> 200"]
|
|
86
|
+
|
|
87
|
+
verify_call_flow(:in)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
end
|