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.
Files changed (326) hide show
  1. data/sipper/README.rb +26 -0
  2. data/sipper/b2bua_controller.rb +163 -0
  3. data/sipper/b2bua_session_mixin.rb +24 -0
  4. data/sipper/base_controller.rb +425 -0
  5. data/sipper/bin/common.rb +42 -0
  6. data/sipper/bin/generate.rb +70 -0
  7. data/sipper/bin/project.rb +44 -0
  8. data/sipper/bin/run.rb +85 -0
  9. data/sipper/bin/run_smoke.rb +8 -0
  10. data/sipper/config/log4r.xml +71 -0
  11. data/sipper/controller_class_loader.rb +29 -0
  12. data/sipper/controller_selector.rb +119 -0
  13. data/sipper/controllers/invite_controller.rb +30 -0
  14. data/sipper/controllers/order.yaml +3 -0
  15. data/sipper/custom_message.rb +4 -0
  16. data/sipper/detached_session.rb +11 -0
  17. data/sipper/docs/manual.txt +1621 -0
  18. data/sipper/generators/README +12 -0
  19. data/sipper/generators/gen_controller.rb +228 -0
  20. data/sipper/generators/gen_project.rb +45 -0
  21. data/sipper/generators/gen_test.rb +72 -0
  22. data/sipper/generators/project_template_dir/Rakefile +56 -0
  23. data/sipper/generators/project_template_dir/config/sipper.cfg +31 -0
  24. data/sipper/generators/project_template_dir/controllers/README.txt +2 -0
  25. data/sipper/generators/project_template_dir/dot_sipper.proj +2 -0
  26. data/sipper/generators/project_template_dir/logs/README.txt +2 -0
  27. data/sipper/generators/project_template_dir/tests/README.txt +2 -0
  28. data/sipper/lib/smc/statemap.rb +194 -0
  29. data/sipper/logs/dialog_info_store +0 -0
  30. data/sipper/logs/r.cmd +6 -0
  31. data/sipper/logs/r.sh +6 -0
  32. data/sipper/media/sipper_media_client.rb +268 -0
  33. data/sipper/media/sipper_media_event.rb +43 -0
  34. data/sipper/media/sipper_media_manager.rb +145 -0
  35. data/sipper/media/sipper_media_proxy.rb +60 -0
  36. data/sipper/media/sipper_offer_answer.rb +285 -0
  37. data/sipper/message.rb +512 -0
  38. data/sipper/modified_pattern_formatter.rb +119 -0
  39. data/sipper/proxy_controller.rb +143 -0
  40. data/sipper/registration.rb +52 -0
  41. data/sipper/request.rb +109 -0
  42. data/sipper/response.rb +123 -0
  43. data/sipper/ruby_ext/module.rb +27 -0
  44. data/sipper/ruby_ext/mutable_class.rb +17 -0
  45. data/sipper/ruby_ext/object.rb +38 -0
  46. data/sipper/ruby_ext/pqueue.rb +190 -0
  47. data/sipper/ruby_ext/snapshot.rb +201 -0
  48. data/sipper/ruby_ext/string.rb +18 -0
  49. data/sipper/ruby_ext/time.rb +9 -0
  50. data/sipper/run/run_sipper1.rb +28 -0
  51. data/sipper/run/run_sipper2.rb +56 -0
  52. data/sipper/sdp/sdp.rb +257 -0
  53. data/sipper/sdp/sdp_generator.rb +131 -0
  54. data/sipper/sdp/sdp_parser.rb +136 -0
  55. data/sipper/session.rb +1952 -0
  56. data/sipper/session_manager.rb +170 -0
  57. data/sipper/session_recorder.rb +190 -0
  58. data/sipper/session_state/DialogState.sm +54 -0
  59. data/sipper/session_state/DialogState_sm.rb +337 -0
  60. data/sipper/session_state/dialog_routes.rb +141 -0
  61. data/sipper/sip_headers/header.rb +632 -0
  62. data/sipper/sip_headers/sipuri.rb +352 -0
  63. data/sipper/sip_logger.rb +65 -0
  64. data/sipper/sip_message_router.rb +231 -0
  65. data/sipper/sip_test_driver_controller.rb +10 -0
  66. data/sipper/sipper.rb +329 -0
  67. data/sipper/sipper_assertions.rb +21 -0
  68. data/sipper/sipper_configurator.rb +376 -0
  69. data/sipper/sipper_http/sipper_http_request_dispatcher.rb +71 -0
  70. data/sipper/sipper_http/sipper_http_response.rb +25 -0
  71. data/sipper/stray_message_manager.rb +40 -0
  72. data/sipper/test_completion_signaling_helper.rb +77 -0
  73. data/sipper/transaction/Ict.sm +59 -0
  74. data/sipper/transaction/Ict_sm.rb +430 -0
  75. data/sipper/transaction/Ist.sm +74 -0
  76. data/sipper/transaction/Ist_sm.rb +460 -0
  77. data/sipper/transaction/Nict.sm +51 -0
  78. data/sipper/transaction/Nict_sm.rb +325 -0
  79. data/sipper/transaction/Nist.sm +59 -0
  80. data/sipper/transaction/Nist_sm.rb +356 -0
  81. data/sipper/transaction/invite_client_transaction.rb +274 -0
  82. data/sipper/transaction/invite_server_transaction.rb +319 -0
  83. data/sipper/transaction/non_invite_client_transaction.rb +230 -0
  84. data/sipper/transaction/non_invite_server_transaction.rb +263 -0
  85. data/sipper/transaction/state_machine_wrapper.rb +58 -0
  86. data/sipper/transaction/transaction.rb +212 -0
  87. data/sipper/transport/base_transport.rb +84 -0
  88. data/sipper/transport/rel_unrel.rb +19 -0
  89. data/sipper/transport/transport_and_route_resolver.rb +67 -0
  90. data/sipper/transport/udp_transport.rb +156 -0
  91. data/sipper/transport_manager.rb +33 -0
  92. data/sipper/udp_session.rb +17 -0
  93. data/sipper/util/command_element.rb +62 -0
  94. data/sipper/util/compact_converter.rb +50 -0
  95. data/sipper/util/counter.rb +26 -0
  96. data/sipper/util/digest/digest_authorizer.rb +204 -0
  97. data/sipper/util/expectation_parser.rb +164 -0
  98. data/sipper/util/locator.rb +31 -0
  99. data/sipper/util/message_fill.rb +58 -0
  100. data/sipper/util/persistence/ps_sipper_map.rb +63 -0
  101. data/sipper/util/persistence/sipper_map.rb +41 -0
  102. data/sipper/util/sipper_util.rb +305 -0
  103. data/sipper/util/timer/sip_timer_helper.rb +26 -0
  104. data/sipper/util/timer/timer_manager.rb +80 -0
  105. data/sipper/util/timer/timer_task.rb +56 -0
  106. data/sipper/util/validations.rb +44 -0
  107. data/sipper/version.rb +10 -0
  108. data/sipper_test/_test_media_uas.rb +79 -0
  109. data/sipper_test/base_test_case.rb +31 -0
  110. data/sipper_test/c_134.txt +7 -0
  111. data/sipper_test/driven_sip_test_case.rb +96 -0
  112. data/sipper_test/gold.txt +10 -0
  113. data/sipper_test/gold_res.txt +8 -0
  114. data/sipper_test/gold_sub.txt +9 -0
  115. data/sipper_test/hello_sipper.au +0 -0
  116. data/sipper_test/in_sipper.au +0 -0
  117. data/sipper_test/nonrr_proxy.rb +17 -0
  118. data/sipper_test/order_tests.yaml +4 -0
  119. data/sipper_test/rake_res.txt +399 -0
  120. data/sipper_test/rr_proxy.rb +17 -0
  121. data/sipper_test/run_test.cmd +94 -0
  122. data/sipper_test/sip_test_case.rb +104 -0
  123. data/sipper_test/test2xx_retransmission.rb +80 -0
  124. data/sipper_test/test2xx_retransmission_with_limit.rb +81 -0
  125. data/sipper_test/test2xx_retransmission_with_nist.rb +91 -0
  126. data/sipper_test/test2xx_retransmission_with_txns.rb +94 -0
  127. data/sipper_test/test_address_header.rb +66 -0
  128. data/sipper_test/test_b2bua1.rb +130 -0
  129. data/sipper_test/test_b2bua2.rb +120 -0
  130. data/sipper_test/test_b2bua3.rb +160 -0
  131. data/sipper_test/test_b2bua4.rb +130 -0
  132. data/sipper_test/test_base_controller.rb +110 -0
  133. data/sipper_test/test_base_transport.rb +37 -0
  134. data/sipper_test/test_cancel.rb +21 -0
  135. data/sipper_test/test_cancel_after2xx.rb +81 -0
  136. data/sipper_test/test_cancel_retransmission.rb +105 -0
  137. data/sipper_test/test_cancel_with481.rb +83 -0
  138. data/sipper_test/test_cancel_with487.rb +70 -0
  139. data/sipper_test/test_cancel_with_ist_without_nist.rb +99 -0
  140. data/sipper_test/test_cancel_with_nist.rb +84 -0
  141. data/sipper_test/test_cancel_without487.rb +77 -0
  142. data/sipper_test/test_command_element.rb +38 -0
  143. data/sipper_test/test_compact_converter.rb +33 -0
  144. data/sipper_test/test_controller_class_loader.rb +37 -0
  145. data/sipper_test/test_controller_selector.rb +53 -0
  146. data/sipper_test/test_controller_using_compact_headers.rb +74 -0
  147. data/sipper_test/test_controller_using_header_order.rb +85 -0
  148. data/sipper_test/test_controller_using_ict.rb +64 -0
  149. data/sipper_test/test_controller_using_ict_with_non_success.rb +72 -0
  150. data/sipper_test/test_controller_using_ict_with_tcbh.rb +24 -0
  151. data/sipper_test/test_controller_using_ict_with_tcbh_no_action.rb +24 -0
  152. data/sipper_test/test_controller_using_ist.rb +70 -0
  153. data/sipper_test/test_controller_using_ist_with_tcbh.rb +24 -0
  154. data/sipper_test/test_controller_using_nict.rb +115 -0
  155. data/sipper_test/test_controller_using_nict_with_tcbh.rb +24 -0
  156. data/sipper_test/test_controller_using_nist.rb +63 -0
  157. data/sipper_test/test_controller_using_pre_existing_rs0.rb +73 -0
  158. data/sipper_test/test_controller_using_pre_existing_rs1.rb +75 -0
  159. data/sipper_test/test_controller_using_pre_existing_rs2.rb +71 -0
  160. data/sipper_test/test_controller_using_route_set.rb +86 -0
  161. data/sipper_test/test_controller_with_sdp.rb +80 -0
  162. data/sipper_test/test_controllers/cancel/order.yaml +2 -0
  163. data/sipper_test/test_controllers/cancel/uac_cancel_controller.rb +35 -0
  164. data/sipper_test/test_controllers/cancel/uas_cancel_controller.rb +25 -0
  165. data/sipper_test/test_controllers/class_loading/ordered/first_ordered_controller.rb +5 -0
  166. data/sipper_test/test_controllers/class_loading/ordered/order.yaml +3 -0
  167. data/sipper_test/test_controllers/class_loading/ordered/recond_ordered_controller.rb +6 -0
  168. data/sipper_test/test_controllers/class_loading/ordered/second_ordered_controller.rb +6 -0
  169. data/sipper_test/test_controllers/class_loading/unordered/first_unordered_controller.rb +7 -0
  170. data/sipper_test/test_controllers/class_loading/unordered/second_unordered_controller.rb +6 -0
  171. data/sipper_test/test_controllers/ctrl_trhandler/lib/transport_filters/my_transport_handler.rb +22 -0
  172. data/sipper_test/test_controllers/ctrl_trhandler/uac_tr_handler_controller.rb +27 -0
  173. data/sipper_test/test_controllers/ctrl_trhandler/uas_tr_handler_controller.rb +21 -0
  174. data/sipper_test/test_controllers/ete/order.yaml +1 -0
  175. data/sipper_test/test_controllers/ete/uac_controller.rb +39 -0
  176. data/sipper_test/test_controllers/ete/uas_controller.rb +34 -0
  177. data/sipper_test/test_controllers/extensions/extension_uac_controller.rb +24 -0
  178. data/sipper_test/test_controllers/extensions/extension_uas_controller.rb +35 -0
  179. data/sipper_test/test_controllers/extensions/lib/sipper_extensions/my_from_extension.rb +16 -0
  180. data/sipper_test/test_controllers/ict_tcbh/lib/transaction_handlers/app_ict_handler.rb +23 -0
  181. data/sipper_test/test_controllers/ict_tcbh/uac_ict_tcbh_controller.rb +27 -0
  182. data/sipper_test/test_controllers/ict_tcbh/uac_ict_tcbh_no_action_controller.rb +28 -0
  183. data/sipper_test/test_controllers/ict_tcbh/uas_ict_tcbh_controller.rb +29 -0
  184. data/sipper_test/test_controllers/ict_tcbh/uas_ict_tcbh_no_action_controller.rb +31 -0
  185. data/sipper_test/test_controllers/ist_tcbh/lib/app_ist_handler.rb +13 -0
  186. data/sipper_test/test_controllers/ist_tcbh/uac_ist_tcbh_controller.rb +22 -0
  187. data/sipper_test/test_controllers/ist_tcbh/uas_ist_tcbh_controller.rb +31 -0
  188. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/in_order.yaml +2 -0
  189. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/my_transport_handler1.rb +21 -0
  190. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/my_transport_handler2.rb +21 -0
  191. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/out_order.yaml +2 -0
  192. data/sipper_test/test_controllers/multi_trhandlers/uac_multi_tr_handler_controller.rb +27 -0
  193. data/sipper_test/test_controllers/multi_trhandlers/uas_multi_tr_handler_controller.rb +29 -0
  194. data/sipper_test/test_controllers/multiple/lib/blank_test.rb +2 -0
  195. data/sipper_test/test_controllers/multiple/uac_info_controller.rb +21 -0
  196. data/sipper_test/test_controllers/multiple/uac_msg_controller.rb +20 -0
  197. data/sipper_test/test_controllers/multiple/uas_info_controller.rb +15 -0
  198. data/sipper_test/test_controllers/multiple/uas_msg_controller.rb +14 -0
  199. data/sipper_test/test_controllers/nict_tcbh/lib/transaction_handlers/app_nict_handler.rb +13 -0
  200. data/sipper_test/test_controllers/nict_tcbh/uac_nict_tcbh_controller.rb +26 -0
  201. data/sipper_test/test_controllers/nict_tcbh/uas_nict_tcbh_controller.rb +20 -0
  202. data/sipper_test/test_controllers/state_machine_based/lib/CreditControl.sm +43 -0
  203. data/sipper_test/test_controllers/state_machine_based/lib/CreditControl_sm.rb +194 -0
  204. data/sipper_test/test_controllers/state_machine_based/order.yaml +1 -0
  205. data/sipper_test/test_controllers/state_machine_based/uac_message_controller.rb +34 -0
  206. data/sipper_test/test_controllers/state_machine_based/uas_message_controller.rb +44 -0
  207. data/sipper_test/test_controllers/stray_message/lib/sipper_extensions/my_stray_handler.rb +9 -0
  208. data/sipper_test/test_controllers/stray_message/stray_uac_controller.rb +24 -0
  209. data/sipper_test/test_controllers/stray_message/stray_uas_controller.rb +31 -0
  210. data/sipper_test/test_controllers/string/order.yaml +1 -0
  211. data/sipper_test/test_controllers/string/uac_controller.rb +29 -0
  212. data/sipper_test/test_controllers/string/uas_controller.rb +22 -0
  213. data/sipper_test/test_controllers/test_controller.rb +24 -0
  214. data/sipper_test/test_detached_session1.rb +78 -0
  215. data/sipper_test/test_dialog_routes.rb +139 -0
  216. data/sipper_test/test_digest_challenge1.rb +89 -0
  217. data/sipper_test/test_digest_challenge2.rb +90 -0
  218. data/sipper_test/test_dynamic_parse.rb +249 -0
  219. data/sipper_test/test_empty_sdp.rb +89 -0
  220. data/sipper_test/test_ete.rb +37 -0
  221. data/sipper_test/test_expectation_parser.rb +76 -0
  222. data/sipper_test/test_extensions.rb +28 -0
  223. data/sipper_test/test_freeze.rb +81 -0
  224. data/sipper_test/test_generated.rb +90 -0
  225. data/sipper_test/test_header_parameters.rb +75 -0
  226. data/sipper_test/test_header_parse.rb +141 -0
  227. data/sipper_test/test_http_client1.rb +84 -0
  228. data/sipper_test/test_http_client2.rb +90 -0
  229. data/sipper_test/test_ict_with_timeout.rb +62 -0
  230. data/sipper_test/test_in_dialog_request.rb +61 -0
  231. data/sipper_test/test_inline_controller.rb +67 -0
  232. data/sipper_test/test_invite_client_transaction.rb +272 -0
  233. data/sipper_test/test_invite_replace.rb +147 -0
  234. data/sipper_test/test_invite_retransmission.rb +90 -0
  235. data/sipper_test/test_invite_server_transaction.rb +208 -0
  236. data/sipper_test/test_lower_cseq.rb +79 -0
  237. data/sipper_test/test_media.rb +52 -0
  238. data/sipper_test/test_message.rb +392 -0
  239. data/sipper_test/test_method_specific_response_handling.rb +81 -0
  240. data/sipper_test/test_multi_homed1.rb +127 -0
  241. data/sipper_test/test_multi_homed2.rb +109 -0
  242. data/sipper_test/test_multi_homed_duplicate.rb +87 -0
  243. data/sipper_test/test_multi_homed_with_detached.rb +88 -0
  244. data/sipper_test/test_multiple.rb +49 -0
  245. data/sipper_test/test_multiple_contacts.rb +89 -0
  246. data/sipper_test/test_non2xx_retransmission_with_ist.rb +87 -0
  247. data/sipper_test/test_non_invite_client_transaction.rb +210 -0
  248. data/sipper_test/test_non_invite_retransmission.rb +91 -0
  249. data/sipper_test/test_non_invite_server_transaction.rb +202 -0
  250. data/sipper_test/test_offer_answer_prack.rb +103 -0
  251. data/sipper_test/test_pickup.rb +258 -0
  252. data/sipper_test/test_prack.rb +105 -0
  253. data/sipper_test/test_prack_store_and_dispatch.rb +101 -0
  254. data/sipper_test/test_prack_timer.rb +105 -0
  255. data/sipper_test/test_ps_sipper_map.rb +56 -0
  256. data/sipper_test/test_re_invite_uas_ongoing_ict.rb +81 -0
  257. data/sipper_test/test_re_invite_uas_ongoing_ist.rb +84 -0
  258. data/sipper_test/test_re_invite_with_ongoing_ict.rb +101 -0
  259. data/sipper_test/test_re_invite_with_ongoing_ist.rb +89 -0
  260. data/sipper_test/test_recorder_swap.rb +157 -0
  261. data/sipper_test/test_refer.rb +121 -0
  262. data/sipper_test/test_registeration_clearing.rb +97 -0
  263. data/sipper_test/test_registrar.rb +109 -0
  264. data/sipper_test/test_registration_controller.rb +73 -0
  265. data/sipper_test/test_registration_timeout.rb +90 -0
  266. data/sipper_test/test_remote_controller.rb +39 -0
  267. data/sipper_test/test_remote_target_update_on2xx.rb +140 -0
  268. data/sipper_test/test_request.rb +106 -0
  269. data/sipper_test/test_response.rb +40 -0
  270. data/sipper_test/test_response_without_to_tag.rb +92 -0
  271. data/sipper_test/test_rport.rb +88 -0
  272. data/sipper_test/test_sdp.rb +91 -0
  273. data/sipper_test/test_sdp_parser.rb +145 -0
  274. data/sipper_test/test_session.rb +276 -0
  275. data/sipper_test/test_session_callback_handler.rb +68 -0
  276. data/sipper_test/test_session_lifetime.rb +66 -0
  277. data/sipper_test/test_session_manager.rb +141 -0
  278. data/sipper_test/test_session_recorder.rb +145 -0
  279. data/sipper_test/test_session_state_user_defined.rb +84 -0
  280. data/sipper_test/test_session_states.rb +91 -0
  281. data/sipper_test/test_simple_dialog_state.rb +86 -0
  282. data/sipper_test/test_simple_re_invite.rb +86 -0
  283. data/sipper_test/test_sip_uri.rb +234 -0
  284. data/sipper_test/test_sipper_util.rb +45 -0
  285. data/sipper_test/test_smc_controller.rb +17 -0
  286. data/sipper_test/test_smoke.rb +80 -0
  287. data/sipper_test/test_stray.rb +28 -0
  288. data/sipper_test/test_stray_inline.rb +89 -0
  289. data/sipper_test/test_stray_res_acked.rb +103 -0
  290. data/sipper_test/test_stray_respond.rb +104 -0
  291. data/sipper_test/test_stray_retry.rb +92 -0
  292. data/sipper_test/test_stray_retry_failure.rb +93 -0
  293. data/sipper_test/test_stray_retry_initial.rb +100 -0
  294. data/sipper_test/test_strict_router_with_angled.rb +84 -0
  295. data/sipper_test/test_string_record.rb +31 -0
  296. data/sipper_test/test_subscribe_notify.rb +141 -0
  297. data/sipper_test/test_subscribe_notify_client_timeout.rb +158 -0
  298. data/sipper_test/test_subscribe_notify_dialog.rb +146 -0
  299. data/sipper_test/test_subscribe_notify_expires.rb +155 -0
  300. data/sipper_test/test_subscribe_notify_multiple_subscription.rb +157 -0
  301. data/sipper_test/test_subscribe_notify_server_timeout.rb +144 -0
  302. data/sipper_test/test_subsequent_unsent.rb +88 -0
  303. data/sipper_test/test_target_refresh_proxy_detached.rb +128 -0
  304. data/sipper_test/test_target_refresh_proxy_udp.rb +130 -0
  305. data/sipper_test/test_target_refresh_rr_proxy_udp.rb +133 -0
  306. data/sipper_test/test_target_refresh_with_new_port.rb +158 -0
  307. data/sipper_test/test_target_refresh_with_proxy1.rb +113 -0
  308. data/sipper_test/test_target_refresh_with_rr_update_proxy.rb +145 -0
  309. data/sipper_test/test_target_refresh_with_update_proxy.rb +144 -0
  310. data/sipper_test/test_target_refresh_with_update_proxy2.rb +139 -0
  311. data/sipper_test/test_timer_manager.rb +71 -0
  312. data/sipper_test/test_timer_task.rb +60 -0
  313. data/sipper_test/test_transport_handler.rb +19 -0
  314. data/sipper_test/test_transport_multi_handler.rb +18 -0
  315. data/sipper_test/test_udp_transport.rb +119 -0
  316. data/sipper_test/test_unparsed.rb +70 -0
  317. data/sipper_test/test_validations.rb +69 -0
  318. data/sipper_test/test_with_rr_proxy.rb +111 -0
  319. data/sipper_test/testmediacontroller.rb +71 -0
  320. data/sipper_test/tracing.rb +23 -0
  321. data/sipper_test/transaction_test_helper.rb +176 -0
  322. data/sipper_test/transport_filters.rb +26 -0
  323. data/sipper_test/ts_sipper.rb +91 -0
  324. data/sipper_test/ts_smoke.rb +3 -0
  325. data/sipper_test/tt.cmd +20 -0
  326. metadata +455 -0
@@ -0,0 +1,24 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestControllerUsingIctWithTcbhNoAction < DrivenSipTestCase
5
+
6
+ def setup
7
+ SipperConfigurator[:ControllerPath] = File.join(SipperConfigurator[:SipperBasePath], "sipper_test", "test_controllers", "ict_tcbh")
8
+ super
9
+ end
10
+
11
+
12
+ def test_ict_controllers
13
+ orig = SipperConfigurator[:ProtocolCompliance]
14
+ SipperConfigurator[:ProtocolCompliance] = 'lax'
15
+ self.expected_flow = ["> INVITE", "< 400", "> ACK"]
16
+ start_named_controller("SipIct::UacIctTcbhNoActionController")
17
+ verify_call_flow(:out)
18
+ self.expected_flow = ["< INVITE", "> 400", "< ACK"]
19
+ verify_call_flow(:in)
20
+
21
+ SipperConfigurator[:ProtocolCompliance] = orig
22
+ end
23
+
24
+ end
@@ -0,0 +1,70 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestControllerUsingIst < DrivenSipTestCase
4
+
5
+ def setup
6
+ super
7
+ str = <<-EOF
8
+
9
+ require 'sip_test_driver_controller'
10
+
11
+ module SipInline
12
+ class UasIstController < SIP::SipTestDriverController
13
+
14
+ transaction_usage :use_transactions=>false, :use_ist=>true
15
+ transaction_timers :t1=>#{@grty*2}
16
+ session_timer #{@grty*10}
17
+ def on_invite(session)
18
+ logd("Received INVITE in #{name}")
19
+ session.local_tag = 5 #todo differentiate automatically on the same container somehow
20
+ r = session.create_response(400, "Bad Request")
21
+ session.send(r)
22
+ session.invalidate
23
+ end
24
+
25
+
26
+ def order
27
+ 0
28
+ end
29
+ end
30
+
31
+ class UacIstController < SIP::SipTestDriverController
32
+ transaction_usage :use_transactions=>false
33
+ session_timer #{@grty*20}
34
+
35
+ def start
36
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
37
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
38
+ u.send(r)
39
+ logd("Sent a new INVITE from #{name}")
40
+ end
41
+
42
+ def on_failure_res(session)
43
+ logd("Received response in #{name}")
44
+ if session['act']
45
+ session.create_and_send_ack # we are doing this because no ICT
46
+ session.invalidate
47
+ session.flow_completed_for("TestControllerUsingIst")
48
+ else
49
+ session['act'] = true
50
+ end
51
+ end
52
+
53
+ end
54
+ end
55
+ EOF
56
+ define_controller_from(str)
57
+ set_controller("SipInline::UacIstController")
58
+ end
59
+
60
+
61
+ def test_ist_controllers
62
+ self.expected_flow = ["> INVITE", "< 100", "< 400 {2,2}", "> ACK"]
63
+ start_controller
64
+ verify_call_flow(:out)
65
+ self.expected_flow = ["< INVITE", "> 100", "> 400 {2,2}", "< ACK {0,1}"] # 100 & 400 retrans sent by txn also ACK recvd by Txn
66
+ verify_call_flow(:in)
67
+ end
68
+
69
+ end
70
+
@@ -0,0 +1,24 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestControllerUsingIstWithTcbh < DrivenSipTestCase
4
+
5
+ def setup
6
+ SipperConfigurator[:ControllerPath] = File.join(SipperConfigurator[:SipperBasePath], "sipper_test", "test_controllers", "ist_tcbh")
7
+ super
8
+ end
9
+
10
+
11
+ def test_ist_controllers
12
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK"]
13
+ start_named_controller("SipIst::UacIstTcbhController")
14
+ verify_call_flow(:out)
15
+ self.expected_flow = ["< INVITE {1,}", "> 100", "> 200", "< ACK", "! Header_found"]
16
+ verify_call_flow(:in)
17
+
18
+ record_in = get_in_recording(0)
19
+ assert_header_value_in_recording_equals(record_in.get_recording[2], :test_response_header, "Sipper")
20
+ end
21
+
22
+ end
23
+
24
+
@@ -0,0 +1,115 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestControllerUsingNict < DrivenSipTestCase
4
+
5
+ def setup_once
6
+ super
7
+ str = <<-EOF
8
+ require 'sip_test_driver_controller'
9
+ module SipInline
10
+ class UasNictController < SIP::SipTestDriverController
11
+ transaction_usage :use_transactions=>false
12
+ def on_info(session)
13
+ if session['act']
14
+ _on_info_do_success(session)
15
+ elsif session.irequest.test_header.to_s == "1"
16
+ session['act'] = "yes" # do nothing
17
+ elsif session.irequest.test_header.to_s == "2"
18
+ _on_info_do_provisional(session)
19
+ end
20
+ end
21
+
22
+ def _on_info_do_success(session)
23
+ logd("Received INFO in #{name}")
24
+ session.local_tag = 8 #todo differentiate automatically on the same container somehow
25
+ r = session.create_response(200, "OK")
26
+ session.send(r)
27
+ session.invalidate
28
+ end
29
+
30
+ def _on_info_do_provisional(session)
31
+ logd("Received INFO in #{name}")
32
+ session['act'] = "yes"
33
+ r = session.create_response(100, "Trying")
34
+ session.send(r)
35
+ end
36
+
37
+ def order
38
+ 0
39
+ end
40
+
41
+ private :_on_info_do_success, :_on_info_do_provisional
42
+ end
43
+ class UacNictController1 < SIP::SipTestDriverController
44
+
45
+ transaction_usage :use_transactions=>false, :use_nict=>true
46
+ transaction_timers :t1=>#{@grty*2} # just want one retransmit
47
+ session_timer #{@grty*8}
48
+
49
+ def start
50
+ r = Request.create_initial("info", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
51
+ r.test_header = "1".to_s
52
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
53
+ u.send(r)
54
+ logd("Sent a new INFO from #{name}")
55
+ end
56
+
57
+
58
+ def on_success_res(session)
59
+ logd("Received response in #{name}")
60
+ # session.session_timer = 200 (alternatively used the directive)
61
+ session.invalidate
62
+ session.flow_completed_for("TestControllerUsingNict")
63
+ end
64
+ end
65
+
66
+ class UacNictController2 < SIP::SipTestDriverController
67
+
68
+ transaction_usage :use_transactions=>false, :use_nict=>true
69
+ transaction_timers :t1=>#{@grty*2} # just want one retransmit
70
+ session_timer #{@grty*8}
71
+
72
+ def start
73
+ r = Request.create_initial("info", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
74
+ r.test_header = "2".to_s
75
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
76
+ u.send(r)
77
+ logd("Sent a new INFO from #{name}")
78
+ end
79
+
80
+ def on_provisional(session)
81
+ logd("Provisional received in #{self}")
82
+ end
83
+ def on_success_res(session)
84
+ logd("Received response in #{name}")
85
+ session.invalidate
86
+ session.flow_completed_for("TestControllerUsingNict")
87
+ end
88
+ end
89
+
90
+
91
+ end
92
+ EOF
93
+ define_controller_from(str)
94
+ end
95
+
96
+
97
+ def test_nict_succ_controllers
98
+ self.expected_flow = ["> INFO {2,}", "< 200"]
99
+ start_named_controller("SipInline::UacNictController1")
100
+ verify_call_flow(:out)
101
+ self.expected_flow = ["< INFO {2,}", "> 200"] # one retrans
102
+ verify_call_flow(:in)
103
+ end
104
+
105
+ def test_nict_prov_succ_controllers
106
+ self.expected_flow = ["> INFO {1,}", "< 100", "> INFO {0,}", "< 200"]
107
+ start_named_controller("SipInline::UacNictController2")
108
+ verify_call_flow(:out)
109
+ self.expected_flow = ["< INFO", "> 100", "< INFO {0,}", "> 200"] # one retrans
110
+ verify_call_flow(:in)
111
+ end
112
+
113
+ end
114
+
115
+
@@ -0,0 +1,24 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestControllerUsingNictWithTcbh < DrivenSipTestCase
4
+
5
+ def setup
6
+ SipperConfigurator[:ControllerPath] = File.join(SipperConfigurator[:SipperBasePath], "sipper_test", "test_controllers", "nict_tcbh")
7
+ super
8
+ end
9
+
10
+
11
+ def test_nict_controllers
12
+ self.expected_flow = ["> INFO", "< 200", "> MESSAGE"]
13
+ start_named_controller("SipNict::UacNictTcbhController")
14
+ verify_call_flow(:out)
15
+ self.expected_flow = ["< INFO", "> 200", "< MESSAGE"]
16
+ verify_call_flow(:in)
17
+
18
+ record_in = get_in_recording(0)
19
+ assert_header_value_in_recording_equals(record_in.get_recording[0], :test_header, "Sipper")
20
+ end
21
+
22
+ end
23
+
24
+
@@ -0,0 +1,63 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestControllerUsingNist < DrivenSipTestCase
4
+
5
+ def setup
6
+ super
7
+ str = <<-EOF
8
+
9
+ require 'sip_test_driver_controller'
10
+
11
+ module SipInline
12
+ class UasNistController < SIP::SipTestDriverController
13
+
14
+ transaction_usage :use_transactions=>false, :use_nist=>true
15
+ transaction_timers :t1=>100
16
+
17
+ def on_info(session)
18
+ logd("Received INFO in #{name}")
19
+ session.local_tag = 5 #todo differentiate automatically on the same container somehow
20
+ r = session.create_response(400, "Bad Request")
21
+ session.send(r)
22
+ session.invalidate(true)
23
+ end
24
+
25
+
26
+ def order
27
+ 0
28
+ end
29
+ end
30
+
31
+ class UacNistController < SIP::SipTestDriverController
32
+ transaction_usage :use_transactions=>false
33
+ session_timer 200
34
+ def start
35
+ r = Request.create_initial("info", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
36
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
37
+ u.send(r)
38
+ logd("Sent a new INFO from #{name}")
39
+ end
40
+
41
+ def on_failure_res(session)
42
+ logd("Received response in #{name}")
43
+ session.invalidate
44
+ session.flow_completed_for("TestControllerUsingNist")
45
+ end
46
+ end
47
+ end
48
+ EOF
49
+ define_controller_from(str)
50
+ set_controller("SipInline::UacNistController")
51
+ end
52
+
53
+
54
+ def test_ist_controllers
55
+ self.expected_flow = ["> INFO", "< 400"]
56
+ start_controller
57
+ verify_call_flow(:out)
58
+ self.expected_flow = ["< INFO", "> 400"]
59
+ verify_call_flow(:in)
60
+ end
61
+
62
+ end
63
+
@@ -0,0 +1,73 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # Uses default configuration option for preloaded RS
5
+ class TestControllerUsingPreExistingRs0 < DrivenSipTestCase
6
+
7
+ def setup
8
+ super
9
+ str = <<-EOF
10
+ require 'sip_test_driver_controller'
11
+ module SipInline
12
+ class UasPeRs0Controller < SIP::SipTestDriverController
13
+
14
+ transaction_usage :use_transactions=>true
15
+
16
+ def on_invite(session)
17
+ logd("Received INVITE in #{name}")
18
+ session.irequest.routes.each do |r|
19
+ session.do_record(r.to_s)
20
+ end
21
+ session.respond_with(200)
22
+ end
23
+
24
+ def on_ack(session)
25
+ session.invalidate(true)
26
+ session.flow_completed_for("TestControllerUsingPreExistingRs0")
27
+ end
28
+
29
+ def order
30
+ 0
31
+ end
32
+ end
33
+
34
+ class UacPeRs0Controller < SIP::SipTestDriverController
35
+
36
+ transaction_usage :use_transactions=>true
37
+
38
+ def start
39
+ orig = SipperConfigurator[:PreExistingRouteSet]
40
+ SipperConfigurator[:PreExistingRouteSet] = ["sip:nk@sipper.com;lr", "sip:nk@goblet.com;lr"]
41
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
42
+ r = u.create_initial_request("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
43
+ u.send(r)
44
+ SipperConfigurator[:PreExistingRouteSet] = orig
45
+ logd("Sent a new INVITE from #{name}")
46
+ end
47
+
48
+ def on_success_res(session)
49
+ logd("Received response in #{name}")
50
+ session.request_with("ack")
51
+ session.invalidate(true)
52
+ end
53
+
54
+ end
55
+ end
56
+ EOF
57
+ define_controller_from(str)
58
+ set_controller("SipInline::UacPeRs0Controller")
59
+ end
60
+
61
+
62
+ def test_pers_controllers
63
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK"]
64
+ start_controller
65
+ verify_call_flow(:out)
66
+ self.expected_flow = ["< INVITE", "> 100", "! <sip:nk@sipper.com;lr>", "! <sip:nk@goblet.com;lr>", "> 200", "< ACK"]
67
+ verify_call_flow(:in)
68
+ end
69
+
70
+ end
71
+
72
+
73
+
@@ -0,0 +1,75 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # Override the configured pre-loaded routes using the controller directive.
5
+
6
+ class TestControllerUsingPreExistingRs1 < DrivenSipTestCase
7
+
8
+ def setup
9
+ super
10
+ str = <<-EOF
11
+ require 'sip_test_driver_controller'
12
+ module SipInline
13
+ class UasPeRs1Controller < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>true
16
+
17
+ def on_invite(session)
18
+ logd("Received INVITE in #{name}")
19
+ session.irequest.routes.each do |r|
20
+ session.do_record(r.to_s)
21
+ end
22
+ session.respond_with(200)
23
+ end
24
+
25
+ def on_ack(session)
26
+ session.invalidate(true)
27
+ session.flow_completed_for("TestControllerUsingPreExistingRs1")
28
+ end
29
+
30
+ def order
31
+ 0
32
+ end
33
+ end
34
+
35
+ class UacPeRs1Controller < SIP::SipTestDriverController
36
+
37
+ transaction_usage :use_transactions=>true
38
+ pre_existing_route_set ["sip:nasir@sipper.com;lr", "sip:nasir@goblet.com;lr"]
39
+
40
+
41
+ def start
42
+ orig = SipperConfigurator[:PreExistingRouteSet]
43
+ SipperConfigurator[:PreExistingRouteSet] = ["sip:nk@sipper.com;lr", "sip:nk@goblet.com;lr"]
44
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
45
+ r = u.create_initial_request("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
46
+ u.send(r)
47
+ SipperConfigurator[:PreExistingRouteSet] = orig
48
+ logd("Sent a new INVITE from #{name}")
49
+ end
50
+
51
+ def on_success_res(session)
52
+ logd("Received response in #{name}")
53
+ session.request_with("ack")
54
+ session.invalidate(true)
55
+ end
56
+
57
+ end
58
+ end
59
+ EOF
60
+ define_controller_from(str)
61
+ set_controller("SipInline::UacPeRs1Controller")
62
+ end
63
+
64
+
65
+ def test_pers_controllers
66
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK"]
67
+ start_controller
68
+ verify_call_flow(:out)
69
+ self.expected_flow = ["< INVITE", "> 100", "! <sip:nasir@sipper.com;lr>", "! <sip:nasir@goblet.com;lr>", "> 200", "< ACK"]
70
+ verify_call_flow(:in)
71
+ end
72
+
73
+ end
74
+
75
+