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,94 @@
1
+ ruby test_address_header.rb
2
+ ruby test_b2bua1.rb
3
+ ruby test_b2bua2.rb
4
+ ruby test_b2bua3.rb
5
+ ruby test_base_controller.rb
6
+ ruby test_base_transport.rb
7
+ ruby test_cancel.rb
8
+ ruby test_cancel_after2xx.rb
9
+ ruby test_cancel_retransmission.rb
10
+ ruby test_cancel_with481.rb
11
+ ruby test_cancel_with487.rb
12
+ ruby test_cancel_with_ist_without_nist.rb
13
+ ruby test_cancel_with_nist.rb
14
+ ruby test_cancel_without487.rb
15
+ ruby test_command_element.rb
16
+ ruby test_compact_converter.rb
17
+ ruby test_controller_class_loader.rb
18
+ ruby test_controller_selector.rb
19
+ ruby test_controller_using_compact_headers.rb
20
+ ruby test_controller_using_header_order.rb
21
+ ruby test_controller_using_ict.rb
22
+ ruby test_controller_using_ict_with_non_success.rb
23
+ ruby test_controller_using_ict_with_tcbh.rb
24
+ ruby test_controller_using_ict_with_tcbh_no_action.rb
25
+ ruby test_controller_using_ist.rb
26
+ ruby test_controller_using_ist_with_tcbh.rb
27
+ ruby test_controller_using_nict.rb
28
+ ruby test_controller_using_nict_with_tcbh.rb
29
+ ruby test_controller_using_nist.rb
30
+ ruby test_controller_using_pre_existing_rs0.rb
31
+ ruby test_controller_using_pre_existing_rs1.rb
32
+ ruby test_controller_using_pre_existing_rs2.rb
33
+ ruby test_controller_using_route_set.rb
34
+ ruby test_detached_session1.rb
35
+ ruby test_dialog_routes.rb
36
+ ruby test_digest_challenge1.rb
37
+ ruby test_digest_challenge2.rb
38
+ ruby test_dynamic_parse.rb
39
+ ruby test_ete.rb
40
+ ruby test_expectation_parser.rb
41
+ ruby test_extensions.rb
42
+ ruby test_generated.rb
43
+ ruby test_header_parameters.rb
44
+ ruby test_header_parse.rb
45
+ ruby test_ict_with_timeout.rb
46
+ ruby test_in_dialog_request.rb
47
+ ruby test_inline_controller.rb
48
+ ruby test_invite_client_transaction.rb
49
+ ruby test_invite_retransmission.rb
50
+ ruby test_invite_server_transaction.rb
51
+ ruby test_lower_cseq.rb
52
+ ruby test_media.rb
53
+ ruby test_message.rb
54
+ ruby test_multiple.rb
55
+ ruby test_non2xx_retransmission_with_ist.rb
56
+ ruby test_non_invite_client_transaction.rb
57
+ ruby test_non_invite_retransmission.rb
58
+ ruby test_non_invite_server_transaction.rb
59
+ ruby test_ps_sipper_map.rb
60
+ ruby test_re_invite_uas_ongoing_ict.rb
61
+ ruby test_re_invite_uas_ongoing_ist.rb
62
+ ruby test_re_invite_with_ongoing_ict.rb
63
+ ruby test_re_invite_with_ongoing_ist.rb
64
+ ruby test_recorder_swap.rb
65
+ ruby test_registration_controller.rb
66
+ ruby test_remote_controller.rb
67
+ ruby test_request.rb
68
+ ruby test_response.rb
69
+ ruby test_sdp.rb
70
+ ruby test_sdp_parser.rb
71
+ ruby test_session.rb
72
+ ruby test_session_callback_handler.rb
73
+ ruby test_session_lifetime.rb
74
+ ruby test_session_manager.rb
75
+ ruby test_session_recorder.rb
76
+ ruby test_simple_re_invite.rb
77
+ ruby test_sipper_util.rb
78
+ ruby test_smc_controller.rb
79
+ ruby test_smoke.rb
80
+ ruby test_stray.rb
81
+ ruby test_stray_inline.rb
82
+ ruby test_stray_res_acked.rb
83
+ ruby test_stray_respond.rb
84
+ ruby test_stray_retry.rb
85
+ ruby test_stray_retry_failure.rb
86
+ ruby test_stray_retry_initial.rb
87
+ ruby test_string_record.rb
88
+ ruby test_subsequent_unsent.rb
89
+ ruby test_timer_manager.rb
90
+ ruby test_timer_task.rb
91
+ ruby test_transport_handler.rb
92
+ ruby test_transport_multi_handler.rb
93
+ ruby test_udp_transport.rb
94
+ ruby test_validations.rb
@@ -0,0 +1,104 @@
1
+ unless $ULOGNAME
2
+ x = File.basename($0)[0...-3]
3
+ $ULOGNAME = '_'+x unless x =~/rake_test_loader/
4
+ end
5
+ require 'base_test_case'
6
+ require 'bin/common'
7
+
8
+ class SipTestCase < BaseTestCase
9
+ include SipperAssertions
10
+
11
+ attr_accessor :current_controller
12
+
13
+ @@now_running = "SipTestCase"
14
+
15
+ def setup
16
+ super
17
+ Thread.current[:name] = "TestMainThread"+name
18
+ if @@now_running != self.class.name
19
+ @@now_running = self.class.name
20
+ setup_once
21
+ end
22
+ @grty = SIP::Locator[:Sth].granularity
23
+ end
24
+
25
+
26
+ def setup_once
27
+ SIP::Locator[:Sipper].stop if SIP::Locator[:Sipper].running if SIP::Locator[:Sipper]
28
+ SipperConfigurator[:LocalTestPort] ||= SipperUtil::Common.in_project_dir() ? SipperConfigurator[:LocalSipperPort]||5060 : 5066
29
+ if SipperConfigurator[:LocalTestPort].class == Array
30
+ s = SIP::Sipper.new(:Ports=>SipperConfigurator[:LocalTestPort])
31
+ else
32
+ s = SIP::Sipper.new(:Ports=>[SipperConfigurator[:LocalTestPort]])
33
+ end
34
+ s.start
35
+ @grty = SIP::Locator[:Sth].granularity
36
+ end
37
+
38
+ # Define the controller(s) specified in the string.
39
+ def define_controller_from(str)
40
+ SIP::Locator[:Sipper].load_controller(str)
41
+ end
42
+
43
+ def set_controller(name)
44
+ @current_controller = SIP::Locator[:Cs].get_controller(name)
45
+ end
46
+
47
+
48
+ def start_named_controller(name, in_mem_rec=false)
49
+ set_controller(name)
50
+ start_controller(in_mem_rec)
51
+ end
52
+
53
+ def start_controller(in_mem_rec=false)
54
+ start_the_set_controller(in_mem_rec)
55
+ end
56
+
57
+ def start_the_set_controller(in_mem_rec)
58
+ raise RuntimeError, "No controller set" unless @current_controller
59
+ @rio = StringIO.new if in_mem_rec
60
+ @current_controller.start { @rio }
61
+ end
62
+ protected :start_the_set_controller
63
+
64
+ def get_neutral_recording(idx=0)
65
+ neutral_files = Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_neutral")).sort
66
+ SessionRecorder.load(neutral_files[idx])
67
+ end
68
+
69
+ # The "in" recording is special in such that the UAS works in the context of a worker
70
+ # thread. There is no easy way to signal a waiting DrivenSipTestCase so in this case
71
+ # we rely on a File Lock for the recording file or mutex signaling
72
+ def get_in_recording(idx=0)
73
+ str = File.join(SipperConfigurator[:SessionRecordPath], "*_in")
74
+ # in_files = Dir.glob(str).sort{|a,b| File.ctime(a)<=>File.ctime(b)}
75
+
76
+ in_files = Dir.glob(str).sort
77
+ SessionRecorder.load(in_files[idx])
78
+ end
79
+
80
+ def get_out_recording(idx=0)
81
+ if @rio
82
+ @rio.rewind
83
+ SessionRecorder.load( @rio )
84
+ else
85
+ str = File.join(SipperConfigurator[:SessionRecordPath], "*_out")
86
+ out_files = Dir.glob(str).sort
87
+ #out_files = Dir.glob(str).sort{|a,b| File.ctime(a)<=>File.ctime(b)}
88
+ SessionRecorder.load(out_files[idx])
89
+ end
90
+ end
91
+
92
+
93
+
94
+ def teardown
95
+
96
+ Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_in")).each {|f| File.delete(f)}
97
+ Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_out")).each {|f| File.delete(f)}
98
+ Dir.glob(File.join(SipperConfigurator[:SessionRecordPath], "*_neutral")).each {|f| File.delete(f)}
99
+ SessionManager.clean_all
100
+ super
101
+ end
102
+
103
+
104
+ end
@@ -0,0 +1,80 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class Test2xxRetransmission < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+
12
+ module Test2xxRetransmission_SipInline
13
+ class Uas2xxController < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>false
16
+
17
+ t2xx_usage true
18
+
19
+ t2xx_timers :Start=>100
20
+
21
+ session_timer 500
22
+
23
+ def on_invite(session)
24
+ logd("Received INVITE in #{name}")
25
+ session.local_tag = 6 #todo differentiate automatically on the same container somehow
26
+ r = session.create_response(200, "OK")
27
+ session.send(r)
28
+ end
29
+
30
+ def on_ack(session)
31
+ session.invalidate
32
+ session.flow_completed_for("Test2xxRetransmission")
33
+ end
34
+
35
+ def order
36
+ 0
37
+ end
38
+ end
39
+
40
+ class Uac2xxController < SIP::SipTestDriverController
41
+ transaction_usage :use_transactions=>false
42
+ session_timer 500
43
+
44
+ def start
45
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
46
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
47
+ u.send(r)
48
+ logd("Sent a new INVITE from #{name}")
49
+ end
50
+
51
+ def on_success_res(session)
52
+ logd("Received response in #{name}")
53
+ if session['act']
54
+ session.create_and_send_ack
55
+ session.invalidate
56
+ else
57
+ session['act'] = true
58
+ end
59
+ end
60
+
61
+ end
62
+ end
63
+ EOF
64
+ define_controller_from(str)
65
+ set_controller("Test2xxRetransmission_SipInline::Uac2xxController")
66
+ end
67
+
68
+
69
+ def test_2xx_retransmissions
70
+ self.expected_flow = ["> INVITE","< 200 {2,}", "> ACK"]
71
+ start_controller
72
+ verify_call_flow(:out)
73
+ self.expected_flow = ["< INVITE", "> 200 {2,2}", "< ACK"]
74
+
75
+ verify_call_flow(:in)
76
+ end
77
+
78
+ end
79
+
80
+
@@ -0,0 +1,81 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class Test2xxRetransmissionWithLimit < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ require 'sip_test_driver_controller'
11
+
12
+ module SipInline
13
+ class Uas2xxLimitController < SIP::SipTestDriverController
14
+
15
+ transaction_usage :use_transactions=>false
16
+
17
+ t2xx_usage true
18
+
19
+ # increased by a factor of 2
20
+ t2xx_timers :Start=>200, :Cap=>400, :Limit=>1500
21
+
22
+ session_timer 100
23
+
24
+ def on_invite(session)
25
+ logd("Received INVITE in #{name}")
26
+ session.local_tag = 7
27
+ r = session.create_response(200, "OK")
28
+ session.send(r)
29
+ end
30
+
31
+ def no_ack_received(session)
32
+ session.do_record("NO_ACK")
33
+ session.invalidate
34
+ session.flow_completed_for("Test2xxRetransmissionWithLimit")
35
+ end
36
+
37
+ def order
38
+ 0
39
+ end
40
+ end
41
+
42
+ class Uac2xxLimitController < SIP::SipTestDriverController
43
+ transaction_usage :use_transactions=>false
44
+
45
+ def start
46
+ r = Request.create_initial("invite", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
47
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
48
+ u.send(r)
49
+ logd("Sent a new INVITE from #{name}")
50
+ end
51
+
52
+ def on_success_res(session)
53
+ if session['count']
54
+ session['count'] = session['count']+1
55
+ session.invalidate if session['count'] == 4
56
+ else
57
+ session['count'] = 1
58
+ end
59
+ end
60
+
61
+
62
+ end
63
+ end
64
+ EOF
65
+ define_controller_from(str)
66
+ set_controller("SipInline::Uac2xxLimitController")
67
+ end
68
+
69
+
70
+ def test_2xx_retransmission_timeout
71
+ self.expected_flow = ["> INVITE","< 200 {4,5}"]
72
+ start_controller
73
+ verify_call_flow(:out)
74
+ self.expected_flow = ["< INVITE", "> 200 {4,5}", "! NO_ACK"]
75
+ verify_call_flow(:in)
76
+ end
77
+
78
+ end
79
+
80
+
81
+
@@ -0,0 +1,91 @@
1
+
2
+ require 'driven_sip_test_case'
3
+
4
+ class Test2xxRetransmissionWithNist < DrivenSipTestCase
5
+
6
+ def setup
7
+ super
8
+ str = <<-EOF
9
+
10
+ #-------- Transport Filters------------
11
+
12
+ require 'transport/base_transport'
13
+ module TransportHandlerForTestNonInvite2xxModule
14
+ class MyInTransportHandler < Transport::TransportIngressFilter
15
+ def do_filter(msg)
16
+ if msg =~ /200 OK/
17
+ # redefine the method
18
+ def do_filter(msg)
19
+ msg
20
+ end
21
+ return nil
22
+ else
23
+ msg
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+
30
+ #--------- Controllers ---------------
31
+
32
+ require 'sip_test_driver_controller'
33
+
34
+ module SipInline
35
+ class UasNi2xxController < SIP::SipTestDriverController
36
+
37
+ transaction_usage :use_transactions=>true
38
+
39
+ session_timer #{@grty*5}
40
+
41
+ def on_message(session)
42
+ logd("Received MESSAGE in "+name)
43
+ session.do_record("MSG_RECVD")
44
+ r = session.create_response(200, "OK")
45
+ session.send(r)
46
+ session.invalidate(true)
47
+
48
+ end
49
+
50
+
51
+ def order
52
+ 0
53
+ end
54
+ end
55
+
56
+ class UacNi2xxController < SIP::SipTestDriverController
57
+ transaction_usage :use_transactions=>true
58
+ transaction_timers :t1=>#{@grty*2}
59
+
60
+ def start
61
+ r = Request.create_initial("message", "sip:nasir@sipper.com", :p_session_record=>"msg-info")
62
+ u = create_udp_session(SipperConfigurator[:LocalSipperIP], SipperConfigurator[:LocalTestPort])
63
+ u.send(r)
64
+ logd("Sent a new MESSAGE from " + name)
65
+ end
66
+
67
+ def on_success_res(session)
68
+ logd("Received response in #{name}")
69
+ session.invalidate(true)
70
+ session.flow_completed_for("Test2xxRetransmissionWithNist")
71
+ end
72
+
73
+ end
74
+ end
75
+ EOF
76
+ define_controller_from(str)
77
+ set_controller("SipInline::UacNi2xxController")
78
+ end
79
+
80
+
81
+ def test_2xx_retransmissions
82
+ self.expected_flow = ["> MESSAGE {2,2}", "< 200"]
83
+ start_controller
84
+ verify_call_flow(:out)
85
+ self.expected_flow = ["< MESSAGE", "! MSG_RECVD", "> 200", "< MESSAGE", "> 200"]
86
+
87
+ verify_call_flow(:in)
88
+ end
89
+
90
+
91
+ end