From 36ffe8f95b01ab059a34c8093c2410a64ca191b9 Mon Sep 17 00:00:00 2001 From: Earlopain <14981592+Earlopain@users.noreply.github.com> Date: Thu, 17 Aug 2023 10:04:58 +0200 Subject: [PATCH] fix(ci): allow tests to run in docker (#805) * tests: allow overwriting redis/toxiproxy url * chore: appease rubocop --- .github/workflows/rspec.yml | 6 +++++- spec/integration/until_and_while_executing_spec.rb | 8 ++++---- spec/sidekiq_unique_jobs/digests_spec.rb | 4 ++-- spec/sidekiq_unique_jobs/on_conflict/reject_spec.rb | 3 +-- spec/sidekiq_unique_jobs/on_conflict/replace_spec.rb | 9 +++------ spec/sidekiq_unique_jobs/orphans/manager_spec.rb | 8 ++------ .../orphans/reaper_resurrector_spec.rb | 4 +--- .../an_executing_lock_with_error_handling.rb | 3 +-- spec/support/sidekiq_meta.rb | 3 ++- 9 files changed, 21 insertions(+), 27 deletions(-) diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml index 73c410935..afd480451 100644 --- a/.github/workflows/rspec.yml +++ b/.github/workflows/rspec.yml @@ -70,4 +70,8 @@ jobs: ruby-version: ${{ matrix.ruby }} bundler: 2.4.12 bundler-cache: true - - run: bin/rspec --require spec_helper --tag ~perf + - run: >- + REDIS_HOST=localhost + TOXI_REDIS_URL=toxiproxy:21212 + TOXI_PROXY_HOST=http://toxiproxy:8474 + bin/rspec --require spec_helper --tag ~perf diff --git a/spec/integration/until_and_while_executing_spec.rb b/spec/integration/until_and_while_executing_spec.rb index 90e445b52..3f037b88c 100644 --- a/spec/integration/until_and_while_executing_spec.rb +++ b/spec/integration/until_and_while_executing_spec.rb @@ -4,14 +4,14 @@ RSpec.describe "SidekiqUniqueJobs::Lock::UntilAndWhileExecuting" do before do digests.delete_by_pattern("*") - toxic_redis_url = ENV["CI"] ? "toxiproxy:21212" : "localhost:21212" - redis_url = ENV["CI"] ? ENV.fetch("REDIS_URL", nil) : "localhost:6379" + toxi_redis_url = ENV.fetch("TOXI_REDIS_URL", "localhost:21212") + redis_url = ENV.fetch("REDIS_URL", "localhost:6379") - Toxiproxy.host = "http://toxiproxy:8474" if ENV["CI"] + Toxiproxy.host = ENV.fetch("TOXI_PROXY_HOST", nil) Toxiproxy.populate([ { name: :redis, - listen: toxic_redis_url, + listen: toxi_redis_url, upstream: redis_url, }, ]) diff --git a/spec/sidekiq_unique_jobs/digests_spec.rb b/spec/sidekiq_unique_jobs/digests_spec.rb index c6daf2f2b..419ab8a19 100644 --- a/spec/sidekiq_unique_jobs/digests_spec.rb +++ b/spec/sidekiq_unique_jobs/digests_spec.rb @@ -144,13 +144,13 @@ describe "#page" do include_context "with a regular job" - + it "returns the correct amount of results" do total_size, _cursor, locks = digests.page(cursor: 0, page_size: 100, pattern: "*") expect(locks.size).to be(total_size) expect(locks.size).to be(expected_keys.size) - expect(expected_keys.keys).to match_array(locks.map(&:key).map(&:digest)) + expect(expected_keys.keys).to match_array(locks.map { |lock| lock.key.digest }) end end end diff --git a/spec/sidekiq_unique_jobs/on_conflict/reject_spec.rb b/spec/sidekiq_unique_jobs/on_conflict/reject_spec.rb index 660b79a6b..a2c49407a 100644 --- a/spec/sidekiq_unique_jobs/on_conflict/reject_spec.rb +++ b/spec/sidekiq_unique_jobs/on_conflict/reject_spec.rb @@ -13,8 +13,7 @@ end before do - allow(strategy).to receive(:deadset).and_return(deadset) - allow(strategy).to receive(:payload).and_return(payload) + allow(strategy).to receive_messages(deadset: deadset, payload: payload) end describe "#replace?" do diff --git a/spec/sidekiq_unique_jobs/on_conflict/replace_spec.rb b/spec/sidekiq_unique_jobs/on_conflict/replace_spec.rb index 9df1e6a89..5ca92d48f 100644 --- a/spec/sidekiq_unique_jobs/on_conflict/replace_spec.rb +++ b/spec/sidekiq_unique_jobs/on_conflict/replace_spec.rb @@ -33,9 +33,8 @@ let(:jid) { "bogus" } before do - allow(strategy).to receive(:delete_job_by_digest).and_return(jid) + allow(strategy).to receive_messages(delete_job_by_digest: jid, delete_lock: 9) allow(strategy).to receive(:log_info).and_call_original - allow(strategy).to receive(:delete_lock).and_return(9) end it "logs important information" do @@ -50,9 +49,8 @@ let(:jid) { "bogus" } before do - allow(strategy).to receive(:delete_job_by_digest).and_return(jid) + allow(strategy).to receive_messages(delete_job_by_digest: jid, delete_lock: nil) allow(strategy).to receive(:log_info).and_call_original - allow(strategy).to receive(:delete_lock).and_return(nil) end it "logs important information" do @@ -68,9 +66,8 @@ let(:block) { nil } before do - allow(strategy).to receive(:delete_job_by_digest).and_return(jid) + allow(strategy).to receive_messages(delete_job_by_digest: jid, delete_lock: nil) allow(strategy).to receive(:log_info).and_call_original - allow(strategy).to receive(:delete_lock).and_return(nil) end it "does not call block" do diff --git a/spec/sidekiq_unique_jobs/orphans/manager_spec.rb b/spec/sidekiq_unique_jobs/orphans/manager_spec.rb index 278d56ecc..70b4df47a 100644 --- a/spec/sidekiq_unique_jobs/orphans/manager_spec.rb +++ b/spec/sidekiq_unique_jobs/orphans/manager_spec.rb @@ -16,11 +16,9 @@ before do allow(SidekiqUniqueJobs::Orphans::Observer).to receive(:new).and_return(observer) - allow(described_class).to receive(:task).and_return(task) + allow(described_class).to receive_messages(task: task, log_info: nil) allow(task).to receive(:add_observer).with(observer) allow(task).to receive(:execute) - - allow(described_class).to receive(:log_info).and_return(nil) end context "when registered?" do @@ -72,11 +70,9 @@ before do allow(SidekiqUniqueJobs::Orphans::Observer).to receive(:new).and_return(observer) - allow(described_class).to receive(:task).and_return(task) + allow(described_class).to receive_messages(task: task, log_info: nil) allow(task).to receive(:add_observer).with(observer) allow(task).to receive(:execute) - - allow(described_class).to receive(:log_info).and_return(nil) end context "when unregistered?" do diff --git a/spec/sidekiq_unique_jobs/orphans/reaper_resurrector_spec.rb b/spec/sidekiq_unique_jobs/orphans/reaper_resurrector_spec.rb index 6bae0c6a2..14604185c 100644 --- a/spec/sidekiq_unique_jobs/orphans/reaper_resurrector_spec.rb +++ b/spec/sidekiq_unique_jobs/orphans/reaper_resurrector_spec.rb @@ -16,10 +16,8 @@ end before do - allow(described_class).to receive(:task).and_return(task) + allow(described_class).to receive_messages(task: task, log_info: nil) allow(task).to receive(:execute) - - allow(described_class).to receive(:log_info).and_return(nil) end context "when resurrector is disabled" do diff --git a/spec/support/shared_examples/an_executing_lock_with_error_handling.rb b/spec/support/shared_examples/an_executing_lock_with_error_handling.rb index 43e2afe7c..ea4ffca5a 100644 --- a/spec/support/shared_examples/an_executing_lock_with_error_handling.rb +++ b/spec/support/shared_examples/an_executing_lock_with_error_handling.rb @@ -10,8 +10,7 @@ before do allow(lock).to receive(:locked?).and_return(initially_locked?, locked?) - allow(lock).to receive(:unlock).and_return(true) - allow(lock).to receive(:delete).and_return(true) + allow(lock).to receive_messages(unlock: true, delete: true) allow(callback).to receive(:call).and_call_original allow(block).to receive(:call).and_call_original allow(lock).to receive(:log_warn) diff --git a/spec/support/sidekiq_meta.rb b/spec/support/sidekiq_meta.rb index 650667e89..10ef6d95c 100644 --- a/spec/support/sidekiq_meta.rb +++ b/spec/support/sidekiq_meta.rb @@ -5,7 +5,8 @@ RSpec.configure do |config| config.before do |example| redis_db = example.metadata.fetch(:redis_db, 0) - redis_url = "redis://localhost/#{redis_db}" + redis_host = ENV.fetch("REDIS_HOST", "localhost") + redis_url = "redis://#{redis_host}/#{redis_db}" redis_options = { url: redis_url, driver: :ruby } # redis = Sidekiq::RedisConnection.create(redis_options)