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,34 @@
1
+ require 'sip_test_driver_controller'
2
+
3
+ class UasController < SIP::SipTestDriverController
4
+
5
+ def initialize
6
+ logd("#{name} controller created")
7
+ end
8
+
9
+
10
+ def on_success_res(session)
11
+ logd("Received response in the #{name} controller")
12
+ end
13
+
14
+ def on_invite(session)
15
+ logd("on_invite called for #{name}")
16
+ if session.irequest.cseq.to_s =~ /2/
17
+ r = session.create_response(200)
18
+ session.send(r)
19
+ session.do_record("Just before invalidation")
20
+ session.invalidate(true)
21
+ return
22
+ end
23
+ session.local_tag = 5 #todo differentiate the key for UAC/UAS
24
+ r = session.create_response(200, "OK")
25
+ r.contact = "sip:nasir@home.com"
26
+ session.send(r)
27
+ logd("Sent response from #{name}")
28
+ sleep(1)
29
+ r = session.create_subsequent_request("invite")
30
+ logd("Sent another INVITE")
31
+ session.send(r)
32
+ end
33
+
34
+ end
@@ -0,0 +1,24 @@
1
+
2
+ require 'sip_test_driver_controller'
3
+
4
+ class ExtensionUacController < SIP::SipTestDriverController
5
+
6
+ transaction_usage :use_transactions=>false
7
+
8
+ def initialize
9
+ logd('#{name} controller created')
10
+ end
11
+
12
+ def start
13
+ session = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
14
+ r = session.create_initial_request('INVITE', 'sip:nasir@sipper.com', :p_session_record=>"msg-debug")
15
+ r.from = "Test Extension <sip:nasir@sipper.com>;tag=1"
16
+ session.send(r)
17
+ end
18
+
19
+ def on_success_res(session)
20
+ session.request_with('ACK')
21
+ session.invalidate(true)
22
+ end
23
+
24
+ end
@@ -0,0 +1,35 @@
1
+
2
+ require 'sip_test_driver_controller'
3
+
4
+ class ExtensionUasController < 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
+ # change the directive below to false to not start on load.
14
+ start_on_load true
15
+
16
+ def initialize
17
+ logd('#{name} controller created')
18
+ end
19
+
20
+ def on_invite(session)
21
+
22
+ session.respond_with(100)
23
+ session.respond_with(200)
24
+ end
25
+
26
+ def start
27
+ session = create_udp_session(SipperConfigurator[:DefaultRIP], SipperConfigurator[:DefaultRP])
28
+ end
29
+
30
+ def on_ack(session)
31
+ session.invalidate(true)
32
+ session.flow_completed_for('TestExtensions')
33
+ end
34
+
35
+ end
@@ -0,0 +1,16 @@
1
+ require 'sip_headers/header'
2
+
3
+ module SipHeaders
4
+ class From < AddressHeader
5
+
6
+ alias_method :orig_format, :_format
7
+
8
+ def _format
9
+ @display_name.upcase! if @display_name && @display_name == "Test Extension"
10
+ orig_format
11
+ end
12
+
13
+ private :_format, :orig_format
14
+
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ require 'transaction/state_machine_wrapper'
2
+
3
+ class AppIctHandler
4
+
5
+ def before_invite(txn)
6
+ txn.message.test_header = "Sipper"
7
+ end
8
+
9
+ def before_success_final(txn)
10
+ txn.message.test_response_header = "Sipper"
11
+ end
12
+
13
+ end
14
+
15
+
16
+ class AppIctHandlerNoAction
17
+
18
+ def before_non_success_final(txn)
19
+ txn.__consume_msg(true)
20
+ SIP::Transaction::SM_PROCEED_NO_ACTION
21
+ end
22
+
23
+ end
@@ -0,0 +1,27 @@
1
+ require 'transaction_handlers/app_ict_handler'
2
+
3
+ module SipIct
4
+ class UacIctTcbhController < SIP::SipTestDriverController
5
+
6
+ transaction_usage :use_transactions=>false, :use_ict=>true
7
+ transaction_handlers :Ict=>AppIctHandler
8
+ #start_on_load :true
9
+
10
+ def start
11
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
12
+ u.request_with("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-debug",
13
+ :test_name=>"TestControllerUsingIctWithTcbh")
14
+ logd("Sent a new INVITE from #{name}")
15
+ end
16
+
17
+ def on_success_res(session)
18
+ logd("Received response in #{name}")
19
+ if session.iresponse.test_response_header
20
+ logd("Test-Response-Header found in the response")
21
+ session.request_with("info")
22
+ end
23
+ session.invalidate
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+
2
+ require 'transaction_handlers/app_ict_handler'
3
+
4
+ module SipIct
5
+ class UacIctTcbhNoActionController < SIP::SipTestDriverController
6
+
7
+ transaction_usage :use_transactions=>false, :use_ict=>true
8
+ transaction_handlers :Ict=>AppIctHandlerNoAction
9
+ #start_on_load :true
10
+
11
+ def start
12
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
13
+ u.request_with("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info",
14
+ :test_name=>"TestControllerUsingIctWithTcbhNoAction")
15
+ logd("Sent a new INVITE from #{name}")
16
+ end
17
+
18
+ # even though we have the transaction we will create the ACK here as we have a
19
+ # no action tcbh.
20
+ def on_failure_res(session)
21
+ logd("Received response in #{name}")
22
+ session.create_and_send_ack
23
+ session.invalidate
24
+ end
25
+
26
+ end
27
+ end
28
+
@@ -0,0 +1,29 @@
1
+ require 'sip_test_driver_controller'
2
+
3
+ module SipIct
4
+ class UasIctTcbhController < SIP::SipTestDriverController
5
+ def on_invite(session)
6
+ logd("Received INVITE in #{name}")
7
+ session.local_tag = 5 #todo differentiate automatically on the same container somehow
8
+ session.respond_with(200)
9
+ end
10
+
11
+ def on_info(session)
12
+ session.invalidate
13
+ session.flow_completed_for("TestControllerUsingIctWithTcbh")
14
+ end
15
+
16
+ def order
17
+ 0
18
+ end
19
+
20
+ def interested?(r)
21
+ if r.test_name.to_s == "TestControllerUsingIctWithTcbh"
22
+ true
23
+ else
24
+ false
25
+ end
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,31 @@
1
+ require 'sip_test_driver_controller'
2
+
3
+ module SipIct
4
+
5
+ class UasIctTcbhNoActionController < SIP::SipTestDriverController
6
+
7
+ def on_invite(session)
8
+ logd("Received INVITE in #{name}")
9
+ session.local_tag = 5 #todo differentiate automatically on the same container somehow
10
+ session.respond_with(400)
11
+ end
12
+
13
+ def on_ack(session)
14
+ session.invalidate
15
+ session.flow_completed_for("TestControllerUsingIctWithTcbhNoAction")
16
+ end
17
+
18
+ def order
19
+ 0
20
+ end
21
+
22
+ def interested?(r)
23
+ if r.test_name.to_s == "TestControllerUsingIctWithTcbhNoAction"
24
+ true
25
+ else
26
+ false
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ require 'transaction/state_machine_wrapper'
2
+
3
+ class AppIstHandler
4
+
5
+ def before_success_final(txn)
6
+ txn.message.test_response_header = "Sipper"
7
+ end
8
+
9
+ def before_timer_Z(txn)
10
+ txn.message.terminal_header = "Sipper" # This message must be 2xx as it was last received
11
+ end
12
+
13
+ end
@@ -0,0 +1,22 @@
1
+
2
+ module SipIst
3
+ class UacIstTcbhController < SIP::SipTestDriverController
4
+
5
+ transaction_usage :use_transactions=>false, :use_ict=>true
6
+
7
+ #start_on_load :true
8
+
9
+ def start
10
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
11
+ u.request_with("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-debug")
12
+ logd("Sent a new INVITE from #{name}")
13
+ end
14
+
15
+ def on_success_res(session)
16
+ logd("Received response in #{name}")
17
+ session.request_with("ack")
18
+ session.invalidate
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,31 @@
1
+ require 'sip_test_driver_controller'
2
+ require 'app_ist_handler'
3
+
4
+ module SipIst
5
+ class UasIstTcbhController < SIP::SipTestDriverController
6
+ transaction_handlers :Ist=>AppIstHandler
7
+ transaction_usage :use_transactions=>false, :use_ist=>true
8
+ transaction_timers :tz=>50
9
+ def on_invite(session)
10
+ logd("Received INVITE in #{name}")
11
+ session.local_tag = 5 #todo differentiate automatically on the same container somehow
12
+ session.respond_with(200)
13
+ session['txn'] = session.irequest.transaction
14
+ end
15
+
16
+ def on_ack(session)
17
+ sleep 0.1
18
+ # the tcbh sets a header on the response
19
+ # note: it is better to use hash access for custom headers because if they are not
20
+ # created you will not get a method missing exception.
21
+ session.do_record("Header found") if session['txn'].message[:terminal_header]
22
+ session.invalidate
23
+ session.flow_completed_for("TestControllerUsingIstWithTcbh")
24
+ end
25
+
26
+ def order
27
+ 0
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,2 @@
1
+ - MyInTransportHandler2
2
+ - MyInTransportHandler1
@@ -0,0 +1,21 @@
1
+ require 'transport/base_transport'
2
+
3
+ class MyInTransportHandler2 < Transport::TransportIngressFilter
4
+ def do_filter(msg)
5
+ m = msg.gsub(/zz/, "aa") unless msg =~ /200 OK/
6
+ m ? m : msg
7
+ end
8
+ end
9
+
10
+ class MyOutTransportHandler1 < Transport::TransportOutgressFilter
11
+ def do_filter(msg)
12
+ m = msg.gsub(/xx/, "yy") unless msg =~ /200 OK/
13
+ m ? m : msg
14
+ end
15
+ end
16
+
17
+
18
+ =begin
19
+ UAC (only on requests) UAS
20
+ >--Test-Header(xx->yy)(yy->zz) -->-------(zz->aa)(aa->bb)-------->
21
+ =end
@@ -0,0 +1,21 @@
1
+ require 'transport/base_transport'
2
+
3
+ class MyInTransportHandler1 < Transport::TransportIngressFilter
4
+ def do_filter(msg)
5
+ m = msg.gsub(/aa/, "bb") unless msg =~ /200 OK/
6
+ m ? m : msg
7
+ end
8
+ end
9
+
10
+ class MyOutTransportHandler2 < Transport::TransportOutgressFilter
11
+ def do_filter(msg)
12
+ m = msg.gsub(/yy/, "zz") unless msg =~ /200 OK/
13
+ m ? m : msg
14
+ end
15
+ end
16
+
17
+
18
+ =begin
19
+ UAC (only on requests) UAS
20
+ >--Test-Header(xx->yy)(yy->zz) -->-------(zz->aa)(aa->bb)-------->
21
+ =end
@@ -0,0 +1,2 @@
1
+ - MyOutTransportHandler1
2
+ - MyOutTransportHandler2
@@ -0,0 +1,27 @@
1
+
2
+ require 'sip_test_driver_controller'
3
+
4
+ class UacMultiTrHandlerController < SIP::SipTestDriverController
5
+
6
+ transaction_usage :use_transactions=>false
7
+
8
+ def initialize
9
+ logd('#{name} controller created')
10
+ end
11
+
12
+ def start
13
+ session = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
14
+ session.request_with('INFO', 'sip:nasir@sipper.com', :test_header => "xx")
15
+ end
16
+
17
+ def on_success_res(session)
18
+ session.invalidate(true)
19
+ session.flow_completed_for('TestTransportMultiHandler')
20
+ end
21
+
22
+ end
23
+
24
+ =begin
25
+ UAC (only on requests) UAS
26
+ >--Test-Header(xx->yy)(yy->zz) -->-------(zz->aa)(aa->bb)-------->
27
+ =end
@@ -0,0 +1,29 @@
1
+ require 'base_controller'
2
+
3
+ class UasMultiTrHandlerController < 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_info(session)
17
+ if session.irequest.test_header == "bb"
18
+ session.do_record("Transform OK")
19
+ end
20
+ session.respond_with(200)
21
+ session.invalidate(true)
22
+ end
23
+
24
+ end
25
+
26
+ =begin
27
+ UAC (only on requests) UAS
28
+ >--Test-Header(xx->yy)(yy->zz) -->-------(zz->aa)(aa->bb)-------->
29
+ =end
@@ -0,0 +1,2 @@
1
+ class BlankTest
2
+ end