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,158 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+
5
+ class TestTargetRefreshWithNewPort < DrivenSipTestCase
6
+
7
+ # To run this test in windows, in a separate shell execute the proxy
8
+ # "srun -p 5070 -o 5068 -c nonrr_proxy.rb"
9
+ # and set an env var
10
+ # "set SIPPER_TEST_PROXY_EXTERNAL=true"
11
+ # You would do similar thing for rr_proxy with a higher port in a second shell
12
+ # "srun -p 5071 -o 5068 -c rr_proxy.rb"
13
+ # Let these two proxies run.
14
+ # Then run the test cases, after you are done make sure to unset the env var by
15
+ # "set SIPPER_TEST_PROXY_EXTERNAL="
16
+ # For one run you need only to execute the two proxies only once for all tests.
17
+ def setup
18
+ @sr = SipperConfigurator[:SessionRecord]
19
+ SipperConfigurator[:SessionRecord] = "msg-info"
20
+ @tp = SipperConfigurator[:LocalTestPort]
21
+ SipperConfigurator[:LocalTestPort] = [7067, 7068, 7069]
22
+
23
+ super
24
+ unless RUBY_PLATFORM =~ /mswin/
25
+ system("srun -p #{SipperConfigurator[:LocalTestPort][2]+1} -o #{SipperConfigurator[:LocalTestPort][1]} -rf 3 -c #{File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "nonrr_proxy.rb")} &")
26
+ end
27
+
28
+ str2 = <<-EOF2
29
+
30
+ require 'stray_message_manager'
31
+
32
+ class ByeStrayHandler < SIP::StrayMessageHandler
33
+ def handle(m)
34
+ [SIP::StrayMessageHandler::SMH_TREAT_INITIAL, m]
35
+ end
36
+ end
37
+
38
+ require 'sip_test_driver_controller'
39
+
40
+ module TestTargetRefreshWithNewPort_SipInline
41
+ class UasRt61Controller < SIP::SipTestDriverController
42
+
43
+ transaction_usage :use_transactions=>true
44
+
45
+ def specified_transport
46
+ [SipperConfigurator[:LocalSipperIP],
47
+ SipperConfigurator[:LocalTestPort][1]]
48
+ end
49
+
50
+ def on_invite(session)
51
+ if session.irequest[:via].length == 2
52
+ session.do_record("double_via")
53
+ end
54
+ session.respond_with(200)
55
+ logd("Received INVITE sent a 200 from "+name)
56
+ end
57
+
58
+ def on_ack(session)
59
+ r = session.create_subsequent_request('update')
60
+ orig_contact_uri = r.contact.uri
61
+ orig_contact_uri.user = "nkhan"
62
+ orig_contact_uri.port = SipperConfigurator[:LocalTestPort][2]
63
+ r.contact.uri = orig_contact_uri
64
+ session.send(r)
65
+ end
66
+
67
+
68
+ def on_success_res_for_update(session)
69
+ session.invalidate(true)
70
+ end
71
+ end
72
+
73
+
74
+ class UasRt62Controller < SIP::SipTestDriverController
75
+
76
+ transaction_usage :use_transactions=>true
77
+
78
+ def specified_transport
79
+ [SipperConfigurator[:LocalSipperIP],
80
+ SipperConfigurator[:LocalTestPort][2]]
81
+ end
82
+
83
+ def on_bye(session)
84
+ if session.irequest[:via].length == 1
85
+ session.do_record("single_via")
86
+ end
87
+ session.do_record(session.irequest.uri.user)
88
+ session.respond_with(200)
89
+ session.invalidate(true)
90
+ end
91
+
92
+ end
93
+
94
+ class UacRt6Controller < SIP::SipTestDriverController
95
+
96
+ transaction_usage :use_transactions=>true
97
+
98
+ pre_existing_route_set ["sip:#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][2]+1};lr"]
99
+
100
+ def specified_transport
101
+ [SipperConfigurator[:LocalSipperIP],
102
+ SipperConfigurator[:LocalTestPort][0]]
103
+ end
104
+
105
+ def start
106
+ u = create_udp_session()
107
+ r = u.create_initial_request("invite",
108
+ "sip:nasir@#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]}")
109
+ u.send(r)
110
+ logd("Sent a new INVITE from "+name)
111
+ end
112
+
113
+
114
+ def on_success_res_for_invite(session)
115
+ session.request_with('ACK')
116
+ end
117
+
118
+ def on_update(session)
119
+ session.respond_with(200)
120
+ session.request_with("bye")
121
+ end
122
+
123
+
124
+ def on_success_res_for_bye(session)
125
+ session.invalidate(true)
126
+ session.flow_completed_for("TestTargetRefreshWithNewPort")
127
+ end
128
+
129
+
130
+ end
131
+ end
132
+ EOF2
133
+ define_controller_from(str2)
134
+ set_controller("TestTargetRefreshWithNewPort_SipInline::UacRt6Controller")
135
+ end
136
+
137
+
138
+ def test_rtup_controllers
139
+ if RUBY_PLATFORM =~ /mswin/ && !ENV['SIPPER_TEST_PROXY_EXTERNAL']
140
+ return
141
+ end
142
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK", "< UPDATE", "> 200", "> BYE {1,2}", "< 200 {1,2}"]
143
+ start_controller
144
+ sleep 3
145
+ verify_call_flow(:out)
146
+ self.expected_flow = ["< INVITE", "> 100", "! double_via", "> 200", "< ACK", "> UPDATE", "< 200"]
147
+ verify_call_flow(:in)
148
+ self.expected_flow = ["< BYE {1,2}", "! single_via {1,2}", "! nkhan {1,2}", "> 200 {1,2}"]
149
+ verify_call_flow(:in, 1)
150
+ end
151
+
152
+ def teardown
153
+ SipperConfigurator[:SessionRecord] = @sr
154
+ SipperConfigurator[:LocalTestPort] = @tp
155
+ super
156
+ end
157
+
158
+ end
@@ -0,0 +1,113 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+
5
+ class TestTargetRefreshWithProxy1 < DrivenSipTestCase
6
+
7
+ # To run this test in windows, in a separate shell execute the proxy
8
+ # "srun -p 5068 -o 5067 -c nonrr_proxy.rb"
9
+ # and set an env var
10
+ # "set SIPPER_TEST_PROXY_EXTERNAL=true"
11
+ # You would do similar thing for rr_proxy with a higher port in a second shell
12
+ # "srun -p 5069 -0 5067 -c rr_proxy.rb"
13
+ # Let these two proxies run.
14
+ # Then run the test cases, after you are done make sure to unset the env var by
15
+ # "set SIPPER_TEST_PROXY_EXTERNAL="
16
+ # For one run you need only to execute the two proxies only once for all tests.
17
+ def setup
18
+ @sr = SipperConfigurator[:SessionRecord]
19
+ SipperConfigurator[:SessionRecord] = "msg-info"
20
+ @tp = SipperConfigurator[:LocalTestPort]
21
+ SipperConfigurator[:LocalTestPort] = 5067
22
+ super
23
+ unless RUBY_PLATFORM =~ /mswin/
24
+ system("srun -p #{SipperConfigurator[:LocalTestPort]+1} -o #{SipperConfigurator[:LocalTestPort]} -rf 3 -c #{File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "nonrr_proxy.rb")} &")
25
+ end
26
+
27
+ str2 = <<-EOF2
28
+
29
+ require 'sip_test_driver_controller'
30
+
31
+ module SipInline
32
+ class UasRt1Controller < SIP::SipTestDriverController
33
+
34
+ transaction_usage :use_transactions=>true
35
+
36
+ def on_invite(session)
37
+ if session.irequest[:via].length == 2
38
+ session.do_record("double_via")
39
+ end
40
+ session.respond_with(200)
41
+ logd("Received INVITE sent a 200 from "+name)
42
+ end
43
+
44
+ def on_ack(session)
45
+ if session.irequest[:via].length == 1
46
+ session.do_record("single_via")
47
+ end
48
+ session.request_with("bye")
49
+ end
50
+
51
+ def on_success_res(session)
52
+ session.invalidate(true)
53
+ session.flow_completed_for("TestTargetRefreshWithProxy1")
54
+ end
55
+
56
+ def order
57
+ 0
58
+ end
59
+
60
+ end
61
+
62
+ class UacRt1Controller < SIP::SipTestDriverController
63
+
64
+ transaction_usage :use_transactions=>true
65
+
66
+ def start
67
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort]+1)
68
+ r = u.create_initial_request("invite", "sip:nasir@sipper.com")
69
+ u.send(r)
70
+ logd("Sent a new INVITE from "+name)
71
+ end
72
+
73
+
74
+ def on_success_res(session)
75
+ session.request_with('ACK')
76
+ end
77
+
78
+ def on_bye(session)
79
+ if session.irequest[:via].length == 1
80
+ session.do_record("single_via")
81
+ end
82
+ session.respond_with(200)
83
+ session.invalidate(true)
84
+ end
85
+
86
+ end
87
+ end
88
+ EOF2
89
+ define_controller_from(str2)
90
+ set_controller("SipInline::UacRt1Controller")
91
+ end
92
+
93
+
94
+ def test_rt1_controllers
95
+ if RUBY_PLATFORM =~ /mswin/ && !ENV['SIPPER_TEST_PROXY_EXTERNAL']
96
+ return
97
+ end
98
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK", "< BYE","! single_via", "> 200"]
99
+ start_controller
100
+ sleep 3
101
+ verify_call_flow(:out)
102
+ self.expected_flow = ["< INVITE", "> 100", "! double_via", "> 200", "< ACK", "! single_via", "> BYE", "< 200"]
103
+ verify_call_flow(:in)
104
+ end
105
+
106
+ def teardown
107
+ SipperConfigurator[:SessionRecord] = @sr
108
+ SipperConfigurator[:LocalTestPort] = @tp
109
+ super
110
+ end
111
+
112
+ end
113
+
@@ -0,0 +1,145 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # UAC runs on 5066
5
+ # UAS runs on 5067
6
+ # Proxy runs on 5068
7
+
8
+ class TestTargetRefreshWithRrUpdateProxy < DrivenSipTestCase
9
+
10
+ # To run this test in windows, in a separate shell execute the proxy
11
+ # "srun -p 5068 -0 5067 -c nonrr_proxy.rb"
12
+ # and set an env var
13
+ # "set SIPPER_TEST_PROXY_EXTERNAL=true"
14
+ # You would do similar thing for rr_proxy with a higher port in a second shell
15
+ # "srun -p 5069 -0 5067 -c rr_proxy.rb"
16
+ # Let these two proxies run.
17
+ # Then run the test cases, after you are done make sure to unset the env var by
18
+ # "set SIPPER_TEST_PROXY_EXTERNAL="
19
+ # For one run you need only to execute the two proxies only once for all tests.
20
+ def setup
21
+ @sr = SipperConfigurator[:SessionRecord]
22
+ SipperConfigurator[:SessionRecord] = "msg-info"
23
+ @tp = SipperConfigurator[:LocalTestPort]
24
+ SipperConfigurator[:LocalTestPort] = [5066, 5067]
25
+
26
+ super
27
+ unless RUBY_PLATFORM =~ /mswin/
28
+ system("srun -p #{SipperConfigurator[:LocalTestPort][1]+2} -o #{SipperConfigurator[:LocalTestPort][1]} -rf 3 -c #{File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "rr_proxy.rb")} &")
29
+ end
30
+
31
+ str2 = <<-EOF2
32
+
33
+ require 'sip_test_driver_controller'
34
+
35
+ module SipInline
36
+ class UasRt8Controller < SIP::SipTestDriverController
37
+
38
+ transaction_usage :use_transactions=>true
39
+
40
+ def specified_transport
41
+ [SipperConfigurator[:LocalSipperIP],
42
+ SipperConfigurator[:LocalTestPort][1]]
43
+ end
44
+
45
+ def on_invite(session)
46
+ if session.irequest[:via].length == 2
47
+ session.do_record("double_via")
48
+ end
49
+ session.respond_with(200)
50
+ logd("Received INVITE sent a 200 from "+name)
51
+ end
52
+
53
+ def on_ack(session)
54
+ r = session.create_subsequent_request('update')
55
+ orig_contact_uri = r.contact.uri
56
+ orig_contact_uri.user = "nkhan"
57
+ r.contact.uri = orig_contact_uri
58
+ session.send(r)
59
+ end
60
+
61
+
62
+ def on_success_res_for_update(session)
63
+ end
64
+
65
+
66
+ def on_bye(session)
67
+ if session.irequest[:via].length == 2
68
+ session.do_record("double_via")
69
+ end
70
+ session.do_record(session.irequest.uri.user)
71
+ session.respond_with(200)
72
+ session.invalidate(true)
73
+ end
74
+
75
+ def order
76
+ 0
77
+ end
78
+
79
+ end
80
+
81
+ class UacRt8Controller < SIP::SipTestDriverController
82
+
83
+ transaction_usage :use_transactions=>true
84
+
85
+ pre_existing_route_set ["sip:#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]+2};lr"]
86
+
87
+ def specified_transport
88
+ [SipperConfigurator[:LocalSipperIP],
89
+ SipperConfigurator[:LocalTestPort][0]]
90
+ end
91
+
92
+ def start
93
+ u = create_udp_session()
94
+ r = u.create_initial_request("invite",
95
+ "sip:nasir@#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]}")
96
+ #r.route = "sip:#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]+2};lr"
97
+ u.send(r)
98
+ logd("Sent a new INVITE from "+name)
99
+ end
100
+
101
+
102
+ def on_success_res_for_invite(session)
103
+ session.request_with('ACK')
104
+ end
105
+
106
+ def on_update(session)
107
+ session.respond_with(200)
108
+ session.request_with("bye")
109
+ end
110
+
111
+
112
+ def on_success_res_for_bye(session)
113
+ session.invalidate(true)
114
+ session.flow_completed_for("TestTargetRefreshWithRrUpdateProxy")
115
+ end
116
+
117
+
118
+ end
119
+ end
120
+ EOF2
121
+ define_controller_from(str2)
122
+ set_controller("SipInline::UacRt8Controller")
123
+ end
124
+
125
+
126
+ def test_rt1_controllers
127
+ if RUBY_PLATFORM =~ /mswin/ && !ENV['SIPPER_TEST_PROXY_EXTERNAL']
128
+ return
129
+ end
130
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK", "< UPDATE", "> 200", "> BYE", "< 200"]
131
+ start_controller
132
+ sleep 3
133
+ verify_call_flow(:out)
134
+ self.expected_flow = ["< INVITE", "> 100", "! double_via", "> 200", "< ACK", "> UPDATE", "< 200", "< BYE", "! double_via", "! nkhan", "> 200"]
135
+ verify_call_flow(:in)
136
+ end
137
+
138
+ def teardown
139
+ SipperConfigurator[:SessionRecord] = @sr
140
+ SipperConfigurator[:LocalTestPort] = @tp
141
+ super
142
+ end
143
+
144
+ end
145
+
@@ -0,0 +1,144 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # UAC runs on 5066
5
+ # UAS runs on 5067
6
+ # Proxy runs on 5068
7
+
8
+ class TestTargetRefreshWithUpdateProxy < DrivenSipTestCase
9
+
10
+ # To run this test in windows, in a separate shell execute the proxy
11
+ # "srun -p 5068 -0 5067 -c nonrr_proxy.rb"
12
+ # and set an env var
13
+ # "set SIPPER_TEST_PROXY_EXTERNAL=true"
14
+ # You would do similar thing for rr_proxy with a higher port in a second shell
15
+ # "srun -p 5069 -0 5067 -c rr_proxy.rb"
16
+ # Let these two proxies run.
17
+ # Then run the test cases, after you are done make sure to unset the env var by
18
+ # "set SIPPER_TEST_PROXY_EXTERNAL="
19
+ # For one run you need only to execute the two proxies only once for all tests.
20
+ def setup
21
+ @sr = SipperConfigurator[:SessionRecord]
22
+ SipperConfigurator[:SessionRecord] = "msg-info"
23
+ @tp = SipperConfigurator[:LocalTestPort]
24
+ SipperConfigurator[:LocalTestPort] = [5066, 5067]
25
+
26
+ super
27
+ unless RUBY_PLATFORM =~ /mswin/
28
+ system("srun -p #{SipperConfigurator[:LocalTestPort][1]+1} -o #{SipperConfigurator[:LocalTestPort][1]} -rf 3 -c #{File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "nonrr_proxy.rb")} &")
29
+ end
30
+
31
+ str2 = <<-EOF2
32
+
33
+ require 'sip_test_driver_controller'
34
+
35
+ module TestTargetRefreshWithUpdateProxy_SipInline
36
+ class UasRt6Controller < SIP::SipTestDriverController
37
+
38
+ transaction_usage :use_transactions=>true
39
+
40
+ def specified_transport
41
+ [SipperConfigurator[:LocalSipperIP],
42
+ SipperConfigurator[:LocalTestPort][1]]
43
+ end
44
+
45
+ def on_invite(session)
46
+ if session.irequest[:via].length == 2
47
+ session.do_record("double_via")
48
+ end
49
+ session.respond_with(200)
50
+ logd("Received INVITE sent a 200 from "+name)
51
+ end
52
+
53
+ def on_ack(session)
54
+ r = session.create_subsequent_request('update')
55
+ orig_contact_uri = r.contact.uri
56
+ orig_contact_uri.user = "nkhan"
57
+ r.contact.uri = orig_contact_uri
58
+ session.send(r)
59
+ end
60
+
61
+
62
+ def on_success_res_for_update(session)
63
+ end
64
+
65
+
66
+ def on_bye(session)
67
+ if session.irequest[:via].length == 1
68
+ session.do_record("single_via")
69
+ end
70
+ session.do_record(session.irequest.uri.user)
71
+ session.respond_with(200)
72
+ session.invalidate(true)
73
+ end
74
+
75
+ def order
76
+ 0
77
+ end
78
+
79
+ end
80
+
81
+ class UacRt6Controller < SIP::SipTestDriverController
82
+
83
+ transaction_usage :use_transactions=>true
84
+
85
+ pre_existing_route_set ["sip:#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]+1};lr"]
86
+
87
+ def specified_transport
88
+ [SipperConfigurator[:LocalSipperIP],
89
+ SipperConfigurator[:LocalTestPort][0]]
90
+ end
91
+
92
+ def start
93
+ u = create_udp_session()
94
+ r = u.create_initial_request("invite",
95
+ "sip:nasir@#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]}")
96
+ u.send(r)
97
+ logd("Sent a new INVITE from "+name)
98
+ end
99
+
100
+
101
+ def on_success_res_for_invite(session)
102
+ session.request_with('ACK')
103
+ end
104
+
105
+ def on_update(session)
106
+ session.respond_with(200)
107
+ session.request_with("bye")
108
+ end
109
+
110
+
111
+ def on_success_res_for_bye(session)
112
+ session.invalidate(true)
113
+ session.flow_completed_for("TestTargetRefreshWithUpdateProxy")
114
+ end
115
+
116
+
117
+ end
118
+ end
119
+ EOF2
120
+ define_controller_from(str2)
121
+ set_controller("TestTargetRefreshWithUpdateProxy_SipInline::UacRt6Controller")
122
+ end
123
+
124
+
125
+ def test_rt1_controllers
126
+ if RUBY_PLATFORM =~ /mswin/ && !ENV['SIPPER_TEST_PROXY_EXTERNAL']
127
+ return
128
+ end
129
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK", "< UPDATE", "> 200", "> BYE", "< 200"]
130
+ start_controller
131
+ sleep 3
132
+ verify_call_flow(:out)
133
+ self.expected_flow = ["< INVITE", "> 100", "! double_via", "> 200", "< ACK", "> UPDATE", "< 200", "< BYE", "! single_via", "! nkhan", "> 200"]
134
+ verify_call_flow(:in)
135
+ end
136
+
137
+ def teardown
138
+ SipperConfigurator[:SessionRecord] = @sr
139
+ SipperConfigurator[:LocalTestPort] = @tp
140
+ super
141
+ end
142
+
143
+ end
144
+