X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/014f72fcdac2b26f9f2bbf257707eb59c676eebb..8be16cfc7e163cc96995be891e53050febfb1fca:/services/api/test/integration/websocket_test.rb diff --git a/services/api/test/integration/websocket_test.rb b/services/api/test/integration/websocket_test.rb index 2128be9443..549bbc6f99 100644 --- a/services/api/test/integration/websocket_test.rb +++ b/services/api/test/integration/websocket_test.rb @@ -1,6 +1,6 @@ -require 'test_helper' -require 'oj' require 'database_cleaner' +require 'safe_json' +require 'test_helper' DatabaseCleaner.strategy = :deletion @@ -19,19 +19,20 @@ class WebsocketTest < ActionDispatch::IntegrationTest s = TCPServer.new('0.0.0.0', 0) @@port = s.addr[1] s.close - pidfile = "tmp/pids/passenger.#{@@port}.pid" + @@pidfile = "tmp/pids/passenger.#{@@port}.pid" DatabaseCleaner.start Dir.chdir(Rails.root) do |apidir| # Only passenger seems to be able to run the websockets server # successfully. _system('passenger', 'start', '-d', "-p#{@@port}", - "--log-file", "/dev/stderr") + "--log-file", "/dev/stderr", + "--pid-file", @@pidfile) timeout = Time.now.tv_sec + 10 begin sleep 0.2 begin - server_pid = IO.read(pidfile).to_i + server_pid = IO.read(@@pidfile).to_i good_pid = (server_pid > 0) and (Process.kill(0, pid) rescue false) rescue Errno::ENOENT good_pid = false @@ -46,7 +47,8 @@ class WebsocketTest < ActionDispatch::IntegrationTest def self.shutdown Dir.chdir(Rails.root) do - _system('passenger', 'stop', "-p#{@@port}") + _system('passenger', 'stop', "-p#{@@port}", + "--pid-file", @@pidfile) end # DatabaseCleaner leaves the database empty. Prefer to leave it full. dc = DatabaseController.new @@ -110,7 +112,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest ws_helper do |ws| ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data status = d["status"] ws.close end @@ -128,7 +130,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data status = d["status"] ws.close end @@ -150,7 +152,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -187,7 +189,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -227,7 +229,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -266,7 +268,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -310,7 +312,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -335,8 +337,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest test "connect, subscribe, ask events starting at seq num" do state = 1 - human = nil - human_ev_uuid = nil authorize_with :active @@ -350,7 +350,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -375,12 +375,10 @@ class WebsocketTest < ActionDispatch::IntegrationTest assert_equal expect_next_logs[1].object_uuid, l2 end - test "connect, subscribe, get event, unsubscribe" do - slow_test + slow_test "connect, subscribe, get event, unsubscribe" do state = 1 spec = nil spec_ev_uuid = nil - filter_id = nil authorize_with :active @@ -396,7 +394,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -425,8 +423,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest assert_equal spec.uuid, spec_ev_uuid end - test "connect, subscribe, get event, unsubscribe with filter" do - slow_test + slow_test "connect, subscribe, get event, unsubscribe with filter" do state = 1 spec = nil spec_ev_uuid = nil @@ -445,7 +442,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -475,8 +472,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end - test "connect, subscribe, get event, try to unsubscribe with bogus filter" do - slow_test + slow_test "connect, subscribe, get event, try to unsubscribe with bogus filter" do state = 1 spec = nil spec_ev_uuid = nil @@ -491,7 +487,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -526,10 +522,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest assert_equal human.uuid, human_ev_uuid end - - - test "connected, not subscribed, no event" do - slow_test + slow_test "connected, not subscribed, no event" do authorize_with :active ws_helper(token: :active, timeout: false) do |ws| @@ -549,8 +542,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end end - test "connected, not authorized to see event" do - slow_test + slow_test "connected, not authorized to see event" do state = 1 authorize_with :admin @@ -565,7 +557,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] @@ -589,7 +581,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data status = d["status"] ws.close end @@ -607,7 +599,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data status = d["status"] ws.close end @@ -625,7 +617,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data status = d["status"] ws.close end @@ -648,7 +640,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when (1..Rails.configuration.websocket_max_filters) assert_equal 200, d["status"] @@ -665,8 +657,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest end - test "connect, subscribe, lots of events" do - slow_test + slow_test "connect, subscribe, lots of events" do state = 1 event_count = 0 log_start = Log.order(:id).last.id @@ -684,13 +675,13 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] ActiveRecord::Base.transaction do (1..202).each do - spec = Specimen.create + Specimen.create end end state = 2 @@ -711,8 +702,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest test "connect, subscribe with invalid filter" do state = 1 - human = nil - human_ev_uuid = nil authorize_with :active @@ -723,12 +712,12 @@ class WebsocketTest < ActionDispatch::IntegrationTest end ws.on :message do |event| - d = Oj.strict_load event.data + d = SafeJSON.load event.data case state when 1 assert_equal 200, d["status"] Specimen.create - human = Human.create + Human.create state = 2 when 2 assert_equal 500, d["status"]