X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a6ea50199a4aef32094bb6c4e91aa702c02aaca0..4d95f6cc422bc4dea97da79bbfbb2e7809ee20fc:/apps/workbench/test/integration/websockets_test.rb diff --git a/apps/workbench/test/integration/websockets_test.rb b/apps/workbench/test/integration/websockets_test.rb index 648d59c690..655ad92c94 100644 --- a/apps/workbench/test/integration/websockets_test.rb +++ b/apps/workbench/test/integration/websockets_test.rb @@ -211,4 +211,68 @@ class WebsocketTest < ActionDispatch::IntegrationTest datum = page.evaluate_script("jobGraphData[jobGraphData.length-1]['#{series}']") assert_in_epsilon value, datum.to_f end + + test "test running job with just a few previous log records" do + Thread.current[:arvados_api_token] = @@API_AUTHS["admin"]['api_token'] + job = Job.where(uuid: api_fixture("jobs")['running']['uuid']).results.first + visit page_with_token("admin", "/jobs/#{job.uuid}") + + api = ArvadosApiClient.new + + # Create just one old log record + api.api("logs", "", {log: { + object_uuid: job.uuid, + event_type: "stderr", + properties: {"text" => "Historic log message"}}}) + + click_link("Log") + + # Expect "all" historic log records because we have less than + # default Rails.configuration.running_job_log_records_to_fetch count + assert_text 'Historic log message' + + # Create new log record and expect it to show up in log tab + api.api("logs", "", {log: { + object_uuid: job.uuid, + event_type: "stderr", + properties: {"text" => "Log message after subscription"}}}) + assert_text 'Log message after subscription' + end + + test "test running job with too many previous log records" do + Rails.configuration.running_job_log_records_to_fetch = 5 + + Thread.current[:arvados_api_token] = @@API_AUTHS["admin"]['api_token'] + job = Job.where(uuid: api_fixture("jobs")['running']['uuid']).results.first + + visit page_with_token("admin", "/jobs/#{job.uuid}") + + api = ArvadosApiClient.new + + # Create Rails.configuration.running_job_log_records_to_fetch + 1 log records + (0..Rails.configuration.running_job_log_records_to_fetch).each do |count| + api.api("logs", "", {log: { + object_uuid: job.uuid, + event_type: "stderr", + properties: {"text" => "Old log message #{count}"}}}) + end + + # Go to log tab, which results in subscribing to websockets + click_link("Log") + + # Expect all but the first historic log records, + # because that was one too many than fetch count. + (1..Rails.configuration.running_job_log_records_to_fetch).each do |count| + assert_text "Old log message #{count}" + end + assert_no_text 'Old log message 0' + + # Create one more log record after subscription + api.api("logs", "", {log: { + object_uuid: job.uuid, + event_type: "stderr", + properties: {"text" => "Life goes on!"}}}) + # Expect it to show up in log tab + assert_text 'Life goes on!' + end end