Skip to content

Commit

Permalink
Isolate the "schedules" key
Browse files Browse the repository at this point in the history
Most other keys are centralized in `SidekiqScheduler::RedisManager` as class methods. This does the same with the "schedules" key.
  • Loading branch information
TALlama authored and marcelolx committed Sep 8, 2022
1 parent ecb35ae commit 7342e72
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 17 deletions.
17 changes: 12 additions & 5 deletions lib/sidekiq-scheduler/redis_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module RedisManager
#
# @return [String] schedule in JSON format
def self.get_job_schedule(name)
hget('schedules', name)
hget(schedules_key, name)
end

# Returns the state of a given job
Expand Down Expand Up @@ -44,7 +44,7 @@ def self.get_job_last_time(name)
# @param [String] name The name of the job
# @param [Hash] config The new schedule for the job
def self.set_job_schedule(name, config)
hset('schedules', name, JSON.generate(config))
hset(schedules_key, name, JSON.generate(config))
end

# Sets the state for a given job
Expand Down Expand Up @@ -75,7 +75,7 @@ def self.set_job_last_time(name, last_time)
#
# @param [String] name The name of the job
def self.remove_job_schedule(name)
hdel('schedules', name)
hdel(schedules_key, name)
end

# Removes the next execution time for a given job
Expand All @@ -89,14 +89,14 @@ def self.remove_job_next_time(name)
#
# @return [Hash] hash with all the job schedules
def self.get_all_schedules
Sidekiq.redis { |r| r.hgetall('schedules') }
Sidekiq.redis { |r| r.hgetall(schedules_key) }
end

# Returns boolean value that indicates if the schedules value exists
#
# @return [Boolean] true if the schedules key is set, false otherwise
def self.schedule_exist?
Sidekiq.redis { |r| r.exists?('schedules') }
Sidekiq.redis { |r| r.exists?(schedules_key) }
end

# Returns all the schedule changes for a given time range.
Expand Down Expand Up @@ -180,6 +180,13 @@ def self.schedules_state_key
'sidekiq-scheduler:states'
end

# Returns the Redis's key for saving schedules.
#
# @return [String] with the key
def self.schedules_key
'schedules'
end

private

# Returns the value of a Redis stored hash field
Expand Down
22 changes: 14 additions & 8 deletions spec/sidekiq-scheduler/redis_manager_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
let(:job_name) { 'some_job' }
let(:schedule) { JSON.generate(ScheduleFaker.default_options) }

before { SidekiqScheduler::Store.hset(:schedules, job_name, schedule) }
before { SidekiqScheduler::Store.hset(SidekiqScheduler::RedisManager.schedules_key, job_name, schedule) }

it { is_expected.to eq(schedule) }
end
Expand Down Expand Up @@ -57,7 +57,7 @@
it 'should store the job schedule' do
subject

stored_schedule = SidekiqScheduler::Store.hget(:schedules, job_name)
stored_schedule = SidekiqScheduler::Store.hget(SidekiqScheduler::RedisManager.schedules_key, job_name)
expect(JSON.parse(stored_schedule)).to eq(config)
end
end
Expand Down Expand Up @@ -110,12 +110,12 @@
let(:job_name) { 'some_job' }
let(:schedule) { JSON.generate(ScheduleFaker.default_options) }

before { SidekiqScheduler::Store.hset(:schedules, job_name, schedule) }
before { SidekiqScheduler::Store.hset(SidekiqScheduler::RedisManager.schedules_key, job_name, schedule) }

it 'should remove the job schedule' do
subject

stored_schedule = SidekiqScheduler::Store.hget(:schedules, job_name)
stored_schedule = SidekiqScheduler::Store.hget(SidekiqScheduler::RedisManager.schedules_key, job_name)
expect(stored_schedule).to be_nil
end

Expand All @@ -125,7 +125,7 @@
it 'should maintain inexisting' do
subject

stored_schedule = SidekiqScheduler::Store.hget(:schedules, job_name)
stored_schedule = SidekiqScheduler::Store.hget(SidekiqScheduler::RedisManager.schedules_key, job_name)
expect(stored_schedule).to be_nil
end
end
Expand Down Expand Up @@ -167,8 +167,8 @@
let(:other_job_schedule) { JSON.generate(ScheduleFaker.every_schedule) }

before do
SidekiqScheduler::Store.hset(:schedules, some_job, some_job_schedule)
SidekiqScheduler::Store.hset(:schedules, other_job, other_job_schedule)
SidekiqScheduler::Store.hset(SidekiqScheduler::RedisManager.schedules_key, some_job, some_job_schedule)
SidekiqScheduler::Store.hset(SidekiqScheduler::RedisManager.schedules_key, other_job, other_job_schedule)
end

it { is_expected.to include('some_job' => some_job_schedule, 'other_job' => other_job_schedule) }
Expand All @@ -183,7 +183,7 @@
context 'when some job schedule exists' do
let(:schedule) { JSON.generate(ScheduleFaker.default_options) }

before { SidekiqScheduler::Store.hset(:schedules, 'some_job', schedule) }
before { SidekiqScheduler::Store.hset(SidekiqScheduler::RedisManager.schedules_key, 'some_job', schedule) }

it { is_expected.to be_truthy }
end
Expand Down Expand Up @@ -362,4 +362,10 @@

it { is_expected.to eq('sidekiq-scheduler:states') }
end

describe ".schedules_key" do
subject { described_class.schedules_key }

it { is_expected.to eq('schedules') }
end
end
6 changes: 3 additions & 3 deletions spec/sidekiq-scheduler/scheduler_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -468,9 +468,9 @@
context 'when setting new values' do
before do
instance.load_schedule!
SidekiqScheduler::Store.del(:schedules)
SidekiqScheduler::Store.del(SidekiqScheduler::RedisManager.schedules_key)
SidekiqScheduler::Store.hset(
:schedules,
SidekiqScheduler::RedisManager.schedules_key,
'some_ivar_job2',
JSON.generate(
cron: '* * * * *',
Expand All @@ -495,7 +495,7 @@
}
}
instance.load_schedule!
SidekiqScheduler::Store.del(:schedules)
SidekiqScheduler::Store.del(SidekiqScheduler::RedisManager.schedules_key)
end

it 'should remove them' do
Expand Down
2 changes: 1 addition & 1 deletion spec/support/store.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def self.changed_job?(job_id)
end

def self.job_from_redis_without_decoding(job_id)
Sidekiq.redis { |redis| redis.hget('schedules', job_id) }
Sidekiq.redis { |redis| redis.hget(SidekiqScheduler::RedisManager.schedules_key, job_id) }
end

def self.job_next_execution_time(job_name)
Expand Down

0 comments on commit 7342e72

Please sign in to comment.