PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/test/test_cns_base.rb

https://github.com/fruwe/cns_base
Ruby | 338 lines | 248 code | 78 blank | 12 comment | 67 complexity | 391f34136f352148fc75a1b9c3946626 MD5 | raw file
  1. require File.dirname(__FILE__) + '/test_helper.rb'
  2. $A = 0
  3. class TestCnsBase < Test::Unit::TestCase
  4. def setup
  5. CnsBase::Cas::CasControlHelper.shutdown
  6. end
  7. def test_init
  8. puts "This test should show four lines with <TestCreationCore> inside."
  9. CnsBase::Cas::CasControlHelper.init INIT_HASH
  10. CnsBase::Cas::CasControlHelper.confirm_start
  11. CnsBase::Cas::CasControlHelper.shutdown
  12. puts
  13. puts
  14. puts
  15. puts
  16. puts
  17. CnsBase::Cas::CasControlHelper.init INIT_HASH
  18. CnsBase::Cas::CasControlHelper.confirm_start
  19. ao = TestAccess.new
  20. puts "should be 2.5"
  21. puts(ao.divide(5.0,2.0))
  22. puts "should be exception"
  23. puts "try http to google.com"
  24. puts(ao.http("http://www.google.co.jp").pretty_inspect)
  25. puts(ao.http("http://www.google.co.jp").pretty_inspect)
  26. puts "try http to not_existing.com"
  27. begin
  28. CnsBase.logger.level = Logger::FATAL
  29. ao.http("http://www.not_existing.com")
  30. rescue => exception
  31. puts exception.class.name
  32. puts exception.message
  33. end
  34. CnsBase.logger.level = Logger::INFO
  35. begin
  36. CnsBase.logger.level = Logger::FATAL
  37. pust(ao.divide(5,0))
  38. rescue => exception
  39. puts exception.class.name
  40. puts exception.message
  41. end
  42. CnsBase.logger.level = Logger::INFO
  43. CnsBase::Cas::CasControlHelper.shutdown
  44. puts
  45. puts
  46. puts
  47. puts
  48. puts
  49. end
  50. def test_request_response
  51. publisher = TestPublisher.new
  52. listener = TestListener.new( publisher )
  53. rr = CnsBase::RequestResponse::RequestResponseListener.new publisher
  54. rr.dispatch( CnsBase::Settable::SetListenerTypeSignal.new( listener ) )
  55. assert publisher.queue.size == 0
  56. assert listener.queue.size == 0
  57. # test normal non request signal
  58. puts "-" * 100
  59. rr.dispatch(CnsBase::Signal.new(:test))
  60. assert publisher.queue.size == 0
  61. assert listener.queue.size == 1
  62. assert listener.queue[0].name == :test
  63. publisher.queue.clear
  64. listener.queue.clear
  65. # test only response
  66. puts "-" * 100
  67. rr.dispatch(CnsBase::RequestResponse::ResponseSignal.new(:test2))
  68. assert publisher.queue.size == 0
  69. assert listener.queue.size == 1
  70. assert listener.queue[0].name == :test2
  71. publisher.queue.clear
  72. listener.queue.clear
  73. # test unhandled exception response
  74. puts "-" * 100
  75. begin
  76. rr.dispatch(CnsBase::RequestResponse::ExceptionResponseSignal.new(RuntimeError.new("exception")))
  77. assert false
  78. rescue => exception
  79. puts exception.message
  80. assert exception.message == "exception"
  81. end
  82. assert publisher.queue.size == 0
  83. assert listener.queue.size == 1
  84. assert listener.queue[0].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  85. publisher.queue.clear
  86. listener.queue.clear
  87. # test handled exception response
  88. puts "-" * 100
  89. rr.dispatch(CnsBase::RequestResponse::ExceptionResponseSignal.new(RuntimeError.new("handled exception")))
  90. assert publisher.queue.size == 0
  91. assert listener.queue.size == 1
  92. assert listener.queue[0].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  93. publisher.queue.clear
  94. listener.queue.clear
  95. # test request without response
  96. puts "-" * 100
  97. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test3))
  98. assert publisher.queue.size == 1
  99. assert listener.queue.size == 1
  100. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  101. assert publisher.queue[0].exception.message.starts_with?("RequestResponseListener: RequestSignal did not get an response.")
  102. assert listener.queue[0].name == :test3
  103. publisher.queue.clear
  104. listener.queue.clear
  105. # test request with wrong class response
  106. puts "-" * 100
  107. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test_wrong_class_response))
  108. assert publisher.queue.size == 1
  109. assert listener.queue.size == 1
  110. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  111. puts publisher.queue[0].exception
  112. assert publisher.queue[0].exception.message.starts_with?("signal is not a response signal")
  113. assert listener.queue[0].name == :test_wrong_class_response
  114. publisher.queue.clear
  115. listener.queue.clear
  116. # test request with nil response
  117. puts "-" * 100
  118. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test_nil_response))
  119. assert publisher.queue.size == 1
  120. assert listener.queue.size == 1
  121. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  122. puts publisher.queue[0].exception
  123. assert publisher.queue[0].exception.message.starts_with?("signal is blank")
  124. assert listener.queue[0].name == :test_nil_response
  125. publisher.queue.clear
  126. listener.queue.clear
  127. # test request with double response
  128. puts "-" * 100
  129. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test_double_response))
  130. assert publisher.queue.size == 1
  131. assert listener.queue.size == 1
  132. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  133. puts publisher.queue[0].exception
  134. assert publisher.queue[0].exception.message.starts_with?("response is already set")
  135. assert listener.queue[0].name == :test_double_response
  136. publisher.queue.clear
  137. listener.queue.clear
  138. # test_non_set_published_response
  139. puts "-" * 100
  140. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test_non_set_published_response))
  141. assert publisher.queue.size == 2
  142. assert listener.queue.size == 1
  143. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::ResponseSignal)
  144. assert publisher.queue[0].name == :wrong_response
  145. assert publisher.queue[1].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  146. puts publisher.queue[1].exception
  147. assert publisher.queue[1].exception.message.starts_with?("RequestResponseListener: RequestSignal did not get an response.")
  148. assert listener.queue[0].name == :test_non_set_published_response
  149. publisher.queue.clear
  150. listener.queue.clear
  151. # test_set_and_published_response
  152. puts "-" * 100
  153. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test_set_and_published_response))
  154. assert publisher.queue.size == 2
  155. assert listener.queue.size == 1
  156. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::ResponseSignal)
  157. assert publisher.queue[0].name == :wrong_response
  158. assert publisher.queue[1].is_a?(CnsBase::RequestResponse::ResponseSignal)
  159. assert publisher.queue[1].name == :wrong_response
  160. assert listener.queue[0].name == :test_set_and_published_response
  161. rr.dispatch(publisher.queue[0])
  162. assert publisher.queue.size == 2
  163. assert listener.queue.size == 2
  164. rr.dispatch(publisher.queue[1])
  165. assert publisher.queue.size == 2
  166. assert listener.queue.size == 3
  167. publisher.queue.clear
  168. listener.queue.clear
  169. # test_deferred_request
  170. puts "-" * 100
  171. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test_deferred_request))
  172. assert publisher.queue.size == 2
  173. assert listener.queue.size == 1
  174. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::RequestSignal)
  175. assert publisher.queue[0].name == :deferred_request
  176. assert publisher.queue[1].is_a?(CnsBase::Timer::TimerSignal)
  177. assert listener.queue[0].name == :test_deferred_request
  178. rr.dispatch(publisher.queue[1].signal) # try timer sig (will be deferred with another timer signal, as the event itself is deferred)
  179. pp publisher.queue
  180. assert publisher.queue.size == 3
  181. assert listener.queue.size == 2
  182. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::RequestSignal)
  183. assert publisher.queue[0].name == :deferred_request
  184. assert publisher.queue[1].is_a?(CnsBase::Timer::TimerSignal)
  185. assert publisher.queue[2].is_a?(CnsBase::RequestResponse::ExceptionResponseSignal)
  186. puts publisher.queue[2].exception
  187. assert publisher.queue[2].exception.message.starts_with?("Request Timed Out")
  188. assert listener.queue[0].name == :test_deferred_request
  189. assert listener.queue[1].name == :test_deferred_request
  190. publisher.queue.clear
  191. listener.queue.clear
  192. # test_deferred_request_with_response
  193. puts "-" * 100
  194. rr.dispatch(CnsBase::RequestResponse::RequestSignal.new(publisher, :test_deferred_request_with_response))
  195. assert publisher.queue.size == 2
  196. assert listener.queue.size == 1
  197. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::RequestSignal)
  198. assert publisher.queue[0].name == :deferred_request
  199. assert publisher.queue[1].is_a?(CnsBase::Timer::TimerSignal)
  200. assert listener.queue[0].name == :test_deferred_request_with_response
  201. rr.dispatch(publisher.queue[0])
  202. assert publisher.queue.size == 3
  203. assert listener.queue.size == 2
  204. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::RequestSignal)
  205. assert publisher.queue[0].name == :deferred_request
  206. assert publisher.queue[1].is_a?(CnsBase::Timer::TimerSignal)
  207. assert publisher.queue[2].is_a?(CnsBase::RequestResponse::ResponseSignal)
  208. assert publisher.queue[2].name == :response_from_deferred_object
  209. assert listener.queue[0].name == :test_deferred_request_with_response
  210. assert listener.queue[1].name == :deferred_request
  211. rr.dispatch(publisher.queue[2])
  212. pp listener.queue
  213. assert publisher.queue.size == 4
  214. assert listener.queue.size == 3
  215. assert publisher.queue[0].is_a?(CnsBase::RequestResponse::RequestSignal)
  216. assert publisher.queue[0].name == :deferred_request
  217. assert publisher.queue[1].is_a?(CnsBase::Timer::TimerSignal)
  218. assert publisher.queue[2].is_a?(CnsBase::RequestResponse::ResponseSignal)
  219. assert publisher.queue[2].name == :response_from_deferred_object
  220. assert publisher.queue[3].is_a?(CnsBase::RequestResponse::ResponseSignal)
  221. assert publisher.queue[3].name == :response_from_deferred_object_inner
  222. assert listener.queue[0].name == :test_deferred_request_with_response
  223. assert listener.queue[1].name == :deferred_request
  224. assert listener.queue[2].name == :test_deferred_request_with_response
  225. publisher.queue.clear
  226. listener.queue.clear
  227. end
  228. def test_speed
  229. CnsBase::Cas::CasControlHelper.init INIT_HASH
  230. CnsBase::Cas::CasControlHelper.confirm_start
  231. ao = TestAccess.new
  232. CnsBase.logger.level = Logger::WARN
  233. start = Time.now
  234. duration = 15
  235. end_time = start + duration
  236. size = 0
  237. while Time.now < end_time
  238. res = ao.http("http://www.google.co.jp")
  239. size += res[:content].size
  240. puts "DONE REQUEST, STILL #{(end_time.to_i - Time.now.to_i)} secs"
  241. end
  242. puts "size: #{size} speed: #{(size / (Time.now.to_f - start.to_f))/1024} KB/SEC"
  243. puts "START TEST 2"
  244. start = Time.now
  245. end_time = start + duration
  246. size = 0
  247. while Time.now < end_time
  248. res = ao.http_multiple("http://www.google.co.jp")
  249. size += res[:content].size
  250. puts "DONE REQUEST, STILL #{(end_time.to_i - Time.now.to_i)} secs"
  251. end
  252. puts "size: #{size} speed: #{(size / (Time.now.to_f - start.to_f))/1024} KB/SEC"
  253. CnsBase::Cas::CasControlHelper.shutdown
  254. puts
  255. puts
  256. puts
  257. puts
  258. puts
  259. end
  260. end