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,94 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class Test2xxRetransmissionWithTxns < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ Transport::BaseTransport.clear_all_filters
9
+ str = <<-EOF
10
+
11
+ #-------- Transport Filters------------
12
+
13
+ require 'transport/base_transport'
14
+
15
+ class MyInTransportHandler < Transport::TransportIngressFilter
16
+ def do_filter(msg)
17
+ if msg =~ /ACK/
18
+ # redefine the method
19
+ def do_filter(msg)
20
+ msg
21
+ end
22
+ return nil
23
+ else
24
+ msg
25
+ end
26
+ end
27
+ end
28
+
29
+
30
+ #--------- Controllers ---------------
31
+
32
+ require 'sip_test_driver_controller'
33
+
34
+ module SipInline
35
+ class Uas2xx1Controller < SIP::SipTestDriverController
36
+
37
+ transaction_usage :use_transactions=>true
38
+
39
+ t2xx_usage true
40
+
41
+
42
+ def on_invite(session)
43
+ logd("Received INVITE in #{name}")
44
+ r = session.create_response(200, "OK")
45
+ session.send(r)
46
+ end
47
+
48
+ def on_ack(session)
49
+ session.invalidate(true)
50
+ session.flow_completed_for("Test2xxRetransmissionWithTxns")
51
+ end
52
+
53
+ def order
54
+ 0
55
+ end
56
+ end
57
+
58
+ class Uac2xx1Controller < SIP::SipTestDriverController
59
+ transaction_usage :use_transactions=>true
60
+
61
+ def start
62
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
63
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
64
+ u.send(r)
65
+ logd("Sent a new INVITE from " + name)
66
+ end
67
+
68
+ def on_success_res(session)
69
+ logd("Received response in " + name)
70
+ session.create_and_send_ack
71
+ session.invalidate(true) if session['ack_sent']
72
+ session['ack_sent'] = true
73
+ end
74
+
75
+ end
76
+ end
77
+ EOF
78
+ define_controller_from(str)
79
+ set_controller("SipInline::Uac2xx1Controller")
80
+ end
81
+
82
+
83
+ def test_2xx_retransmissions
84
+ self.expected_flow = ["> INVITE","< 100", "< 200 ", "> ACK", "< 200", "> ACK"]
85
+ start_controller
86
+ verify_call_flow(:out)
87
+ self.expected_flow = ["< INVITE", "> 100", "> 200 {2,2}", "< ACK"]
88
+ verify_call_flow(:in)
89
+ end
90
+
91
+ end
92
+
93
+
94
+
@@ -0,0 +1,66 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestAddressHeader < DrivenSipTestCase
4
+
5
+ def setup
6
+ super
7
+ str = <<-EOF
8
+ require 'sip_test_driver_controller'
9
+ module SipInline
10
+ class UasAddressHeaderController < SIP::SipTestDriverController
11
+
12
+ transaction_usage :use_transactions=>true
13
+
14
+ def on_invite(session)
15
+ logd("Received INVITE in "+name)
16
+ r = session.create_response(200, "OK")
17
+ r.to.tag = "abc"
18
+ session.send(r)
19
+ end
20
+
21
+ def on_ack(session)
22
+ session.invalidate(true)
23
+ session.flow_completed_for("TestAddressHeader")
24
+ end
25
+
26
+ def order
27
+ 0
28
+ end
29
+ end
30
+
31
+ class UacAddressHeaderController < SIP::SipTestDriverController
32
+
33
+ transaction_usage :use_transactions=>true
34
+
35
+ def start
36
+ r = Request.create_initial("invite", "<sip:nasir@sipper.com>;myparam=value",
37
+ :p_session_record=>"msg-info", :from=>"Nasir Khan <sip:nasir@sipper.com>;myparam=value;tag=xyz")
38
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
39
+ u.send(r)
40
+ logd("Sent a new INVITE from #{name}")
41
+ end
42
+
43
+ def on_success_res(session)
44
+ logd("Received response in #{name}")
45
+ session.request_with('ack')
46
+ session.invalidate(true)
47
+ end
48
+
49
+ end
50
+ end
51
+ EOF
52
+ define_controller_from(str)
53
+ set_controller("SipInline::UacAddressHeaderController")
54
+ end
55
+
56
+
57
+ def test_address_headers
58
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK"]
59
+ start_controller
60
+ verify_call_flow(:out)
61
+ self.expected_flow = ["< INVITE", "> 100", "> 200", "< ACK"]
62
+ verify_call_flow(:in)
63
+ end
64
+
65
+ end
66
+
@@ -0,0 +1,130 @@
1
+
2
+ require 'driven_sip_test_case'
3
+ require 'sdp/sdp_generator'
4
+
5
+ class TestB2bua1 < DrivenSipTestCase
6
+
7
+ def setup
8
+ super
9
+ str = <<-EOF
10
+
11
+ require 'sip_test_driver_controller'
12
+ require 'b2bua_controller'
13
+
14
+ module TestB2bua1_SipInline
15
+ class UasB2buaController < SIP::SipTestDriverController
16
+
17
+ transaction_usage :use_transactions=>true
18
+
19
+ def on_invite(session)
20
+ session.name = "uas"
21
+ r = session.create_response(200)
22
+ r.sdp = SDP::SdpGenerator.make_no_media_sdp
23
+ session.send(r)
24
+ logd("Received INVITE sent a 200 from "+name)
25
+ end
26
+
27
+ def on_ack(session)
28
+ session.request_with("bye")
29
+ end
30
+
31
+ def on_success_res(session)
32
+ session.invalidate(true)
33
+ session.flow_completed_for("TestB2bua1")
34
+ end
35
+
36
+ def order
37
+ 1
38
+ end
39
+
40
+ def interested?(req)
41
+ req.p_controller == "uas"
42
+ end
43
+
44
+ end
45
+
46
+
47
+ class TestB2buaController < SIP::B2buaController
48
+
49
+ transaction_usage :use_transactions=>true
50
+
51
+ def on_invite(session)
52
+ session.name = "b2buas"
53
+ peer = get_or_create_peer_session(session, SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
54
+ peer.name = "b2buac"
55
+ r = create_b2bua_request(session)
56
+ r.p_controller = "uas"
57
+ r.p_session_record = nil
58
+ peer.send r
59
+ end
60
+
61
+
62
+ def on_success_res(session)
63
+ relay_response(session)
64
+ if session.iresponse.get_request_method == "BYE"
65
+ invalidate_sessions(session, true)
66
+ end
67
+ end
68
+
69
+ def on_ack(session)
70
+ relay_request(session)
71
+ end
72
+
73
+ def on_bye(session)
74
+ relay_request(session)
75
+ end
76
+
77
+ def interested?(req)
78
+ req.p_controller == "b2bua"
79
+ end
80
+
81
+ def order
82
+ 0
83
+ end
84
+
85
+ end
86
+
87
+
88
+ class UacB2buaController < SIP::SipTestDriverController
89
+
90
+ transaction_usage :use_transactions=>true
91
+
92
+ def start
93
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
94
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
95
+ u.name = "uac"
96
+ r.p_controller = "b2bua"
97
+ u.send(r)
98
+ logd("Sent a new INVITE from "+name)
99
+ end
100
+
101
+
102
+ def on_success_res(session)
103
+ session.request_with('ACK')
104
+ end
105
+
106
+ def on_bye(session)
107
+ session.respond_with(200)
108
+ session.invalidate(true)
109
+ end
110
+
111
+ end
112
+ end
113
+ EOF
114
+ define_controller_from(str)
115
+ set_controller("TestB2bua1_SipInline::UacB2buaController")
116
+ end
117
+
118
+
119
+ def test_b2bua
120
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK", "< BYE", "> 200"]
121
+ start_controller
122
+ verify_call_flow(:out)
123
+ self.expected_flow = ["< INVITE", "> 100", "> 200", "< ACK", "> BYE", "< 200"]
124
+ verify_call_flow(:in)
125
+ end
126
+
127
+
128
+ end
129
+
130
+
@@ -0,0 +1,120 @@
1
+ # In this b2bua the b2bua controller goes transparent after sending the request
2
+ # it relies on session_limit setting to invalidate as in transparent mode it does
3
+ # not get a chance to do that. Alternatively it could have used a session timer
4
+ # and would have invalidated right after sending the invite.
5
+ #
6
+ # As this is transparent b2bua it will relay every single message including 100 trying
7
+ # so this is made not to use transactions. (Otherwise there would be two 100 responses
8
+ # coming out of this, one from transaction SM and one from controller relaying.
9
+ #
10
+ # Transparent b2buas however can use transactions but then they will have to either relay
11
+ # conditionally themselved or go transparent after say they have received a 100 trying
12
+ # response.
13
+
14
+ require 'driven_sip_test_case'
15
+
16
+ class TestB2bua2 < DrivenSipTestCase
17
+
18
+ def setup
19
+ super
20
+ str = <<-EOF
21
+
22
+ require 'sip_test_driver_controller'
23
+ require 'b2bua_controller'
24
+
25
+ module SipInline
26
+ class UasB2bua2Controller < SIP::SipTestDriverController
27
+
28
+ transaction_usage :use_transactions=>true
29
+ session_record "msg-info"
30
+
31
+ def on_invite(session)
32
+ session.respond_with(200)
33
+ logd("Received INVITE sent a 200 from "+name)
34
+ end
35
+
36
+ def on_ack(session)
37
+ session.request_with("bye")
38
+ end
39
+
40
+ def on_success_res(session)
41
+ session.invalidate(true)
42
+ session.flow_completed_for("TestB2bua2")
43
+ end
44
+
45
+ def order
46
+ 1
47
+ end
48
+
49
+ def interested?(req)
50
+ req.p_controller == "uas"
51
+ end
52
+
53
+ end
54
+
55
+
56
+ class TestB2bua2Controller < SIP::B2buaController
57
+
58
+ transaction_usage :use_transactions=>false
59
+ session_limit 700
60
+
61
+ def on_invite(session)
62
+ peer = get_or_create_peer_session(session, SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
63
+ r = create_b2bua_request(session, session.irequest)
64
+ r.p_controller = "uas"
65
+ peer.send r
66
+ go_transparent(session, true)
67
+ end
68
+
69
+ def interested?(req)
70
+ req.p_controller == "b2bua"
71
+ end
72
+
73
+ def order
74
+ 0
75
+ end
76
+
77
+ end
78
+
79
+
80
+ class UacB2bua2Controller < SIP::SipTestDriverController
81
+
82
+ transaction_usage :use_transactions=>true
83
+ session_record "msg-info"
84
+
85
+ def start
86
+ r = Request.create_initial("invite", "sip:nasir@sipper.com")
87
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
88
+ r.p_controller = "b2bua"
89
+ u.send(r)
90
+ logd("Sent a new INVITE from "+name)
91
+ end
92
+
93
+
94
+ def on_success_res(session)
95
+ session.request_with('ACK')
96
+ end
97
+
98
+ def on_bye(session)
99
+ session.respond_with(200)
100
+ session.invalidate(true)
101
+ end
102
+
103
+ end
104
+ end
105
+ EOF
106
+ define_controller_from(str)
107
+ set_controller("SipInline::UacB2bua2Controller")
108
+ end
109
+
110
+
111
+ def test_b2bua2
112
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK", "< BYE", "> 200"]
113
+ start_controller
114
+ verify_call_flow(:out)
115
+ self.expected_flow = ["< INVITE", "> 100", "> 200", "< ACK", "> BYE", "< 200"]
116
+ verify_call_flow(:in)
117
+ end
118
+
119
+ end
120
+
@@ -0,0 +1,160 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestB2bua3 < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+ require 'b2bua_controller'
12
+
13
+ module SipInline
14
+ class UasB2bua31Controller < SIP::SipTestDriverController
15
+
16
+ transaction_usage :use_transactions=>true
17
+ session_timer 1000
18
+
19
+ def on_invite(session)
20
+ session.respond_with(200)
21
+ logd("Received INVITE sent a 200 from "+name)
22
+ end
23
+
24
+ def on_ack(session)
25
+ session.request_with("bye")
26
+ end
27
+
28
+ def on_success_res(session)
29
+ session.invalidate
30
+ session.flow_completed_for("TestB2bua3")
31
+ end
32
+
33
+ def order
34
+ 1
35
+ end
36
+
37
+ def interested?(req)
38
+ req.p_controller == "uas31"
39
+ end
40
+
41
+ end
42
+
43
+ class UasB2bua30Controller < SIP::SipTestDriverController
44
+
45
+ transaction_usage :use_transactions=>true
46
+ session_timer 1000
47
+
48
+ def on_invite(session)
49
+ session.respond_with(400)
50
+ logd("Received INVITE sent a 400 from "+name)
51
+ end
52
+
53
+ def on_ack(session)
54
+ session.invalidate(true)
55
+ end
56
+
57
+
58
+ def order
59
+ 2
60
+ end
61
+
62
+ def interested?(req)
63
+ req.p_controller == "uas30"
64
+ end
65
+
66
+ end
67
+
68
+
69
+ class TestB2bua3Controller < SIP::B2buaController
70
+
71
+ transaction_usage :use_transactions=>true
72
+
73
+ def on_invite(session)
74
+ peer = get_or_create_peer_session(session, SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
75
+ r = create_b2bua_request(session, session.irequest)
76
+ r.p_controller = "uas30"
77
+ r.p_session_record = nil
78
+ peer.send r
79
+ session['orig_invite'] = r
80
+ end
81
+
82
+ def on_failure_res(session)
83
+ orig_anchor = get_peer_session(session)
84
+ orig_invite = orig_anchor.irequest
85
+ peer = create_peer_session(orig_anchor, SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
86
+ r = create_b2bua_request(orig_anchor, orig_invite)
87
+ r.p_controller = "uas31"
88
+ r.p_session_record = nil
89
+ sleep 1
90
+ peer.send r
91
+ session.invalidate(true) # get rid of first UAS session
92
+ end
93
+
94
+ def on_success_res(session)
95
+ relay_response(session)
96
+ if session.iresponse.get_request_method == "BYE"
97
+ invalidate_sessions(session, true)
98
+ end
99
+ end
100
+
101
+ def on_bye(s)
102
+ relay_request(s)
103
+ end
104
+
105
+ def on_ack(s)
106
+ relay_request(s)
107
+ end
108
+
109
+ def interested?(req)
110
+ req.p_controller == "b2bua"
111
+ end
112
+
113
+ def order
114
+ 0
115
+ end
116
+
117
+ end
118
+
119
+
120
+ class UacB2bua3Controller < SIP::SipTestDriverController
121
+
122
+ transaction_usage :use_transactions=>true
123
+
124
+ def start
125
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
126
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
127
+ r.p_controller = "b2bua"
128
+ u.send(r)
129
+ logd("Sent a new INVITE from "+name)
130
+ end
131
+
132
+
133
+ def on_success_res(session)
134
+ session.request_with('ACK')
135
+ end
136
+
137
+ def on_bye(session)
138
+ session.respond_with(200)
139
+ session.invalidate(true)
140
+ end
141
+
142
+ end
143
+ end
144
+ EOF
145
+ define_controller_from(str)
146
+ set_controller("SipInline::UacB2bua3Controller")
147
+ end
148
+
149
+
150
+ def test_b2bua3
151
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK", "< BYE", "> 200"]
152
+ start_controller
153
+ verify_call_flow(:out)
154
+ self.expected_flow = ["< INVITE", "> 100", "> 200", "< ACK", "> BYE", "< 200"]
155
+ verify_call_flow(:in)
156
+ end
157
+
158
+ end
159
+
160
+