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,105 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestPrack < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+
12
+ module TestPrack_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 500
22
+
23
+ def on_invite(session)
24
+ logd("Received INVITE in #{name}")
25
+ session[:inviteReq] = session.irequest
26
+ session.respond_with(100)
27
+ session.respond_reliably_with(183, session[:inviteReq])
28
+ session['prackState'] = '183'
29
+ end
30
+
31
+ def on_prack(session)
32
+ session.respond_with(200)
33
+ if (session['prackState'] == '183')
34
+ session.respond_reliably_with(180, session[:inviteReq])
35
+ session['prackState'] = '180'
36
+ else
37
+ session.respond_with(200, session[:inviteReq])
38
+ end
39
+ end
40
+
41
+ def on_ack(session)
42
+ session.invalidate(true)
43
+ session.flow_completed_for("TestPrack")
44
+ end
45
+
46
+ def order
47
+ 0
48
+ end
49
+ end
50
+
51
+ class Uac2xxController < SIP::SipTestDriverController
52
+ transaction_usage :use_transactions=>false
53
+ session_timer 500
54
+
55
+ def start
56
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
57
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
58
+ u.send(r)
59
+ logd("Sent a new INVITE from #{name}")
60
+ end
61
+
62
+ def on_trying_res(session)
63
+ end
64
+
65
+ def on_provisional_res(session)
66
+ logd("Received provisional response ")
67
+ response = session.iresponse
68
+ if (response.rseq )
69
+ logd("Sending prack")
70
+ session.create_and_send_prack
71
+ end
72
+ end
73
+
74
+ def on_success_res(session)
75
+ logd("Received response in #{name}")
76
+ response = session.iresponse
77
+
78
+ if session.iresponse.get_request_method == 'PRACK'
79
+ logd("Received prack response")
80
+ else
81
+ session.create_and_send_ack
82
+ session.invalidate(true)
83
+ end
84
+ end
85
+
86
+ end
87
+ end
88
+ EOF
89
+ define_controller_from(str)
90
+ set_controller("TestPrack_SipInline::Uac2xxController")
91
+ end
92
+
93
+
94
+ def test_prack
95
+ self.expected_flow = ["> INVITE","< 100", "< 183", "> PRACK", "< 200", "< 180", "> PRACK", "< 200 {2,2}", "> ACK"]
96
+ start_controller
97
+ verify_call_flow(:out)
98
+ self.expected_flow = ["< INVITE","> 100", "> 183", "< PRACK", "> 200", "> 180", "< PRACK", "> 200 {2,2}", "< ACK"]
99
+
100
+ verify_call_flow(:in)
101
+ end
102
+
103
+ end
104
+
105
+
@@ -0,0 +1,101 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestPrackStoreAndDispatch < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+
12
+ module TestPrackStoreAndDispatch_SipInline
13
+ class Uas2xxController < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>false
16
+
17
+ session_timer 500
18
+
19
+ attr_accessor :inviteReq
20
+
21
+ def on_invite(session)
22
+ logd("Received INVITE in #{name}")
23
+ @inviteReq = session.irequest
24
+ r = session.create_response(183, "Session in progress", @inviteReq, true)
25
+ session.send(r)
26
+ r = session.create_response(180, "Ringing", @inviteReq, true)
27
+ session.send(r)
28
+ r = session.create_response(200, "OK", @inviteReq)
29
+ session.send(r)
30
+ end
31
+
32
+ def on_prack(session)
33
+ r = session.create_response(200, "OK")
34
+ session.send(r)
35
+ end
36
+
37
+ def on_ack(session)
38
+ session.invalidate
39
+ session.flow_completed_for("TestPrackStoreAndDispatch")
40
+ end
41
+
42
+ def order
43
+ 0
44
+ end
45
+ end
46
+
47
+ class Uac2xxController < SIP::SipTestDriverController
48
+ transaction_usage :use_transactions=>false
49
+ session_timer 500
50
+
51
+ def start
52
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
53
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
54
+ u.send(r)
55
+ logd("Sent a new INVITE from #{name}")
56
+ end
57
+
58
+ def on_trying_res(session)
59
+ end
60
+
61
+ def on_provisional_res(session)
62
+ logd("Received provisional response ")
63
+ response = session.iresponse
64
+ if (response.rseq )
65
+ logd("Sending prack")
66
+ session.create_and_send_prack
67
+ end
68
+ end
69
+
70
+ def on_success_res(session)
71
+ logd("Received response in #{name}")
72
+ response = session.iresponse
73
+
74
+ if (response.get_request_method == "PRACK")
75
+ logd("Received prack response")
76
+ else
77
+ session.create_and_send_ack
78
+ session.invalidate
79
+ end
80
+ end
81
+
82
+ end
83
+ end
84
+ EOF
85
+ define_controller_from(str)
86
+ set_controller("TestPrackStoreAndDispatch_SipInline::Uac2xxController")
87
+ end
88
+
89
+
90
+ def test_prack
91
+ self.expected_flow = ["> INVITE", "< 183", "> PRACK", "< 200", "< 180", "> PRACK", "< 200 {2,2}", "> ACK"]
92
+ start_controller
93
+ verify_call_flow(:out)
94
+ self.expected_flow = ["< INVITE", "> 183", "< PRACK", "> 200", "> 180", "< PRACK", "> 200 {2,2}", "< ACK"]
95
+
96
+ verify_call_flow(:in)
97
+ end
98
+
99
+ end
100
+
101
+
@@ -0,0 +1,105 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class TestPrackTimer < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ SipperConfigurator[:ControllerPath] = nil
9
+ str = <<-EOF
10
+
11
+ require 'sip_test_driver_controller'
12
+
13
+ module TestPrackTimer_SipInline
14
+ class Uas2xxController < SIP::SipTestDriverController
15
+
16
+ transaction_usage :use_transactions=>false
17
+
18
+ t1xx_retran_usage true
19
+
20
+ session_timer 500
21
+
22
+
23
+ def on_invite(session)
24
+ logd("Received INVITE in #{name}")
25
+ session[:inviteReq] = session.irequest
26
+ session.respond_reliably_with(183)
27
+ end
28
+
29
+ def on_prack(session)
30
+ r = session.create_response(200, "OK")
31
+ session.send(r)
32
+ r = session.create_response(200, "OK", session[:inviteReq])
33
+ session.send(r)
34
+ end
35
+
36
+ def on_ack(session)
37
+ session.invalidate(true)
38
+ session.flow_completed_for("TestPrackTimer")
39
+ end
40
+
41
+ def order
42
+ 0
43
+ end
44
+ end
45
+
46
+ class Uac2xxController < SIP::SipTestDriverController
47
+ transaction_usage :use_transactions=>false
48
+ session_timer 500
49
+
50
+ def start
51
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
52
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
53
+ u.send(r)
54
+ logd("Sent a new INVITE from #{name}")
55
+ end
56
+
57
+ def on_trying_res(session)
58
+ end
59
+
60
+ def on_provisional_res(session)
61
+ logd("Received provisional response ")
62
+ response = session.iresponse
63
+
64
+ if session['prevProv']
65
+ if (response.rseq )
66
+ logd("Sending prack")
67
+ session.create_and_send_prack
68
+ end
69
+ else
70
+ session['prevProv'] = true
71
+ end
72
+ end
73
+
74
+ def on_success_res(session)
75
+ logd("Received response in #{name}")
76
+ response = session.iresponse
77
+
78
+ if (response.get_request_method == "PRACK")
79
+ logd("Received prack response")
80
+ else
81
+ session.create_and_send_ack
82
+ session.invalidate(true)
83
+ end
84
+ end
85
+
86
+ end
87
+ end
88
+ EOF
89
+ define_controller_from(str)
90
+ set_controller("TestPrackTimer_SipInline::Uac2xxController")
91
+ end
92
+
93
+
94
+ def test_prack
95
+ self.expected_flow = ["> INVITE", "< 183 {2,}", "> PRACK", "< 200 {2,2}", "> ACK"]
96
+ start_controller
97
+ verify_call_flow(:out)
98
+ self.expected_flow = ["< INVITE", "> 183 {2,}", "< PRACK", "> 200 {2,2}", "< ACK"]
99
+
100
+ verify_call_flow(:in)
101
+ end
102
+
103
+ end
104
+
105
+
@@ -0,0 +1,56 @@
1
+ require 'base_test_case'
2
+ require 'util/persistence/ps_sipper_map'
3
+
4
+ class TestPsSipperMap < BaseTestCase
5
+
6
+ def setup
7
+ @ps = SipperUtil::Persistence::PsSipperMap.new("test_sipper_map")
8
+ end
9
+
10
+ def test_put
11
+ @ps.put("k1", "nasir")
12
+ @ps.put(:k2, "khan")
13
+ assert_equal("nasir", @ps.get("k1"))
14
+ end
15
+
16
+ def test_get
17
+ @ps.put(:k1, "nk")
18
+ assert_equal("nk", @ps.get(:k1))
19
+ end
20
+
21
+ def test_put_all
22
+ h = {:a=>"1", :b=>"2", :c=>"3"}
23
+ @ps.put_all(h)
24
+ assert_equal(3, @ps.get_all_keys.length)
25
+ end
26
+
27
+ def test_put_all_twice
28
+ h = {:a=>"1", :b=>"2", :c=>"3"}
29
+ @ps.put_all(h)
30
+ h = {:d=>"1", :e=>"2", :f=>"3"}
31
+ @ps.put_all(h)
32
+ assert_equal(6, @ps.get_all_keys.length)
33
+ end
34
+
35
+ def test_delete
36
+ @ps.put(:k1, "nk")
37
+ @ps.delete(:k1)
38
+ assert_nil(@ps.get(:k1))
39
+ end
40
+
41
+ def test_delete_deleted
42
+ @ps.put(:k1, "nk")
43
+ @ps.delete(:k1)
44
+ assert_nothing_raised {@ps.delete(:k1)}
45
+ end
46
+
47
+ def test_destroy
48
+ @ps.destroy
49
+ @ps.put(:k1, "nk")
50
+ assert_equal("nk", @ps.get(:k1))
51
+ end
52
+
53
+ def teardown
54
+ @ps.destroy
55
+ end
56
+ end
@@ -0,0 +1,81 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ # A UAS that receives an INVITE on a dialog while an INVITE it had sent on that
5
+ # dialog is in progress MUST return a 491 (Request Pending) response to the received INVITE.
6
+
7
+ class TestReInviteUasOngoingIct < DrivenSipTestCase
8
+
9
+ def setup
10
+ @orig_compliance = SipperConfigurator[:ProtocolCompliance]
11
+ SipperConfigurator[:ProtocolCompliance]='strict'
12
+ super
13
+ str = <<-EOF
14
+
15
+
16
+ require 'sip_test_driver_controller'
17
+
18
+ module SipInline
19
+ class UasReInvite5Controller < SIP::SipTestDriverController
20
+
21
+ transaction_usage :use_transactions=>true
22
+
23
+ def on_invite(session)
24
+ orig_compliance = SipperConfigurator[:ProtocolCompliance]
25
+ SipperConfigurator[:ProtocolCompliance] = 'lax'
26
+ session.request_with("invite")
27
+ SipperConfigurator[:ProtocolCompliance] = orig_compliance
28
+ end
29
+
30
+ def on_failure_res(session)
31
+ session.respond_with(200)
32
+ end
33
+
34
+ def on_ack(session)
35
+ session.invalidate(true)
36
+ session.flow_completed_for("TestReInviteUasOngoingIct")
37
+ end
38
+
39
+
40
+ def order
41
+ 0
42
+ end
43
+ end
44
+
45
+ class UacReInvite5Controller < SIP::SipTestDriverController
46
+
47
+ transaction_usage :use_transactions=>true
48
+
49
+ def start
50
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
51
+ u.request_with("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
52
+ logd("Sent a new INVITE from "+name)
53
+ end
54
+
55
+ def on_success_res(session)
56
+ session.request_with("ack")
57
+ session.invalidate(true)
58
+ end
59
+
60
+ end
61
+ end
62
+ EOF
63
+ define_controller_from(str)
64
+ set_controller("SipInline::UacReInvite5Controller")
65
+ end
66
+
67
+
68
+ def test_reinvite
69
+ self.expected_flow = ["> INVITE", "< 100", "< INVITE", "> 100", "> 491", "< ACK", "< 200", "> ACK"]
70
+ start_controller
71
+ verify_call_flow(:out)
72
+ self.expected_flow = ["< INVITE", "> 100", "> INVITE", "< 100", "< 491", "> ACK", "> 200", "< ACK"]
73
+ verify_call_flow(:in)
74
+ end
75
+
76
+ def teardown
77
+ SipperConfigurator[:ProtocolCompliance] = @orig_compliance
78
+ super
79
+ end
80
+
81
+ end