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,71 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # Overrides the preexisting RS with explicit session setting, also exercises the non lr param.
5
+ class TestControllerUsingPreExistingRs2 < DrivenSipTestCase
6
+
7
+ def setup
8
+ super
9
+ str = <<-EOF
10
+ require 'sip_test_driver_controller'
11
+ module SipInline
12
+ class UasPeRs2Controller < SIP::SipTestDriverController
13
+
14
+ transaction_usage :use_transactions=>true
15
+
16
+ def on_invite(session)
17
+ logd("Received INVITE in #{name}")
18
+ session.irequest.routes.each do |r|
19
+ session.do_record(r.to_s)
20
+ end
21
+ session.do_record("uri="+session.irequest.uri.to_s)
22
+ session.respond_with(200)
23
+ end
24
+
25
+ def on_ack(session)
26
+ session.invalidate(true)
27
+ session.flow_completed_for("TestControllerUsingPreExistingRs2")
28
+ end
29
+
30
+ def order
31
+ 0
32
+ end
33
+ end
34
+
35
+ class UacPeRs2Controller < SIP::SipTestDriverController
36
+
37
+ transaction_usage :use_transactions=>true
38
+ pre_existing_route_set ["sip:nasir@sipper.com;lr", "sip:nasir@goblet.com;lr"]
39
+
40
+
41
+ def start
42
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort], ["sip:nk@goblet.com;lr"])
43
+ r = u.create_initial_request("invite", "sip:nk@sipper.com", :p_session_record=>"msg-info")
44
+ u.send(r)
45
+ logd("Sent a new INVITE from #{name}")
46
+ end
47
+
48
+ def on_success_res(session)
49
+ logd("Received response in #{name}")
50
+ session.request_with("ack")
51
+ session.invalidate(true)
52
+ end
53
+
54
+ end
55
+ end
56
+ EOF
57
+ define_controller_from(str)
58
+ set_controller("SipInline::UacPeRs2Controller")
59
+ end
60
+
61
+
62
+ def test_pers_controllers
63
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK"]
64
+ start_controller
65
+ verify_call_flow(:out)
66
+ self.expected_flow = ["< INVITE", "> 100", "! <sip:nk@goblet.com;lr>", "! uri=sip:nk@sipper.com", "> 200", "< ACK"]
67
+ verify_call_flow(:in)
68
+ end
69
+
70
+ end
71
+
@@ -0,0 +1,86 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestControllerUsingRouteSet < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+ require 'sip_test_driver_controller'
10
+
11
+ module SipInline
12
+
13
+ class UasRsController < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>true
16
+
17
+ def on_invite(session)
18
+ logd("Received INVITE in #{name}")
19
+ session.respond_with(200)
20
+ end
21
+
22
+ def on_ack(session)
23
+ routes = session.irequest.routes
24
+ session.irequest.routes.each do |r|
25
+ session.do_record(r.to_s)
26
+ end
27
+ session.request_with("subscribe")
28
+ end
29
+
30
+ def on_success_res(session)
31
+ session.invalidate(true)
32
+ session.flow_completed_for("TestControllerUsingRouteSet")
33
+ end
34
+
35
+
36
+ def order
37
+ 0
38
+ end
39
+ end
40
+
41
+ class UacRsController < SIP::SipTestDriverController
42
+
43
+ transaction_usage :use_transactions=>true
44
+
45
+ def start
46
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info",
47
+ :record_route=>"sip:example1.com;lr,sip:example2.com;lr")
48
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
49
+ u.send(r)
50
+ logd("Sent a new INVITE from #{name}")
51
+ end
52
+
53
+ def on_success_res(session)
54
+ logd("Received response in #{name}")
55
+ session.request_with("ack")
56
+ end
57
+
58
+ def on_subscribe(session)
59
+ routes = session.irequest.routes
60
+ session.irequest.routes.each do |r|
61
+ session.do_record(r.to_s)
62
+ end
63
+ session.respond_with(200)
64
+ session.invalidate(true)
65
+ end
66
+
67
+
68
+ end
69
+ end
70
+ EOF
71
+ define_controller_from(str)
72
+ set_controller("SipInline::UacRsController")
73
+ end
74
+
75
+
76
+ def test_rs_controllers
77
+ self.expected_flow = ["> INVITE", "< 100","< 200", "> ACK", "< SUBSCRIBE", "! <sip:example1.com;lr>", "! <sip:example2.com;lr>", "> 200"]
78
+ start_controller
79
+ verify_call_flow(:out)
80
+ self.expected_flow = ["< INVITE", "> 100", "> 200", "< ACK","! <sip:example2.com;lr>", "! <sip:example1.com;lr>", "> SUBSCRIBE","< 200"]
81
+ verify_call_flow(:in)
82
+ end
83
+
84
+ end
85
+
86
+
@@ -0,0 +1,80 @@
1
+
2
+ require 'driven_sip_test_case'
3
+ require 'sdp/sdp_generator'
4
+
5
+ class TestControllerWithSdp < DrivenSipTestCase
6
+
7
+ def setup
8
+ super
9
+ str = <<-EOF
10
+
11
+ require 'sip_test_driver_controller'
12
+
13
+ module SipInline
14
+ class UasSdpController < SIP::SipTestDriverController
15
+
16
+ transaction_usage :use_transactions=>true
17
+
18
+ def on_invite(session)
19
+ if session.irequest.sdp.to_s.length > 0
20
+ session.do_record("sdp_found")
21
+ end
22
+ session.respond_with(200)
23
+ logd("Received INVITE sent a 200 from "+name)
24
+ end
25
+
26
+ def on_ack(session)
27
+ session.request_with("bye")
28
+ end
29
+
30
+ def on_success_res(session)
31
+ session.invalidate(true)
32
+ session.flow_completed_for("TestControllerWithSdp")
33
+ end
34
+
35
+ def order
36
+ 0
37
+ end
38
+
39
+ end
40
+
41
+ class UacSdpController < SIP::SipTestDriverController
42
+
43
+ transaction_usage :use_transactions=>true
44
+
45
+ def start
46
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
47
+ r.sdp = SDP::SdpGenerator.make_no_media_sdp
48
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
49
+ u.send(r)
50
+ logd("Sent a new INVITE from "+name)
51
+ end
52
+
53
+
54
+ def on_success_res(session)
55
+ session.request_with('ACK')
56
+ end
57
+
58
+ def on_bye(session)
59
+ session.respond_with(200)
60
+ session.invalidate(true)
61
+ end
62
+
63
+ end
64
+ end
65
+ EOF
66
+ define_controller_from(str)
67
+ set_controller("SipInline::UacSdpController")
68
+ end
69
+
70
+
71
+ def test_smoke_controllers
72
+ self.expected_flow = ["> INVITE", "< 100", "< 200", "> ACK", "< BYE", "> 200"]
73
+ start_controller
74
+ verify_call_flow(:out)
75
+ self.expected_flow = ["< INVITE", "> 100", "! sdp_found", "> 200", "< ACK", "> BYE", "< 200"]
76
+ verify_call_flow(:in)
77
+ end
78
+
79
+
80
+ end
@@ -0,0 +1,2 @@
1
+ - CancelCase::UasCancelController
2
+ - CancelCase::UacCancelController
@@ -0,0 +1,35 @@
1
+ require 'sip_test_driver_controller'
2
+
3
+ module CancelCase
4
+ class UacCancelController < SIP::SipTestDriverController
5
+
6
+ #start_on_load :true
7
+ transaction_usage :use_transactions=>true
8
+ def start
9
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
10
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
11
+ u.send(r)
12
+ logd("Sent a new request from uac_controller")
13
+ r = u.create_cancel
14
+ begin
15
+ u.send(r)
16
+ rescue RuntimeError => e
17
+ logd("Exception while sending CANCEL")
18
+ u.do_record("Exception while sending CANCEL")
19
+ end
20
+ end
21
+
22
+ def on_trying_res(session)
23
+ logd("Creating CANCEL on getting 100 Trying")
24
+ r = session.create_cancel
25
+ session.send(r)
26
+ end
27
+
28
+ def on_success_res(session)
29
+ logd("Got a 200 response in UAC for TestCancel")
30
+ session.invalidate
31
+ session.flow_completed_for("TestCancel")
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,25 @@
1
+ require 'sip_test_driver_controller'
2
+
3
+ module CancelCase
4
+ class UasCancelController < SIP::SipTestDriverController
5
+
6
+ def on_invite(session)
7
+ unless session['response_sent']
8
+ session.local_tag = 5 #to differentiate the key for UAC/UAS
9
+ r = session.create_response(100, "Trying")
10
+ sleep 0.1
11
+ session.send(r)
12
+ logd("Sent response from #{name}")
13
+ else
14
+ session['response_sent'] = true
15
+ end
16
+ end
17
+
18
+ def on_cancel(session)
19
+ logd("Received CANCEL at #{name}")
20
+ session.respond_with(200)
21
+ session.invalidate(true)
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,5 @@
1
+ require 'base_controller'
2
+
3
+ class FirstOrderedController < SIP::BaseController
4
+
5
+ end
@@ -0,0 +1,3 @@
1
+ - SecondOrderedModule::SecondOrderedController
2
+ - FirstOrderedController
3
+ - SecondOrderedModule::RecondOrderedController
@@ -0,0 +1,6 @@
1
+ require 'base_controller'
2
+ module SecondOrderedModule
3
+ class RecondOrderedController < SIP::BaseController
4
+
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'base_controller'
2
+ module SecondOrderedModule
3
+ class SecondOrderedController < SIP::BaseController
4
+
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+
2
+ require 'base_controller'
3
+
4
+ class FirstUnorderedController < SIP::BaseController
5
+
6
+ end
7
+
@@ -0,0 +1,6 @@
1
+ require 'base_controller'
2
+ module SecondUnorderedModule
3
+ class SecondUnorderedController < SIP::BaseController
4
+
5
+ end
6
+ end
@@ -0,0 +1,22 @@
1
+ require 'transport/base_transport'
2
+
3
+ class MyInTransportHandler < Transport::TransportIngressFilter
4
+ def do_filter(msg)
5
+ m = msg.gsub(/MESSAGE/, "INFO") if msg =~ /200 OK/
6
+ m ? m : msg
7
+ end
8
+ end
9
+
10
+ class MyOutTransportHandler < Transport::TransportOutgressFilter
11
+ def do_filter(msg)
12
+ m = msg.gsub(/INFO/, "MESSAGE")
13
+ m ? m : msg
14
+ end
15
+ end
16
+
17
+
18
+ =begin
19
+ UAC UAS
20
+ >--INFO--(conv MESSAGE) -->----------MESSAGE
21
+ <--200/INFO--(conv INFO)--<-------200/MESSAGE
22
+ =end
@@ -0,0 +1,27 @@
1
+
2
+ require 'sip_test_driver_controller'
3
+
4
+ class UacTrHandlerController < SIP::SipTestDriverController
5
+
6
+ # change the directive below to true to enable transaction usage.
7
+ # If you do that then make sure that your controller is also
8
+ # transaction aware. i.e does not try send ACK to non-2xx responses,
9
+ # does not send 100 Trying response etc.
10
+
11
+ transaction_usage :use_transactions=>false
12
+
13
+ def initialize
14
+ logd('#{name} controller created')
15
+ end
16
+
17
+ def start
18
+ session = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
19
+ session.request_with('INFO', 'sip:nasir@sipper.com')
20
+ end
21
+
22
+ def on_success_res(session)
23
+ session.invalidate(true)
24
+ session.flow_completed_for('TestThTest')
25
+ end
26
+
27
+ end
@@ -0,0 +1,21 @@
1
+ require 'base_controller'
2
+
3
+ class UasTrHandlerController < SIP::BaseController
4
+
5
+ # change the directive below to true to enable transaction usage.
6
+ # If you do that then make sure that your controller is also
7
+ # transaction aware. i.e does not try send ACK to non-2xx responses,
8
+ # does not send 100 Trying response etc.
9
+
10
+ transaction_usage :use_transactions=>false
11
+
12
+ def initialize
13
+ logd('#{name} controller created')
14
+ end
15
+
16
+ def on_message(session)
17
+ session.respond_with(200)
18
+ session.invalidate(true)
19
+ end
20
+
21
+ end
@@ -0,0 +1 @@
1
+ - UasController
@@ -0,0 +1,39 @@
1
+ require 'sip_test_driver_controller'
2
+
3
+ class UacController < SIP::SipTestDriverController
4
+
5
+ #start_on_load :true
6
+
7
+ def initialize
8
+ logd("UAC controller created")
9
+ end
10
+ def start
11
+ ["msg-debug"].each do |level|
12
+ 1.times do
13
+ r = Request.create_initial("invite", "sip:nasir@agnity.com", :p_asserted_identity=>"sip:nina@home.com", :p_session_record=>level)
14
+ u = create_udp_session(SipperConfigurator[:DefaultRIP], SipperConfigurator[:LocalTestPort])
15
+ u.record_io = yield if block_given?
16
+ u.send(r)
17
+ logd("Sent a new request from uac_controller")
18
+ end
19
+ end
20
+ end
21
+
22
+ def on_success_res(session)
23
+ logd("Received response in the uac_controller")
24
+ if session.iresponse.cseq.to_s =~ /2/
25
+ session.invalidate(true)
26
+ session.flow_completed_for("TestEte")
27
+ end
28
+ end
29
+
30
+ def on_invite(session)
31
+ logd("on_invite called for #{name}")
32
+ r = session.create_response(200, "OK")
33
+ session.send(r)
34
+ sleep(0.02)
35
+ r = session.create_subsequent_request("invite")
36
+ session.send(r)
37
+ end
38
+
39
+ end