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,97 @@
1
+
2
+
3
+ require 'driven_sip_test_case'
4
+
5
+ class TestRegisterationClearing < DrivenSipTestCase
6
+
7
+ def setup
8
+ SipperConfigurator[:ProtocolCompliance] = 'strict'
9
+ super
10
+ str = <<-EOF
11
+ require 'sip_test_driver_controller'
12
+ module SipInline
13
+ class UasRegistrar2Controller < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>true
16
+
17
+ def on_register(session)
18
+ logd("Received REGISTER in "+name)
19
+ if session.irequest.contact == "*"
20
+ r = session.create_response(200, "OK")
21
+ r.contact = nil
22
+ session.send(r)
23
+ session.invalidate(true)
24
+ else
25
+ r = session.create_response(200, "OK")
26
+ registration_store.put(:test, session.irequest.contact.uri.to_s)
27
+ session.send(r)
28
+ end
29
+
30
+ end
31
+
32
+
33
+ def order
34
+ 0
35
+ end
36
+ end
37
+
38
+ class UacRegister2Controller < SIP::SipTestDriverController
39
+
40
+ transaction_usage :use_transactions=>true
41
+
42
+ def start
43
+ r = Request.create_initial("register", "sip:sipper.com",
44
+ :from=>"sip:bob@sipper.com", :to=>"sip:bob@sipper.com",
45
+ :contact=>"sip:bob@192.168.1.2",
46
+ :p_session_record=>"msg-info")
47
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
48
+ u.send(r)
49
+ logd("Sent a new REGISTER from #{name}")
50
+ end
51
+
52
+ def on_success_res(session)
53
+ logd("Received response in #{name}")
54
+ if session[:regsent]
55
+ if session.iresponse.contact
56
+ session.do_record('contact_found')
57
+ else
58
+ session.do_record('no_contact_found')
59
+ end
60
+ session.invalidate(true)
61
+ session.flow_completed_for("TestRegisterationClearing")
62
+ else
63
+ session[:regsent] = true
64
+ if session.iresponse.contact
65
+ session.do_record('contact_found')
66
+ else
67
+ session.do_record('no_contact_found')
68
+ end
69
+ r = session.create_subsequent_request('REGISTER')
70
+ r.expires = "0"
71
+ r.contact = "*"
72
+ session.send r
73
+ end
74
+ end
75
+
76
+ end
77
+ end
78
+ EOF
79
+ define_controller_from(str)
80
+ set_controller("SipInline::UacRegister2Controller")
81
+ end
82
+
83
+
84
+ def test_registration
85
+ self.expected_flow = ["> REGISTER", "< 200", "! contact_found", "> REGISTER", "< 200", "! no_contact_found" ]
86
+ start_controller
87
+ verify_call_flow(:out)
88
+ self.expected_flow = ["< REGISTER", "> 200", "< REGISTER", "> 200"]
89
+ verify_call_flow(:in)
90
+ end
91
+
92
+ def teardown
93
+ SIP::Locator[:RegistrationStore].destroy
94
+ super
95
+ end
96
+
97
+ end
@@ -0,0 +1,109 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestRegistrationController < DrivenSipTestCase
5
+
6
+ def setup
7
+ SipperConfigurator[:ProtocolCompliance] = 'strict'
8
+ super
9
+ str = <<-EOF
10
+ require 'sip_test_driver_controller'
11
+ module TestRegistrationController_SipInline
12
+ class UasRegistrarController < SIP::SipTestDriverController
13
+
14
+ transaction_usage :use_transactions=>true
15
+
16
+ def on_register(session)
17
+ logd("Received REGISTER in "+name)
18
+ r = session.create_response(200, "OK")
19
+ session.send(r)
20
+
21
+ if !session[:reg_count]
22
+ session[:reg_count] =1
23
+ else
24
+ session[:reg_count] =session[:reg_count]+ 1
25
+ end
26
+
27
+ session.invalidate(true) if session[:reg_count] == 3
28
+ end
29
+
30
+ def order
31
+ 0
32
+ end
33
+ end
34
+
35
+ class UacRegisterController < SIP::SipTestDriverController
36
+
37
+ transaction_usage :use_transactions=>true
38
+
39
+ def start
40
+ r = Request.create_initial("register", "sip:sipper.com",
41
+ :from=>"sip:bob@sipper.com", :to=>"sip:bob@sipper.com",
42
+ :contact=>"sip:abc@abc.com",
43
+ :expires=>"400",
44
+ :p_session_record=>"msg-info")
45
+ r.contact.expires='500'
46
+ r.add_contact('mailto:abc@sipper.com')
47
+ r.format_as_separate_headers_for_mv(:contact)
48
+
49
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
50
+ u.send(r)
51
+ logd("Sent a new REGISTER from #{name}")
52
+ end
53
+
54
+ def on_success_res(session)
55
+ if !session['2xx']
56
+ session['2xx'] =1
57
+ logd("Received response in #{name}")
58
+ if session.iresponse.contacts.to_s.include?("<sip:abc@abc.com>;expires=500<mailto:abc@sipper.com>;expires=400")
59
+ session.do_record('register_success')
60
+ end
61
+ #add a contact
62
+ r= session.create_subsequent_request("REGISTER")
63
+ r.contact = "sip:sharat@abc.com"
64
+ r.expires = "800"
65
+ session.send r
66
+
67
+ elsif session['2xx'] == 1
68
+ session['2xx'] = 2
69
+ if session.iresponse.contacts.to_s.include?("<sip:abc@abc.com>;expires=500<mailto:abc@sipper.com>;expires=400<sip:sharat@abc.com>;expires=800")
70
+ session.do_record('contact_added')
71
+ end
72
+ #update a contact
73
+ r= session.create_subsequent_request("REGISTER")
74
+ r.expires = "400"
75
+ r.contact = "sip:abc@abc.com"
76
+ session.send r
77
+
78
+ elsif session['2xx'] == 2
79
+ if session.iresponse.contacts.to_s.include?("<sip:abc@abc.com>;expires=400<mailto:abc@sipper.com>;expires=400<sip:sharat@abc.com>;expires=800")
80
+ session.do_record('contact_updated')
81
+ end
82
+ session.invalidate(true)
83
+ session.flow_completed_for("TestRegistrationController")
84
+ end
85
+ end
86
+
87
+ end
88
+ end
89
+ EOF
90
+ define_controller_from(str)
91
+ set_controller("TestRegistrationController_SipInline::UacRegisterController")
92
+ end
93
+
94
+
95
+ def test_registration
96
+ self.expected_flow = ["> REGISTER", "< 200","! register_success","> REGISTER", "< 200","! contact_added","> REGISTER", "< 200","! contact_updated"]
97
+ start_controller
98
+ verify_call_flow(:out)
99
+ self.expected_flow = ["< REGISTER", "> 200","< REGISTER", "> 200","< REGISTER", "> 200"]
100
+ verify_call_flow(:in)
101
+ end
102
+
103
+ def teardown
104
+ SIP::Locator[:RegistrationStore].destroy
105
+ super
106
+ end
107
+
108
+ end
109
+
@@ -0,0 +1,73 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestRegistrationController < DrivenSipTestCase
5
+
6
+ def setup
7
+ SipperConfigurator[:ProtocolCompliance] = 'strict'
8
+ super
9
+ str = <<-EOF
10
+ require 'sip_test_driver_controller'
11
+ module TestRegistrationController_SipInline
12
+ class UasRegistrarController < SIP::SipTestDriverController
13
+
14
+ transaction_usage :use_transactions=>true
15
+
16
+ def on_register(session)
17
+ logd("Received REGISTER in "+name)
18
+ r = session.create_response(200, "OK")
19
+ registration_store.put(:test, session.irequest.contact.uri.to_s)
20
+ session.send(r)
21
+ session.invalidate(true)
22
+ end
23
+
24
+
25
+ def order
26
+ 0
27
+ end
28
+ end
29
+
30
+ class UacRegisterController < SIP::SipTestDriverController
31
+
32
+ transaction_usage :use_transactions=>true
33
+
34
+ def start
35
+ r = Request.create_initial("register", "sip:sipper.com",
36
+ :from=>"sip:bob@sipper.com", :to=>"sip:bob@sipper.com",
37
+ :contact=>"sip:bob@192.168.1.2",
38
+ :p_session_record=>"msg-info")
39
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
40
+ u.send(r)
41
+ logd("Sent a new REGISTER from #{name}")
42
+ end
43
+
44
+ def on_success_res(session)
45
+ logd("Received response in #{name}")
46
+ session.do_record(registration_store.get(:test))
47
+ session.invalidate(true)
48
+ session.flow_completed_for("TestRegistrationController")
49
+ end
50
+
51
+ end
52
+ end
53
+ EOF
54
+ define_controller_from(str)
55
+ set_controller("TestRegistrationController_SipInline::UacRegisterController")
56
+ end
57
+
58
+
59
+ def test_registration
60
+ self.expected_flow = ["> REGISTER", "< 200", "! sip:bob@192.168.1.2"]
61
+ start_controller
62
+ verify_call_flow(:out)
63
+ self.expected_flow = ["< REGISTER", "> 200"]
64
+ verify_call_flow(:in)
65
+ end
66
+
67
+ def teardown
68
+ SIP::Locator[:RegistrationStore].destroy
69
+ super
70
+ end
71
+
72
+ end
73
+
@@ -0,0 +1,90 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestRegistrationTimeout < DrivenSipTestCase
4
+
5
+ def setup
6
+ SipperConfigurator[:ProtocolCompliance] = 'strict'
7
+ super
8
+ str = <<-EOF
9
+ require 'sip_test_driver_controller'
10
+ module TestRegistrationTimeout_SipInline
11
+ class UasRegistrarController < SIP::SipTestDriverController
12
+
13
+ transaction_usage :use_transactions=>false
14
+
15
+ def on_register(session)
16
+ logd("Received REGISTER in "+name)
17
+ r = session.create_response(200, "OK")
18
+ session.send(r)
19
+
20
+ if !session[:register]
21
+ session[:register] =1
22
+ elsif session[:register] == 1
23
+ session.invalidate(true)
24
+ end
25
+
26
+ end
27
+
28
+ def order
29
+ 0
30
+ end
31
+ end
32
+
33
+ class UacRegisterController < SIP::SipTestDriverController
34
+
35
+ transaction_usage :use_transactions=>true
36
+
37
+ def start
38
+ r = Request.create_initial("register", "sip:sipper.com",
39
+ :from=>"sip:bob@sipper.com", :to=>"sip:bob@sipper.com",
40
+ :contact=>"sip:abc@abc.com",
41
+ :expires=>"15",
42
+ :p_session_record=>"msg-info")
43
+ r.contact.expires='15'
44
+ r.add_contact('mailto:abc@sipper.com')
45
+ r.format_as_separate_headers_for_mv(:contact)
46
+
47
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
48
+ u.send(r)
49
+ logd("Sent a new REGISTER from #{name}")
50
+ end
51
+
52
+ def on_registration_expiry(session, registration)
53
+ logd("Timer received in #{name}")
54
+ #Refresh registration
55
+ r = session.create_subsequent_request('REGISTER')
56
+ session.send r
57
+ end
58
+
59
+ def on_success_res(session)
60
+ if !session['2xx']
61
+ session['2xx'] =1
62
+ logd("Received response in #{name}")
63
+ session.start_registration_expiry_timer
64
+ elsif session['2xx'] == 1
65
+ session.invalidate(true)
66
+ session.flow_completed_for("TestRegistrationTimeout")
67
+ end
68
+ end
69
+ end
70
+ end
71
+ EOF
72
+ define_controller_from(str)
73
+ set_controller("TestRegistrationTimeout_SipInline::UacRegisterController")
74
+ end
75
+
76
+
77
+ def test_registration
78
+ self.expected_flow = ["> REGISTER", "< 200","> REGISTER","< 200"]
79
+ start_controller
80
+ verify_call_flow(:out)
81
+ self.expected_flow = ["< REGISTER", "> 200","< REGISTER","> 200"]
82
+ verify_call_flow(:in)
83
+ end
84
+
85
+ def teardown
86
+ SIP::Locator[:RegistrationStore].destroy
87
+ super
88
+ end
89
+
90
+ end
@@ -0,0 +1,39 @@
1
+ require 'driven_sip_test_case'
2
+
3
+ class TestRemoteController < DrivenSipTestCase
4
+
5
+ def setup
6
+ super
7
+ str = <<-EOF
8
+ require 'sip_test_driver_controller'
9
+ module SipRemote
10
+ class UacMsgController < SIP::SipTestDriverController
11
+ def start
12
+ r = Request.create_initial("message", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
13
+ u = create_udp_session("192.168.1.3", 5060)
14
+ #todo this MUST be fixed, this coudl easily be forgotten
15
+ u.record_io = yield if block_given?
16
+ u.send(r)
17
+ logd("Sent a new request from #{name}")
18
+ end
19
+
20
+ def on_success_res(session)
21
+ logd("Received response in #{name}")
22
+ session.send(session.create_subsequent_request("cleanup"))
23
+ session.invalidate
24
+ end
25
+ end
26
+ end
27
+ EOF
28
+ define_controller_from(str)
29
+ set_controller("SipRemote::UacMsgController")
30
+ end
31
+
32
+ def test_remote_controllers_with_stringio
33
+ self.expected_flow = ["> MESSAGE", "< 200", "> CLEANUP"]
34
+ start_controller(true)
35
+ verify_call_flow(:out)
36
+ end
37
+
38
+ end
39
+
@@ -0,0 +1,140 @@
1
+
2
+ # This test is a kludge to test the remote target update for UAs. The B2BUA here is
3
+ # basically a Proxy on steroids. The Call-Id and from/to tag mangling is done as everything
4
+ # is running on the same box and so session mismatch could happen otherwise.
5
+ # The take away from this test is that ACK is sent directly to UAS.
6
+
7
+ require 'driven_sip_test_case'
8
+ require 'sdp/sdp_generator'
9
+
10
+ class TestRemoteTargetUpdateOn2xx < DrivenSipTestCase
11
+
12
+ def self.description
13
+ "In this test we are running the B2BUA as a stateless proxy that doesnt record route, "+
14
+ "we are copying the Contacts from the two end UAs to peer sessions and thereby testing "+
15
+ "the updation of remote target dynamically in session based on refreshed target"
16
+ end
17
+
18
+ def setup
19
+ SipperConfigurator[:ControllerPath] = nil
20
+ @tp = SipperConfigurator[:LocalTestPort]
21
+ SipperConfigurator[:LocalTestPort] = [5066, 5079, 5080]
22
+ super
23
+ str = <<-EOF
24
+
25
+ require 'sip_test_driver_controller'
26
+ require 'b2bua_controller'
27
+
28
+ module SipKludge
29
+ class UasB2buaController < SIP::SipTestDriverController
30
+
31
+ transaction_usage :use_transactions=>true
32
+
33
+ def specified_transport
34
+ [SipperConfigurator[:LocalSipperIP], 5080]
35
+ end
36
+
37
+ def on_invite(session)
38
+ session.name = "uas"
39
+ r = session.create_response(200)
40
+ r.sdp = SDP::SdpGenerator.make_no_media_sdp
41
+ session.send(r)
42
+ logd("Received INVITE sent a 200 from "+name)
43
+ end
44
+
45
+ def on_ack(session)
46
+ session.invalidate(true)
47
+ session.flow_completed_for("TestRemoteTargetUpdateOn2xx")
48
+ end
49
+
50
+
51
+ def order
52
+ 1
53
+ end
54
+
55
+
56
+ end
57
+
58
+
59
+ class TestB2buaController < SIP::B2buaController
60
+
61
+ transaction_usage :use_transactions=>false
62
+ t2xx_usage false
63
+
64
+ def specified_transport
65
+ [SipperConfigurator[:LocalSipperIP], 5079]
66
+ end
67
+
68
+ def on_invite(session)
69
+ session.name = "b2buas"
70
+ peer = get_or_create_peer_session(session, SipperConfigurator[:LocalSipperIP], 5080)
71
+ peer.name = "b2buac"
72
+ r = create_b2bua_request(session)
73
+ r.contact = session.irequest.contact
74
+ r.call_id = session.irequest.call_id.to_s + "1"
75
+ r.from = session.irequest.from
76
+ r.to = session.irequest.contact
77
+ r.p_session_record = nil
78
+ peer.send r
79
+ end
80
+
81
+
82
+ def on_success_res(session)
83
+ r = create_b2bua_response(session)
84
+ peer = get_peer_session(session)
85
+ r.contact = session.iresponse.contact
86
+ peer.send r
87
+ invalidate_sessions(session, true)
88
+ end
89
+
90
+ end
91
+
92
+
93
+ class UacB2buaController < SIP::SipTestDriverController
94
+
95
+ transaction_usage :use_transactions=>true
96
+
97
+ def specified_transport
98
+ [SipperConfigurator[:LocalSipperIP], 5066]
99
+ end
100
+
101
+ def start
102
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
103
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], 5079)
104
+ u.name = "uac"
105
+ u.send(r)
106
+ logd("Sent a new INVITE from "+name)
107
+ end
108
+
109
+
110
+ def on_success_res(session)
111
+ ack = session.create_2xx_ack
112
+ ack.call_id = ack.call_id.to_s + "1"
113
+ session.send ack
114
+ session.invalidate(true)
115
+ end
116
+
117
+
118
+
119
+ end
120
+ end
121
+ EOF
122
+ define_controller_from(str)
123
+ set_controller("SipKludge::UacB2buaController")
124
+ end
125
+
126
+
127
+ def test_b2bua
128
+ self.expected_flow = ["> INVITE", "< 200", "> ACK"]
129
+ start_controller
130
+ verify_call_flow(:out)
131
+ self.expected_flow = ["< INVITE", "> 200"] # this is b2bua recording
132
+ verify_call_flow(:in)
133
+ end
134
+
135
+ def teardown
136
+ SipperConfigurator[:LocalTestPort] = @tp
137
+ super
138
+ end
139
+
140
+ end