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,88 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestSubsequentUnsent < DrivenSipTestCase
5
+
6
+ def setup
7
+ @orig_compliance = SipperConfigurator[:ProtocolCompliance]
8
+ SipperConfigurator[:ProtocolCompliance]='strict'
9
+ super
10
+ str = <<-EOF
11
+
12
+ require 'sip_test_driver_controller'
13
+
14
+ module SipInline
15
+ class UasUnsentController < SIP::SipTestDriverController
16
+
17
+ transaction_usage :use_transactions=>true
18
+
19
+ def on_invite(session)
20
+ session.respond_with(200)
21
+ end
22
+
23
+ def on_ack(session)
24
+ r1 = session.create_subsequent_request("message")
25
+ r2 = session.create_subsequent_request("message")
26
+ session.send r2
27
+ rescue RuntimeError
28
+ session.do_record("cannot_send_message")
29
+ session.rollback_to_unsent_state
30
+ session.request_with("message")
31
+ end
32
+
33
+ def on_success_res(session)
34
+ res = session.iresponse
35
+ if res.get_request_method == "MESSAGE" &&
36
+ SipperUtil.cseq_number(res.cseq) == 1
37
+ session.invalidate(true)
38
+ session.flow_completed_for("TestSubsequentUnsent")
39
+ end
40
+ end
41
+
42
+ def order
43
+ 0
44
+ end
45
+ end
46
+
47
+ class UacUnsentController < SIP::SipTestDriverController
48
+
49
+ transaction_usage :use_transactions=>true
50
+
51
+ def start
52
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
53
+ u.request_with("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
54
+ logd("Sent a new INVITE from "+name)
55
+ end
56
+
57
+ def on_success_res(session)
58
+ session.request_with('ack')
59
+ end
60
+
61
+ def on_message(session)
62
+ session.respond_with(200)
63
+ session.invalidate(true)
64
+ end
65
+
66
+ end
67
+ end
68
+ EOF
69
+ define_controller_from(str)
70
+ set_controller("SipInline::UacUnsentController")
71
+ end
72
+
73
+
74
+ def test_subsequent
75
+ self.expected_flow = ["> INVITE", "< 100", "< 200 {1,}", "> ACK", "< MESSAGE", "> 200"]
76
+ start_controller
77
+ verify_call_flow(:out)
78
+ self.expected_flow = ["< INVITE {1,}", "> 100", "> 200", "< ACK", "! cannot_send_message", "> MESSAGE", "< 200"]
79
+ verify_call_flow(:in)
80
+ end
81
+
82
+ def teardown
83
+ SipperConfigurator[:ProtocolCompliance] = @orig_compliance
84
+ super
85
+ end
86
+
87
+ end
88
+
@@ -0,0 +1,128 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # UAC runs on 5066
5
+ # UAS runs on 5067
6
+ # Proxy runs on 5068
7
+
8
+ class TestTargetRefreshProxyDetached < DrivenSipTestCase
9
+
10
+
11
+ # To run this test in windows, in a separate shell execute the proxy
12
+ # "srun -p 5068 -0 5067 -c nonrr_proxy.rb"
13
+ # and set an env var
14
+ # "set SIPPER_TEST_PROXY_EXTERNAL=true"
15
+ # You would do similar thing for rr_proxy with a higher port in a second shell
16
+ # "srun -p 5069 -0 5067 -c rr_proxy.rb"
17
+ # Let these two proxies run.
18
+ # Then run the test cases, after you are done make sure to unset the env var by
19
+ # "set SIPPER_TEST_PROXY_EXTERNAL="
20
+ # For one run you need only to execute the two proxies only once for all tests.
21
+ def setup
22
+ @sr = SipperConfigurator[:SessionRecord]
23
+ SipperConfigurator[:SessionRecord] = "msg-info"
24
+ @tp = SipperConfigurator[:LocalTestPort]
25
+ SipperConfigurator[:LocalTestPort] = [5066, 5067]
26
+
27
+ super
28
+ unless RUBY_PLATFORM =~ /mswin/
29
+ system("srun -p #{SipperConfigurator[:LocalTestPort][1]+1} -o #{SipperConfigurator[:LocalTestPort][1]} -rf 3 -c #{File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "nonrr_proxy.rb")} &")
30
+ end
31
+
32
+ str2 = <<-EOF2
33
+
34
+ require 'sip_test_driver_controller'
35
+
36
+ module SipInline
37
+ class UasRt3Controller < SIP::SipTestDriverController
38
+
39
+ transaction_usage :use_transactions=>true
40
+
41
+ def specified_transport
42
+ [SipperConfigurator[:LocalSipperIP],
43
+ SipperConfigurator[:LocalTestPort][1]]
44
+ end
45
+
46
+ def on_invite(session)
47
+ if session.irequest[:via].length == 2
48
+ session.do_record("double_via")
49
+ end
50
+ session.respond_with(200)
51
+ logd("Received INVITE sent a 200 from "+name)
52
+ end
53
+
54
+ def on_ack(session)
55
+ session.request_with("bye")
56
+ end
57
+
58
+ def on_success_res(session)
59
+ session.invalidate(true)
60
+ session.flow_completed_for("TestTargetRefreshProxyDetached")
61
+ end
62
+
63
+ def order
64
+ 0
65
+ end
66
+
67
+ end
68
+
69
+ class UacRt3Controller < SIP::SipTestDriverController
70
+
71
+ transaction_usage :use_transactions=>true
72
+
73
+ pre_existing_route_set ["sip:#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]+1};lr"]
74
+
75
+ def specified_transport
76
+ [SipperConfigurator[:LocalSipperIP],
77
+ SipperConfigurator[:LocalTestPort][0]]
78
+ end
79
+
80
+ def start
81
+ u = create_session()
82
+ r = u.create_initial_request("invite",
83
+ "sip:nasir@#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]}", :to=>"Nasir Khan <sip:nasir@sipper.com>")
84
+ u.send(r)
85
+ logd("Sent a new INVITE from "+name)
86
+ end
87
+
88
+
89
+ def on_success_res(session)
90
+ session.request_with('ACK')
91
+ end
92
+
93
+ def on_bye(session)
94
+ if session.irequest[:via].length == 1
95
+ session.do_record("single_via")
96
+ end
97
+ session.respond_with(200)
98
+ session.invalidate(true)
99
+ end
100
+
101
+ end
102
+ end
103
+ EOF2
104
+ define_controller_from(str2)
105
+ set_controller("SipInline::UacRt3Controller")
106
+ end
107
+
108
+
109
+ def test_rt1_controllers
110
+ if RUBY_PLATFORM =~ /mswin/ && !ENV['SIPPER_TEST_PROXY_EXTERNAL']
111
+ return
112
+ end
113
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK", "< BYE","! single_via", "> 200"]
114
+ start_controller
115
+ sleep 3
116
+ verify_call_flow(:out)
117
+ self.expected_flow = ["< INVITE", "> 100", "! double_via", "> 200", "< ACK", "> BYE", "< 200"]
118
+ verify_call_flow(:in)
119
+ end
120
+
121
+ def teardown
122
+ SipperConfigurator[:SessionRecord] = @sr
123
+ SipperConfigurator[:LocalTestPort] = @tp
124
+ super
125
+ end
126
+
127
+ end
128
+
@@ -0,0 +1,130 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # UAC runs on 5066
5
+ # UAS runs on 5067
6
+ # Proxy runs on 5068
7
+
8
+ class TestTargetRefreshProxyUdp < DrivenSipTestCase
9
+
10
+
11
+ # To run this test in windows, in a separate shell execute the proxy
12
+ # "srun -p 5068 -0 5067 -c nonrr_proxy.rb"
13
+ # and set an env var
14
+ # "set SIPPER_TEST_PROXY_EXTERNAL=true"
15
+ # You would do similar thing for rr_proxy with a higher port in a second shell
16
+ # "srun -p 5069 -0 5067 -c rr_proxy.rb"
17
+ # Let these two proxies run.
18
+ # Then run the test cases, after you are done make sure to unset the env var by
19
+ # "set SIPPER_TEST_PROXY_EXTERNAL="
20
+ # For one run you need only to execute the two proxies only once for all tests.
21
+ def setup
22
+ @sr = SipperConfigurator[:SessionRecord]
23
+ SipperConfigurator[:SessionRecord] = "msg-info"
24
+ @tp = SipperConfigurator[:LocalTestPort]
25
+ SipperConfigurator[:LocalTestPort] = [5066, 5067]
26
+
27
+ super
28
+ unless RUBY_PLATFORM =~ /mswin/
29
+ system("srun -p #{SipperConfigurator[:LocalTestPort][1]+1} -o #{SipperConfigurator[:LocalTestPort][1]} -rf 3 -c #{File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "nonrr_proxy.rb")} &")
30
+ end
31
+
32
+ str2 = <<-EOF2
33
+
34
+ require 'sip_test_driver_controller'
35
+
36
+ module SipInline
37
+ class UasRt4Controller < SIP::SipTestDriverController
38
+
39
+ transaction_usage :use_transactions=>true
40
+
41
+ def specified_transport
42
+ [SipperConfigurator[:LocalSipperIP],
43
+ SipperConfigurator[:LocalTestPort][1]]
44
+ end
45
+
46
+ def on_invite(session)
47
+ if session.irequest[:via].length == 2
48
+ session.do_record("double_via")
49
+ end
50
+ session.respond_with(200)
51
+ logd("Received INVITE sent a 200 from "+name)
52
+ end
53
+
54
+ def on_ack(session)
55
+ end
56
+
57
+
58
+ def on_bye(session)
59
+ if session.irequest[:via].length == 1
60
+ session.do_record("single_via")
61
+ end
62
+ session.respond_with(200)
63
+ session.invalidate(true)
64
+ end
65
+
66
+ def order
67
+ 0
68
+ end
69
+
70
+ end
71
+
72
+ class UacRt4Controller < SIP::SipTestDriverController
73
+
74
+ transaction_usage :use_transactions=>true
75
+
76
+ pre_existing_route_set ["sip:#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]+1};lr"]
77
+
78
+ def specified_transport
79
+ [SipperConfigurator[:LocalSipperIP],
80
+ SipperConfigurator[:LocalTestPort][0]]
81
+ end
82
+
83
+ def start
84
+ u = create_udp_session()
85
+ r = u.create_initial_request("invite",
86
+ "sip:nasir@#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]}")
87
+ u.send(r)
88
+ logd("Sent a new INVITE from "+name)
89
+ end
90
+
91
+
92
+ def on_success_res_for_invite(session)
93
+ session.request_with('ACK')
94
+ session.request_with("bye")
95
+ end
96
+
97
+ def on_success_res_for_bye(session)
98
+ session.invalidate(true)
99
+ session.flow_completed_for("TestTargetRefreshProxyUdp")
100
+ end
101
+
102
+
103
+ end
104
+ end
105
+ EOF2
106
+ define_controller_from(str2)
107
+ set_controller("SipInline::UacRt4Controller")
108
+ end
109
+
110
+
111
+ def test_rt1_controllers
112
+ if RUBY_PLATFORM =~ /mswin/ && !ENV['SIPPER_TEST_PROXY_EXTERNAL']
113
+ return
114
+ end
115
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK", "> BYE", "< 200"]
116
+ start_controller
117
+ sleep 3
118
+ verify_call_flow(:out)
119
+ self.expected_flow = ["< INVITE", "> 100", "! double_via", "> 200", "< ACK", "< BYE", "! single_via", "> 200"]
120
+ verify_call_flow(:in)
121
+ end
122
+
123
+ def teardown
124
+ SipperConfigurator[:SessionRecord] = @sr
125
+ SipperConfigurator[:LocalTestPort] = @tp
126
+ super
127
+ end
128
+
129
+ end
130
+
@@ -0,0 +1,133 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # UAC runs on 5066
5
+ # UAS runs on 5067
6
+ # Proxy runs on 5069
7
+
8
+ # To run this test in windows, in a separate shell execute the proxy
9
+ # "srun -p 5068 -0 5067 -c nonrr_proxy.rb"
10
+ # and set an env var
11
+ # "set SIPPER_TEST_PROXY_EXTERNAL=true"
12
+ # You would do similar thing for rr_proxy with a higher port in a second shell
13
+ # "srun -p 5069 -0 5067 -c rr_proxy.rb"
14
+ # Let these two proxies run.
15
+ # Then run the test cases, after you are done make sure to unset the env var by
16
+ # "set SIPPER_TEST_PROXY_EXTERNAL="
17
+ # For one run you need only to execute the two proxies only once for all tests.
18
+ class TestTargetRefreshRrProxyUdp < DrivenSipTestCase
19
+
20
+
21
+ def setup
22
+ @sr = SipperConfigurator[:SessionRecord]
23
+ SipperConfigurator[:SessionRecord] = "msg-info"
24
+ @tp = SipperConfigurator[:LocalTestPort]
25
+ SipperConfigurator[:LocalTestPort] = [5066, 5067]
26
+
27
+ super
28
+ unless RUBY_PLATFORM =~ /mswin/
29
+ system("srun -p #{SipperConfigurator[:LocalTestPort][1]+2} -o #{SipperConfigurator[:LocalTestPort][1]} -rf 3 -c #{File.join(SipperConfigurator[:SipperBasePath],"sipper_test", "rr_proxy.rb")} &")
30
+ end
31
+
32
+ str2 = <<-EOF2
33
+
34
+ require 'sip_test_driver_controller'
35
+
36
+ module SipInline
37
+ class UasRt5Controller < SIP::SipTestDriverController
38
+
39
+ transaction_usage :use_transactions=>true
40
+
41
+ def specified_transport
42
+ [SipperConfigurator[:LocalSipperIP],
43
+ SipperConfigurator[:LocalTestPort][1]]
44
+ end
45
+
46
+ def on_invite(session)
47
+ if session.irequest[:via].length == 2
48
+ session.do_record("double_via")
49
+ end
50
+ session.respond_with(200)
51
+ logd("Received INVITE sent a 200 from "+name)
52
+ end
53
+
54
+ def on_ack(session)
55
+ if session.irequest[:via].length == 2
56
+ session.do_record("double_via")
57
+ end
58
+ end
59
+
60
+
61
+ def on_bye(session)
62
+ if session.irequest[:via].length == 2
63
+ session.do_record("double_via")
64
+ end
65
+ session.respond_with(200)
66
+ session.invalidate(true)
67
+ end
68
+
69
+ def order
70
+ 0
71
+ end
72
+
73
+ end
74
+
75
+ class UacRt5Controller < SIP::SipTestDriverController
76
+
77
+ transaction_usage :use_transactions=>true
78
+
79
+ pre_existing_route_set ["sip:#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]+2};lr"]
80
+
81
+ def specified_transport
82
+ [SipperConfigurator[:LocalSipperIP],
83
+ SipperConfigurator[:LocalTestPort][0]]
84
+ end
85
+
86
+ def start
87
+ u = create_udp_session()
88
+ r = u.create_initial_request("invite",
89
+ "sip:nasir@#{SipperConfigurator[:LocalSipperIP]}:#{SipperConfigurator[:LocalTestPort][1]}")
90
+ u.send(r)
91
+ logd("Sent a new INVITE from "+name)
92
+ end
93
+
94
+
95
+ def on_success_res_for_invite(session)
96
+ session.request_with('ACK')
97
+ session.request_with("bye")
98
+ end
99
+
100
+ def on_success_res_for_bye(session)
101
+ session.invalidate(true)
102
+ session.flow_completed_for("TestTargetRefreshRrProxyUdp")
103
+ end
104
+
105
+
106
+ end
107
+ end
108
+ EOF2
109
+ define_controller_from(str2)
110
+ set_controller("SipInline::UacRt5Controller")
111
+ end
112
+
113
+
114
+ def test_rt1_controllers
115
+ if RUBY_PLATFORM =~ /mswin/ && !ENV['SIPPER_TEST_PROXY_EXTERNAL']
116
+ return
117
+ end
118
+ self.expected_flow = ["> INVITE {1,}", "< 100", "< 200", "> ACK", "> BYE", "< 200"]
119
+ start_controller
120
+ sleep 3
121
+ verify_call_flow(:out)
122
+ self.expected_flow = ["< INVITE", "> 100", "! double_via", "> 200", "< ACK", "! double_via", "< BYE", "! double_via", "> 200"]
123
+ verify_call_flow(:in)
124
+ end
125
+
126
+ def teardown
127
+ SipperConfigurator[:SessionRecord] = @sr
128
+ SipperConfigurator[:LocalTestPort] = @tp
129
+ super
130
+ end
131
+
132
+ end
133
+