aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/test/support/integration/adapters/queue_classic.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activejob/test/support/integration/adapters/queue_classic.rb')
-rw-r--r--activejob/test/support/integration/adapters/queue_classic.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/activejob/test/support/integration/adapters/queue_classic.rb b/activejob/test/support/integration/adapters/queue_classic.rb
new file mode 100644
index 0000000000..2b5375461a
--- /dev/null
+++ b/activejob/test/support/integration/adapters/queue_classic.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module QueueClassicJobsManager
+ def setup
+ ENV["QC_DATABASE_URL"] ||= "postgres:///active_jobs_qc_int_test"
+ ENV["QC_RAILS_DATABASE"] = "false"
+ ENV["QC_LISTEN_TIME"] = "0.5"
+ ActiveJob::Base.queue_adapter = :queue_classic
+ end
+
+ def clear_jobs
+ QC::Queue.new("integration_tests").delete_all
+ end
+
+ def start_workers
+ uri = URI.parse(ENV["QC_DATABASE_URL"])
+ user = uri.user || ENV["USER"]
+ pass = uri.password
+ db = uri.path[1..-1]
+ %x{#{"PGPASSWORD=\"#{pass}\"" if pass} psql -X -c 'drop database if exists "#{db}"' -U #{user} -t template1}
+ %x{#{"PGPASSWORD=\"#{pass}\"" if pass} psql -X -c 'create database "#{db}"' -U #{user} -t template1}
+ QC::Setup.create
+
+ QC.default_conn_adapter.disconnect
+ QC.default_conn_adapter = nil
+ @pid = fork do
+ worker = QC::Worker.new(q_name: "integration_tests")
+ worker.start
+ end
+
+ rescue PG::ConnectionBad
+ puts "Cannot run integration tests for queue_classic. To be able to run integration tests for queue_classic you need to install and start postgresql.\n"
+ status = ENV["CI"] ? false : true
+ exit status
+ end
+
+ def stop_workers
+ Process.kill "HUP", @pid
+ end
+end