Class: Devformance::FileRunnerJob

Inherits:
ActiveJob::Base
  • Object
show all
Defined in:
app/jobs/devformance/file_runner_job.rb

Constant Summary collapse

SLOW_THRESHOLD_MS =
-> { Devformance.configuration.slow_query_threshold_ms }

Instance Method Summary collapse

Instance Method Details

#perform(run_id:, file_path:, file_key:, framework: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/jobs/devformance/file_runner_job.rb', line 7

def perform(run_id:, file_path:, file_key:, framework: nil)
  ENV["DEVMETRICS_SKIP_DB_SETUP"] = "1"
  @framework = build_framework(framework)
  result = ::Devformance::FileResult.find_by!(run_id: run_id, file_key: file_key)
  result.update!(status: :running)

  log    = ::Devformance::LogWriter.open(run_id, file_key)
  stream = "devformance:file:#{file_key}:#{run_id}"

  broadcast(stream, type: "file_started", file_key: file_key, framework: @framework.name)

  ::Devformance::SqlInstrumentor.around_run do
    run_tests(file_path, stream, log, result)
  end

  flush_sql_results(stream, log, result)
  write_coverage(stream, log, result, file_path)
  finalize(stream, log, result, run_id)
rescue => e
  broadcast(stream, type: "file_error", message: e.message)
  result&.update!(status: :failed)
ensure
  log&.close
end