summaryrefslogtreecommitdiff
path: root/spec/migrations/set_job_waiter_ttl_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/migrations/set_job_waiter_ttl_spec.rb')
-rw-r--r--spec/migrations/set_job_waiter_ttl_spec.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/migrations/set_job_waiter_ttl_spec.rb b/spec/migrations/set_job_waiter_ttl_spec.rb
new file mode 100644
index 00000000000..b9cf7c55798
--- /dev/null
+++ b/spec/migrations/set_job_waiter_ttl_spec.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20200930144340_set_job_waiter_ttl.rb')
+
+RSpec.describe SetJobWaiterTtl, :redis do
+ it 'sets TTLs where necessary' do
+ waiter_with_ttl = Gitlab::JobWaiter.new.key
+ waiter_without_ttl = Gitlab::JobWaiter.new.key
+ key_with_ttl = "foo:bar"
+ key_without_ttl = "foo:qux"
+
+ Gitlab::Redis::SharedState.with do |redis|
+ redis.set(waiter_with_ttl, "zzz", ex: 2000)
+ redis.set(waiter_without_ttl, "zzz")
+ redis.set(key_with_ttl, "zzz", ex: 2000)
+ redis.set(key_without_ttl, "zzz")
+
+ described_class.new.up
+
+ # This is the point of the migration. We know the migration uses a TTL of 21_600
+ expect(redis.ttl(waiter_without_ttl)).to be > 20_000
+
+ # Other TTL's should be untouched by the migration
+ expect(redis.ttl(waiter_with_ttl)).to be_between(1000, 2000)
+ expect(redis.ttl(key_with_ttl)).to be_between(1000, 2000)
+ expect(redis.ttl(key_without_ttl)).to eq(-1)
+ end
+ end
+end