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,84 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestStrictRouterWithAngled < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+ require 'sip_test_driver_controller'
10
+
11
+ module SipInline
12
+
13
+ class UasRs2Controller < 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("TestStrictRouterWithAngled")
33
+ end
34
+
35
+
36
+ def order
37
+ 0
38
+ end
39
+ end
40
+
41
+ class UacRs2Controller < 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>,<sip:example2.com>")
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::UacRs2Controller")
73
+ end
74
+
75
+
76
+ def test_rs_controllers
77
+ self.expected_flow = ["> INVITE", "< 100","< 200", "> ACK", "< SUBSCRIBE", "! <sip:example2.com>", "! <sip:127.0.0.1:5066;transport=UDP>", "> 200"]
78
+ start_controller
79
+ verify_call_flow(:out)
80
+ self.expected_flow = ["< INVITE", "> 100", "> 200", "< ACK","! <sip:example1.com>", "! <sip:127.0.0.1:5066;transport=UDP>", "> SUBSCRIBE","< 200"]
81
+ verify_call_flow(:in)
82
+ end
83
+
84
+ end
@@ -0,0 +1,31 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),"..","sipper")
2
+
3
+
4
+ require 'driven_sip_test_case'
5
+ require 'stringio'
6
+
7
+
8
+ class TestStringRecord < DrivenSipTestCase
9
+
10
+ def setup
11
+ SipperConfigurator[:ControllerPath] = File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "test_controllers", "string")
12
+ super
13
+ end
14
+
15
+ def test_string_record
16
+ start_named_controller("StringRecord::UacController", true)
17
+ sleep 1 #todo can you fix these sleeps
18
+
19
+ record_in = get_in_recording( 0 )
20
+ record_out = get_out_recording( 0 )
21
+
22
+ # uac
23
+ assert_equal("> INFO", record_out.get_recording[0])
24
+ assert_equal("< 200", record_out.get_recording[1])
25
+
26
+ #uas
27
+ assert_equal("< INFO", record_in.get_recording[0])
28
+ assert_equal("> 200", record_in.get_recording[1])
29
+ end
30
+
31
+ end
@@ -0,0 +1,141 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestSubscribeNotify < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+
12
+ module TestSubscribeNotify_SipInline
13
+ class Uas2xxController < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>false
16
+
17
+
18
+ session_timer 1500
19
+
20
+ def on_subscribe(session)
21
+ logd("Received Subscribe in #{name}")
22
+
23
+ subscription = session.get_subscription(session.irequest)
24
+
25
+ if subscription == nil
26
+ logd("New subscription received.")
27
+ subscription = session.create_subscription_from_request(session.irequest)
28
+ else
29
+ logd("Subscription refresh received.")
30
+ subscription = session.update_subscription(session.irequest)
31
+ end
32
+
33
+ response = session.create_response(202)
34
+ session.send_response(response)
35
+
36
+ session.start_subscription_expiry_timer(subscription, response)
37
+
38
+ notifyReq = session.create_subsequent_request("NOTIFY")
39
+ session.add_subscription_to_request(notifyReq, subscription)
40
+ notifyReq.content = "message-waiting: no\r\n"
41
+ notifyReq.content_type = "application/simple-message-summary"
42
+
43
+ session.send_request(notifyReq)
44
+
45
+ if subscription.state == "terminated"
46
+ session['closeState'] = 1
47
+ end
48
+ end
49
+
50
+ def on_subscription_timeout(session, subscription)
51
+ logd("Received Subscription timeout in #{name}")
52
+
53
+ subscription.state = "terminated"
54
+
55
+ notifyReq = session.create_subsequent_request("NOTIFY")
56
+ session.add_subscription_to_request(notifyReq, subscription)
57
+ notifyReq.content = "message-waiting: no\r\n"
58
+ notifyReq.content_type = "application/simple-message-summary"
59
+
60
+ session.send_request(notifyReq)
61
+
62
+ if subscription.state == "terminated"
63
+ session['closeState'] = 1
64
+ end
65
+ end
66
+
67
+ def on_success_res(session)
68
+ logd("Received response in #{name}")
69
+
70
+ if session['closeState'] == 1
71
+ session.invalidate
72
+ session.flow_completed_for("TestSubscribeNotify")
73
+ end
74
+ end
75
+
76
+ def order
77
+ 0
78
+ end
79
+ end
80
+
81
+ class Uac2xxController < SIP::SipTestDriverController
82
+ transaction_usage :use_transactions=>false
83
+ session_timer 500
84
+
85
+ def start
86
+ r = Request.create_initial("subscribe", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
87
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
88
+ subscription = u.create_subscription("message_summary", 5)
89
+ u.add_subscription_to_request(r, subscription)
90
+ r.expires = "1"
91
+ u.send(r)
92
+ logd("Sent a new Subscribe from #{name}")
93
+ end
94
+
95
+ def on_notify(session)
96
+ logd("Received notify in #{name}")
97
+
98
+ subscription = session.get_subscription(session.irequest)
99
+
100
+ if subscription == nil
101
+ logd("Unsolicited notify received.")
102
+ session.respond_with(200)
103
+ return
104
+ end
105
+
106
+ session.respond_with(200)
107
+
108
+ subscription = session.update_subscription(session.irequest)
109
+
110
+ if subscription.state == "terminated"
111
+ session.invalidate
112
+ end
113
+ end
114
+
115
+ def on_subscription_refresh_timeout(session, subscription)
116
+ logd("Received refresh timeout. in #{name}")
117
+ end
118
+
119
+ def on_success_res(session)
120
+ logd("Received response in #{name}")
121
+ end
122
+ end
123
+ end
124
+ EOF
125
+ define_controller_from(str)
126
+ set_controller("TestSubscribeNotify_SipInline::Uac2xxController")
127
+ end
128
+
129
+
130
+ def test_subscribe_notify
131
+ self.expected_flow = ["> SUBSCRIBE","< 202 {0,}", "< NOTIFY", "< 202 {0,}", "> 200", "< NOTIFY", "> 200"]
132
+ start_controller
133
+ verify_call_flow(:out)
134
+ self.expected_flow = ["< SUBSCRIBE","> 202", "> NOTIFY", "< 200", "> NOTIFY", "< 200"]
135
+
136
+ verify_call_flow(:in)
137
+ end
138
+
139
+ end
140
+
141
+
@@ -0,0 +1,158 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestSubscribeNotifyClientTimeout < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+
12
+ module TestSubscribeNotifyClientTimeout_SipInline
13
+ class Uas2xxController < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>false
16
+
17
+ t2xx_usage true
18
+
19
+ t1xx_timers :Start=>100
20
+
21
+ session_timer 1500
22
+
23
+ def on_subscribe(session)
24
+ logd("Received Subscribe in #{name}")
25
+
26
+ subscription = session.get_subscription(session.irequest)
27
+
28
+ if subscription == nil
29
+ logd("New subscription received.")
30
+ subscription = session.create_subscription_from_request(session.irequest)
31
+ else
32
+ logd("Subscription refresh received.")
33
+ subscription = session.update_subscription(session.irequest)
34
+ end
35
+
36
+ response = session.create_response(202)
37
+ session.send_response(response)
38
+
39
+ session.start_subscription_expiry_timer(subscription, response)
40
+
41
+ notifyReq = session.create_subsequent_request("NOTIFY")
42
+ session.add_subscription_to_request(notifyReq, subscription)
43
+ notifyReq.content = "message-waiting: no\r\n"
44
+ notifyReq.content_type = "application/simple-message-summary"
45
+
46
+ session.send_request(notifyReq)
47
+
48
+ if subscription.state == "terminated"
49
+ session['closeState'] = 1
50
+ end
51
+ end
52
+
53
+ def on_subscription_timeout(session, subscription)
54
+ logd("Received Subscription timeout in #{name}")
55
+
56
+ subscription.state = "terminated"
57
+
58
+ notifyReq = session.create_subsequent_request("NOTIFY")
59
+ session.add_subscription_to_request(notifyReq, subscription)
60
+ notifyReq.content = "message-waiting: no\r\n"
61
+ notifyReq.content_type = "application/simple-message-summary"
62
+
63
+ session.send_request(notifyReq)
64
+
65
+ if subscription.state == "terminated"
66
+ session['closeState'] = 1
67
+ end
68
+ end
69
+
70
+ def on_success_res(session)
71
+ logd("Received response in #{name}")
72
+
73
+ if session['closeState'] == 1
74
+ session.invalidate
75
+ session.flow_completed_for("TestSubscribeNotifyClientTimeout")
76
+ end
77
+ end
78
+
79
+ def order
80
+ 0
81
+ end
82
+ end
83
+
84
+ class Uac2xxController < SIP::SipTestDriverController
85
+ transaction_usage :use_transactions=>false
86
+ session_timer 500
87
+
88
+ def start
89
+ r = Request.create_initial("subscribe", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
90
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
91
+ u.use_transactions = true
92
+ subscription = u.create_subscription("message_summary", 5)
93
+ u.add_subscription_to_request(r, subscription)
94
+ r.expires = "1"
95
+ u.send(r)
96
+
97
+ u["currSubscription"] = subscription
98
+ logd("Sent a new Subscribe from #{name}")
99
+ end
100
+
101
+ def on_notify(session)
102
+ logd("Received notify in #{name}")
103
+
104
+ subscription = session.get_subscription(session.irequest)
105
+
106
+ if subscription == nil
107
+ logd("Unsolicited notify received.")
108
+ session.respond_with(200)
109
+ return
110
+ end
111
+
112
+ session.respond_with(200)
113
+
114
+ subscription = session.update_subscription(session.irequest)
115
+
116
+ if subscription.state == "terminated"
117
+ session.invalidate
118
+ end
119
+ end
120
+
121
+ def on_subscription_refresh_timeout(session, subscription)
122
+ logd("Received refresh timeout. in #{name}")
123
+ if session["refreshedSubscription"] == nil
124
+ session["refreshedSubscription"] = "yes"
125
+ subReq = session.create_subsequent_request("SUBSCRIBE")
126
+ session.add_subscription_to_request(subReq, subscription)
127
+ subReq.expires = "1"
128
+ session.send(subReq)
129
+ end
130
+ end
131
+
132
+ def on_success_res(session)
133
+ logd("Received subscription response in #{name}")
134
+ request = session.iresponse.get_request()
135
+ #subscription = session["currSubscription"]
136
+ subscription = session.get_subscription(request)
137
+ session.start_subscription_refresh_timer(subscription, session.iresponse)
138
+ end
139
+ end
140
+ end
141
+ EOF
142
+ define_controller_from(str)
143
+ set_controller("TestSubscribeNotifyClientTimeout_SipInline::Uac2xxController")
144
+ end
145
+
146
+
147
+ def test_subscribe_notify
148
+ self.expected_flow = ["> SUBSCRIBE", "< 202", "< NOTIFY", "> 200", "> SUBSCRIBE", "< 202", "< NOTIFY", "> 200", "< NOTIFY", "> 200"]
149
+ start_controller
150
+ verify_call_flow(:out)
151
+ self.expected_flow = ["< SUBSCRIBE", "> 202", "> NOTIFY", "< 200", "< SUBSCRIBE", "> 202", "> NOTIFY", "< 200", "> NOTIFY", "< 200"]
152
+
153
+ verify_call_flow(:in)
154
+ end
155
+
156
+ end
157
+
158
+
@@ -0,0 +1,146 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestSubscribeNotifyDialog < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+
12
+ module TestSubscribeNotifyDialog_SipInline
13
+ class Uas2xxController < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>false
16
+
17
+ t2xx_usage true
18
+
19
+ t1xx_timers :Start=>100
20
+
21
+ session_timer 1500
22
+
23
+ def on_subscribe(session)
24
+ logd("Received Subscribe in #{name}")
25
+
26
+ subscription = session.get_subscription(session.irequest)
27
+
28
+ if subscription == nil
29
+ logd("New subscription received.")
30
+ subscription = session.create_subscription_from_request(session.irequest)
31
+ else
32
+ logd("Subscription refresh received.")
33
+ subscription = session.update_subscription(session.irequest)
34
+ end
35
+
36
+ response = session.create_response(202)
37
+ session[:response202] = response
38
+ session.start_subscription_expiry_timer(subscription, response)
39
+
40
+ notifyReq = session.create_subsequent_request("NOTIFY")
41
+ session.add_subscription_to_request(notifyReq, subscription)
42
+ notifyReq.content = "message-waiting: no\r\n"
43
+ notifyReq.content_type = "application/simple-message-summary"
44
+
45
+ session.send_request(notifyReq)
46
+
47
+
48
+ if subscription.state == "terminated"
49
+ session['closeState'] = 1
50
+ end
51
+ end
52
+
53
+ def on_subscription_timeout(session, subscription)
54
+ logd("Received Subscription timeout in #{name}")
55
+
56
+ subscription.state = "terminated"
57
+
58
+ notifyReq = session.create_subsequent_request("NOTIFY")
59
+ session.add_subscription_to_request(notifyReq, subscription)
60
+ notifyReq.content = "message-waiting: no\r\n"
61
+ notifyReq.content_type = "application/simple-message-summary"
62
+
63
+ session.send_request(notifyReq)
64
+
65
+ if subscription.state == "terminated"
66
+ session['closeState'] = 1
67
+ end
68
+ end
69
+
70
+ def on_success_res(session)
71
+ logd("Received response in #{name}")
72
+
73
+ if session['closeState'] == 1
74
+ session.invalidate
75
+ session.flow_completed_for("TestSubscribeNotifyDialog")
76
+ else
77
+ session.send_response(session[:response202])
78
+ end
79
+ end
80
+
81
+ def order
82
+ 0
83
+ end
84
+ end
85
+
86
+ class Uac2xxController < SIP::SipTestDriverController
87
+ transaction_usage :use_transactions=>false
88
+ session_timer 500
89
+
90
+ def start
91
+ r = Request.create_initial("subscribe", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
92
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
93
+ subscription = u.create_subscription("message_summary", 5)
94
+ u.add_subscription_to_request(r, subscription)
95
+ r.expires = "1"
96
+ u.send(r)
97
+ logd("Sent a new Subscribe from #{name}")
98
+ end
99
+
100
+ def on_notify(session)
101
+ logd("Received notify in #{name}")
102
+
103
+ subscription = session.get_subscription(session.irequest)
104
+
105
+ if subscription == nil
106
+ logd("Unsolicited notify received.")
107
+ session.respond_with(200)
108
+ return
109
+ end
110
+
111
+ session.respond_with(200)
112
+
113
+ subscription = session.update_subscription(session.irequest)
114
+
115
+ if subscription.state == "terminated"
116
+ session.invalidate
117
+ end
118
+ end
119
+
120
+ def on_subscription_refresh_timeout(session, subscription)
121
+ logd("Received refresh timeout. in #{name}")
122
+ end
123
+
124
+ def on_success_res(session)
125
+ logd("Received response in #{name}")
126
+ end
127
+ end
128
+ end
129
+ EOF
130
+ define_controller_from(str)
131
+ set_controller("TestSubscribeNotifyDialog_SipInline::Uac2xxController")
132
+ end
133
+
134
+
135
+ def test_subscribe_notify
136
+ self.expected_flow = ["> SUBSCRIBE", "< NOTIFY", "> 200", "< 202", "< NOTIFY", "> 200"]
137
+ start_controller
138
+ verify_call_flow(:out)
139
+ self.expected_flow = ["< SUBSCRIBE", "> NOTIFY", "< 200", "> 202", "> NOTIFY", "< 200"]
140
+
141
+ verify_call_flow(:in)
142
+ end
143
+
144
+ end
145
+
146
+