sidekiq-cron 1.2.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,22 @@
1
+ pt:
2
+ Job: Tarefa
3
+ Cron: Cron
4
+ CronJobs: Tarefas do Cron
5
+ EnqueueNow: Enfileirar agora
6
+ EnableAll: Habilitar todos
7
+ DisableAll: Desabilitar todos
8
+ EnqueueAll: Enfileirar todos
9
+ DeleteAll: Excluir todos
10
+ 'Cron string': Cron
11
+ AreYouSureEnqueueCronJobs: Tem certeza de que deseja enfileirar TODOS as tarefas?
12
+ AreYouSureEnqueueCronJob: Tem certeza de que deseja enfileirar a tarefa %{job}?
13
+ AreYouSureDeleteCronJobs: Tem certeza de que deseja excluir TODOS as tarefas?
14
+ AreYouSureDeleteCronJob: Tem certeza de que deseja excluir a tarefa %{job}?
15
+ NoCronJobsWereFound: Nenhuma tarefa foi encontrada
16
+ Enable: Habilitar
17
+ Disable: Desabilitar
18
+ 'Last enqueued': Último enfileirado
19
+ disabled: desabilitado
20
+ enabled: habilitado
21
+ NoHistoryWereFound: Nenhum histórico foi encontrado
22
+ Description: Descrição
@@ -1,5 +1,4 @@
1
1
  require 'sidekiq'
2
- require 'sidekiq/util'
3
2
  require 'sidekiq/cron'
4
3
  require 'sidekiq/scheduled'
5
4
 
@@ -9,6 +8,19 @@ module Sidekiq
9
8
 
10
9
  # The Poller checks Redis every N seconds for sheduled cron jobs
11
10
  class Poller < Sidekiq::Scheduled::Poller
11
+ def initialize
12
+ Sidekiq.configure_server do |config|
13
+ config[:poll_interval_average] = config[:average_scheduled_poll_interval] || POLL_INTERVAL
14
+ end
15
+
16
+ if Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new("6.5.0")
17
+ # Sidekiq Poller init requires a config argument
18
+ super(Sidekiq)
19
+ else
20
+ super
21
+ end
22
+ end
23
+
12
24
  def enqueue
13
25
  time = Time.now.utc
14
26
  Sidekiq::Cron::Job.all.each do |job|
@@ -32,10 +44,6 @@ module Sidekiq
32
44
  Sidekiq.logger.error "CRON JOB: #{ex.backtrace.first}"
33
45
  handle_exception(ex) if respond_to?(:handle_exception)
34
46
  end
35
-
36
- def poll_interval_average
37
- Sidekiq.options[:poll_interval] || POLL_INTERVAL
38
- end
39
47
  end
40
48
  end
41
49
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sidekiq
4
+ module Cron
5
+ VERSION = "1.5.0"
6
+ end
7
+ end
@@ -1,24 +1,24 @@
1
1
  <header class='row'>
2
2
  <div class='col-sm-5 pull-left'>
3
- <h3><%=t 'CronJobs' %></h3>
3
+ <h3><%= t('CronJobs') %></h3>
4
4
  </div>
5
5
  <div class='col-sm-7 pull-right' style="margin-top: 20px; margin-bottom: 10px;">
6
6
  <% if @cron_jobs.size > 0 %>
7
7
  <form action="<%= root_path %>cron/__all__/delete" method="post" class="pull-right">
8
8
  <%= csrf_tag if respond_to?(:csrf_tag) %>
9
- <input class="btn btn-small btn-danger" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSureDeleteCronJobs') %>">
9
+ <input class="btn btn-danger" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSureDeleteCronJobs') %>" />
10
10
  </form>
11
11
  <form action="<%= root_path %>cron/__all__/disable" method="post" class="pull-right">
12
12
  <%= csrf_tag if respond_to?(:csrf_tag) %>
13
- <input class="btn btn-small" type="submit" name="enque" value="<%= t('DisableAll') %>" />
13
+ <input class="btn btn-warn" type="submit" name="enque" value="<%= t('DisableAll') %>" />
14
14
  </form>
15
15
  <form action="<%= root_path %>cron/__all__/enable" method="post" class="pull-right">
16
16
  <%= csrf_tag if respond_to?(:csrf_tag) %>
17
- <input class="btn btn-small" type="submit" name="enque" value="<%= t('EnableAll') %>" />
17
+ <input class="btn btn-warn" type="submit" name="enque" value="<%= t('EnableAll') %>" />
18
18
  </form>
19
19
  <form action="<%= root_path %>cron/__all__/enque" method="post" class="pull-right">
20
20
  <%= csrf_tag if respond_to?(:csrf_tag) %>
21
- <input class="btn btn-small" type="submit" name="enque" value="<%= t('EnqueueAll') %>" />
21
+ <input class="btn btn-warn" type="submit" name="enque" value="<%= t('EnqueueAll') %>" data-confirm="<%= t('AreYouSureEnqueueCronJobs') %>" />
22
22
  </form>
23
23
  <% end %>
24
24
  </div>
@@ -37,7 +37,7 @@
37
37
 
38
38
  <tbody>
39
39
  <% @cron_jobs.sort{|a,b| a.sort_name <=> b.sort_name }.each_with_index do |job, index| %>
40
- <% style = "#{job.status == 'disabled' ? "background: #ecc": ""}" %>
40
+ <% style = "#{job.status == 'disabled' ? "background: #ecc; color: #585454;": ""}" %>
41
41
  <tr>
42
42
  <td style="<%= style %>"><%= t job.status %></td>
43
43
  <td style="<%= style %>">
@@ -47,9 +47,15 @@
47
47
  <hr style="margin:3px;border:0;">
48
48
  <small>
49
49
  <% if job.message and job.message.to_s.size > 100 %>
50
- <button data-toggle="collapse" data-target=".worker_<%= index %>" class="btn btn-xs"><%= t('ShowAll')%></button>
51
- <div class="toggle worker_<%= index %>" style="display: inline;"><%= job.message[0..100] + "... " %></div>
52
- <div class="toggle worker_<%= index %>" style="display: none;"><%= job.message %></div>
50
+ <% if Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new("6.3.0") %>
51
+ <button data-toggle="job_<%= index %>" class="btn btn-warn btn-xs"><%= t('ShowAll')%></button>
52
+ <div class="toggle" id="job_<%= index %>" style="display: inline;"><%= job.message[0..100] + "... " %></div>
53
+ <div class="toggle" id="job_<%= index %>_full" style="display: none;"><%= job.message %></div>
54
+ <% else %>
55
+ <button data-toggle="collapse" data-target=".worker_<%= index %>" class="btn btn-warn btn-xs"><%= t('ShowAll')%></button>
56
+ <div class="toggle worker_<%= index %>" style="display: inline;"><%= job.message[0..100] + "... " %></div>
57
+ <div class="toggle worker_<%= index %>" style="display: none;"><%= job.message %></div>
58
+ <% end %>
53
59
  <% else %>
54
60
  <%= job.message %>
55
61
  <% end %>
@@ -61,20 +67,20 @@
61
67
  <% if job.status == 'enabled' %>
62
68
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/enque" method="post">
63
69
  <%= csrf_tag if respond_to?(:csrf_tag) %>
64
- <input class='btn btn-xs pull-left' type="submit" name="enque" value="<%= t('EnqueueNow') %>"/>
70
+ <input class='btn btn-warn btn-xs pull-left' type="submit" name="enque" value="<%= t('EnqueueNow') %>" data-confirm="<%= t('AreYouSureEnqueueCronJob', :job => job.name) %>"/>
65
71
  </form>
66
72
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/disable" method="post">
67
73
  <%= csrf_tag if respond_to?(:csrf_tag) %>
68
- <input class='btn btn-xs pull-left' type="submit" name="disable" value="<%= t('Disable') %>"/>
74
+ <input class='btn btn-warn btn-xs pull-left' type="submit" name="disable" value="<%= t('Disable') %>"/>
69
75
  </form>
70
76
  <% else %>
71
77
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/enque" method="post">
72
78
  <%= csrf_tag if respond_to?(:csrf_tag) %>
73
- <input class='btn btn-xs pull-left' type="submit" name="enque" value="<%= t('EnqueueNow') %>"/>
79
+ <input class='btn btn-warn btn-xs pull-left' type="submit" name="enque" value="<%= t('EnqueueNow') %>"/>
74
80
  </form>
75
81
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/enable" method="post">
76
82
  <%= csrf_tag if respond_to?(:csrf_tag) %>
77
- <input class='btn btn-xs pull-left' type="submit" name="enable" value="<%= t('Enable') %>"/>
83
+ <input class='btn btn-warn btn-xs pull-left' type="submit" name="enable" value="<%= t('Enable') %>"/>
78
84
  </form>
79
85
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/delete" method="post">
80
86
  <%= csrf_tag if respond_to?(:csrf_tag) %>
@@ -7,23 +7,23 @@
7
7
  </div>
8
8
  <div class="span col-sm-7 pull-right" style="margin-top: 20px; margin-bottom: 10px;">
9
9
  <% cron_job_path = "#{root_path}cron/#{CGI.escape(@job.name).gsub('+', '%20')}" %>
10
- <form action="<%= cron_job_path %>/enque?redirect=<%= cron_job_path %>" class="pull-right" method="post">
10
+ <form action="<%= cron_job_path %>/enque?redirect=<%= cron_job_path %>" method="post">
11
11
  <%= csrf_tag if respond_to?(:csrf_tag) %>
12
- <input class="btn btn-small pull-left" name="enque" type="submit" value="<%= t('EnqueueNow') %>" />
12
+ <input class="btn btn-warn pull-left" name="enque" type="submit" value="<%= t('EnqueueNow') %>" data-confirm="<%= t('AreYouSureEnqueueCronJob', :job => @job.name) %>" />
13
13
  </form>
14
14
  <% if @job.status == 'enabled' %>
15
- <form action="<%= cron_job_path %>/disable?redirect=<%= cron_job_path %>" class="pull-right" method="post">
15
+ <form action="<%= cron_job_path %>/disable?redirect=<%= cron_job_path %>" method="post">
16
16
  <%= csrf_tag if respond_to?(:csrf_tag) %>
17
- <input class="btn btn-small pull-left" name="disable" type="submit" value="<%= t('Disable') %>" />
17
+ <input class="btn btn-warn pull-left" name="disable" type="submit" value="<%= t('Disable') %>" />
18
18
  </form>
19
19
  <% else %>
20
- <form action="<%= cron_job_path %>/enable?redirect=<%= cron_job_path %>" class="pull-right" method="post">
20
+ <form action="<%= cron_job_path %>/enable?redirect=<%= cron_job_path %>" method="post">
21
21
  <%= csrf_tag if respond_to?(:csrf_tag) %>
22
- <input class="btn btn-small pull-left" name="enable" type="submit" value="<%= t('Enable') %>" />
22
+ <input class="btn btn-warn pull-left" name="enable" type="submit" value="<%= t('Enable') %>" />
23
23
  </form>
24
- <form action="<%= cron_job_path %>/delete" class="pull-right" method="post">
24
+ <form action="<%= cron_job_path %>/delete" method="post">
25
25
  <%= csrf_tag if respond_to?(:csrf_tag) %>
26
- <input class="btn btn-danger btn-small" data-confirm="<%= t('AreYouSureDeleteCronJob', :job => @job.name) %>" name="delete" type="submit" value="<%= t('Delete') %>" />
26
+ <input class="btn btn-danger" data-confirm="<%= t('AreYouSureDeleteCronJob', :job => @job.name) %>" name="delete" type="submit" value="<%= t('Delete') %>" />
27
27
  </form>
28
28
  <% end %>
29
29
  </div>
@@ -3,11 +3,5 @@ require "sidekiq/cron/job"
3
3
 
4
4
  if defined?(Sidekiq::Web)
5
5
  Sidekiq::Web.register Sidekiq::Cron::WebExtension
6
-
7
- if Sidekiq::Web.tabs.is_a?(Array)
8
- # For sidekiq < 2.5
9
- Sidekiq::Web.tabs << "cron"
10
- else
11
- Sidekiq::Web.tabs["Cron"] = "cron"
12
- end
6
+ Sidekiq::Web.tabs["Cron"] = "cron"
13
7
  end
@@ -12,12 +12,7 @@ module Sidekiq
12
12
 
13
13
  @cron_jobs = Sidekiq::Cron::Job.all
14
14
 
15
- #if Slim renderer exists and sidekiq has layout.slim in views
16
- if defined?(Slim) && File.exists?(File.join(settings.views,"layout.slim"))
17
- render(:slim, File.read(File.join(view_path, "cron.slim")))
18
- else
19
- render(:erb, File.read(File.join(view_path, "cron.erb")))
20
- end
15
+ render(:erb, File.read(File.join(view_path, "cron.erb")))
21
16
  end
22
17
 
23
18
  # display job detail + jid history
@@ -26,12 +21,7 @@ module Sidekiq
26
21
 
27
22
  @job = Sidekiq::Cron::Job.find(route_params[:name])
28
23
  if @job
29
- #if Slim renderer exists and sidekiq has layout.slim in views
30
- if defined?(Slim) && File.exists?(File.join(settings.views,"layout.slim"))
31
- render(:slim, File.read(File.join(view_path, "cron_show.slim")))
32
- else
33
- render(:erb, File.read(File.join(view_path, "cron_show.erb")))
34
- end
24
+ render(:erb, File.read(File.join(view_path, "cron_show.erb")))
35
25
  else
36
26
  redirect "#{root_path}cron"
37
27
  end
data/sidekiq-cron.gemspec CHANGED
@@ -1,129 +1,41 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: sidekiq-cron 1.2.0 ruby lib
1
+ # frozen_string_literal: true
2
+
3
+ require './lib/sidekiq/cron/version'
6
4
 
7
5
  Gem::Specification.new do |s|
8
- s.name = "sidekiq-cron".freeze
9
- s.version = "1.2.0"
6
+ s.name = "sidekiq-cron"
7
+ s.version = Sidekiq::Cron::VERSION
10
8
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["Ondrej Bartas".freeze]
14
- s.date = "2020-04-03"
15
- s.description = "Enables to set jobs to be run in specified time (using CRON notation)".freeze
16
- s.email = "ondrej@bartas.cz".freeze
9
+ s.required_ruby_version = ">= 2.6"
10
+ s.require_paths = ["lib"]
11
+ s.authors = ["Ondrej Bartas"]
12
+ s.description = "Enables to set jobs to be run in specified time (using CRON notation)"
13
+ s.email = "ondrej@bartas.cz"
17
14
  s.extra_rdoc_files = [
18
15
  "LICENSE.txt",
19
16
  "README.md"
20
17
  ]
21
- s.files = [
22
- ".document",
23
- ".travis.yml",
18
+ s.files = Dir.glob('lib/**/*') + Dir.glob('test/**/*') + [
24
19
  "Changes.md",
25
- "Dockerfile",
26
20
  "Gemfile",
27
21
  "LICENSE.txt",
28
- "README.md",
29
22
  "Rakefile",
30
- "VERSION",
31
- "config.ru",
32
- "docker-compose.yml",
33
- "examples/web-cron-ui.png",
34
- "lib/sidekiq-cron.rb",
35
- "lib/sidekiq/cron.rb",
36
- "lib/sidekiq/cron/job.rb",
37
- "lib/sidekiq/cron/launcher.rb",
38
- "lib/sidekiq/cron/locales/de.yml",
39
- "lib/sidekiq/cron/locales/en.yml",
40
- "lib/sidekiq/cron/locales/ja.yml",
41
- "lib/sidekiq/cron/locales/ru.yml",
42
- "lib/sidekiq/cron/locales/zh-CN.yml",
43
- "lib/sidekiq/cron/poller.rb",
44
- "lib/sidekiq/cron/support.rb",
45
- "lib/sidekiq/cron/views/cron.erb",
46
- "lib/sidekiq/cron/views/cron.slim",
47
- "lib/sidekiq/cron/views/cron_show.erb",
48
- "lib/sidekiq/cron/views/cron_show.slim",
49
- "lib/sidekiq/cron/web.rb",
50
- "lib/sidekiq/cron/web_extension.rb",
23
+ "README.md",
51
24
  "sidekiq-cron.gemspec",
52
- "test/integration/performance_test.rb",
53
- "test/test_helper.rb",
54
- "test/unit/job_test.rb",
55
- "test/unit/poller_test.rb",
56
- "test/unit/web_extension_test.rb"
57
25
  ]
58
- s.homepage = "http://github.com/ondrejbartas/sidekiq-cron".freeze
59
- s.licenses = ["MIT".freeze]
60
- s.rubygems_version = "2.5.2.3".freeze
61
- s.summary = "Sidekiq Cron helps to add repeated scheduled jobs".freeze
62
26
 
63
- if s.respond_to? :specification_version then
64
- s.specification_version = 4
27
+ s.homepage = "https://github.com/ondrejbartas/sidekiq-cron"
28
+ s.licenses = ["MIT"]
29
+ s.summary = "Sidekiq-Cron helps to add repeated scheduled jobs"
65
30
 
66
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
67
- s.add_runtime_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
68
- s.add_runtime_dependency(%q<fugit>.freeze, ["~> 1.1"])
69
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
70
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
71
- s.add_development_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
72
- s.add_development_dependency(%q<shoulda-context>.freeze, [">= 0"])
73
- s.add_development_dependency(%q<rack>.freeze, [">= 0"])
74
- s.add_development_dependency(%q<rack-test>.freeze, [">= 0"])
75
- s.add_development_dependency(%q<jeweler>.freeze, [">= 0"])
76
- s.add_development_dependency(%q<minitest>.freeze, [">= 0"])
77
- s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
78
- s.add_development_dependency(%q<sdoc>.freeze, [">= 0"])
79
- s.add_development_dependency(%q<slim>.freeze, [">= 0"])
80
- s.add_development_dependency(%q<sinatra>.freeze, [">= 0"])
81
- s.add_development_dependency(%q<mocha>.freeze, [">= 0"])
82
- s.add_development_dependency(%q<coveralls>.freeze, [">= 0"])
83
- s.add_development_dependency(%q<shotgun>.freeze, [">= 0"])
84
- s.add_development_dependency(%q<guard>.freeze, [">= 0"])
85
- s.add_development_dependency(%q<guard-minitest>.freeze, [">= 0"])
86
- else
87
- s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
88
- s.add_dependency(%q<fugit>.freeze, ["~> 1.1"])
89
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
90
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
91
- s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
92
- s.add_dependency(%q<shoulda-context>.freeze, [">= 0"])
93
- s.add_dependency(%q<rack>.freeze, [">= 0"])
94
- s.add_dependency(%q<rack-test>.freeze, [">= 0"])
95
- s.add_dependency(%q<jeweler>.freeze, [">= 0"])
96
- s.add_dependency(%q<minitest>.freeze, [">= 0"])
97
- s.add_dependency(%q<test-unit>.freeze, [">= 0"])
98
- s.add_dependency(%q<sdoc>.freeze, [">= 0"])
99
- s.add_dependency(%q<slim>.freeze, [">= 0"])
100
- s.add_dependency(%q<sinatra>.freeze, [">= 0"])
101
- s.add_dependency(%q<mocha>.freeze, [">= 0"])
102
- s.add_dependency(%q<coveralls>.freeze, [">= 0"])
103
- s.add_dependency(%q<shotgun>.freeze, [">= 0"])
104
- s.add_dependency(%q<guard>.freeze, [">= 0"])
105
- s.add_dependency(%q<guard-minitest>.freeze, [">= 0"])
106
- end
107
- else
108
- s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
109
- s.add_dependency(%q<fugit>.freeze, ["~> 1.1"])
110
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
111
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
112
- s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
113
- s.add_dependency(%q<shoulda-context>.freeze, [">= 0"])
114
- s.add_dependency(%q<rack>.freeze, [">= 0"])
115
- s.add_dependency(%q<rack-test>.freeze, [">= 0"])
116
- s.add_dependency(%q<jeweler>.freeze, [">= 0"])
117
- s.add_dependency(%q<minitest>.freeze, [">= 0"])
118
- s.add_dependency(%q<test-unit>.freeze, [">= 0"])
119
- s.add_dependency(%q<sdoc>.freeze, [">= 0"])
120
- s.add_dependency(%q<slim>.freeze, [">= 0"])
121
- s.add_dependency(%q<sinatra>.freeze, [">= 0"])
122
- s.add_dependency(%q<mocha>.freeze, [">= 0"])
123
- s.add_dependency(%q<coveralls>.freeze, [">= 0"])
124
- s.add_dependency(%q<shotgun>.freeze, [">= 0"])
125
- s.add_dependency(%q<guard>.freeze, [">= 0"])
126
- s.add_dependency(%q<guard-minitest>.freeze, [">= 0"])
127
- end
128
- end
31
+ s.add_dependency("fugit", "~> 1")
32
+ s.add_dependency("sidekiq", ">= 4.2.1")
129
33
 
34
+ s.add_development_dependency("minitest", "~> 5.15")
35
+ s.add_development_dependency("mocha", "~> 1.14")
36
+ s.add_development_dependency("redis-namespace", "~> 1.8")
37
+ s.add_development_dependency("rack", "~> 2.2")
38
+ s.add_development_dependency("rack-test", "~> 1.1")
39
+ s.add_development_dependency("rake", "~> 13.0")
40
+ s.add_development_dependency("simplecov", "~> 0.21")
41
+ end
@@ -1,12 +1,11 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require './test/test_helper'
3
2
  require 'benchmark'
4
3
 
5
4
  describe 'Performance Poller' do
6
5
  X = 10000
7
6
  before do
7
+ REDIS.with { |c| c.respond_to?(:redis) ? c.redis.flushdb : c.flushdb }
8
8
  Sidekiq.redis = REDIS
9
- Redis.current.flushdb
10
9
 
11
10
  #clear all previous saved data from redis
12
11
  Sidekiq.redis do |conn|
@@ -31,7 +30,7 @@ describe 'Performance Poller' do
31
30
  Time.stubs(:now).returns(enqueued_time)
32
31
  end
33
32
 
34
- it 'should enqueue 10000 jobs in less than 40s' do
33
+ it 'should enqueue 10000 jobs in less than 50s' do
35
34
  Sidekiq.redis do |conn|
36
35
  assert_equal 0, conn.llen("queue:default"), 'Queue should be empty'
37
36
  end
@@ -45,6 +44,6 @@ describe 'Performance Poller' do
45
44
  end
46
45
 
47
46
  puts "Performance test finished in #{bench.real}"
48
- assert_operator bench.real, :<, 40
47
+ assert_operator bench.real, :<, 50
49
48
  end
50
49
  end
data/test/test_helper.rb CHANGED
@@ -1,37 +1,21 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
1
+ $TESTING = true
2
+ ENV['RACK_ENV'] = 'test'
10
3
 
11
4
  require 'simplecov'
12
5
  SimpleCov.start do
13
6
  add_filter "/test/"
14
-
15
7
  add_group 'SidekiqCron', 'lib/'
16
8
  end
17
- require 'coveralls'
18
- Coveralls.wear!
19
9
 
20
10
  require "minitest/autorun"
21
- require 'shoulda-context'
22
11
  require "rack/test"
23
12
  require 'mocha/minitest'
24
-
25
- ENV['RACK_ENV'] = 'test'
26
-
27
- #SIDEKIQ Require - need to have sidekiq running!
28
13
  require 'sidekiq'
29
- require 'sidekiq/util'
14
+ require "sidekiq-pro" if ENV['SIDEKIQ_PRO_VERSION']
30
15
  require 'sidekiq/web'
31
16
 
32
17
  Sidekiq.logger.level = Logger::ERROR
33
18
 
34
- require 'sidekiq/redis_connection'
35
19
  redis_url = ENV['REDIS_URL'] || 'redis://0.0.0.0:6379'
36
20
  REDIS = Sidekiq::RedisConnection.create(:url => redis_url, :namespace => 'testy')
37
21
 
@@ -39,12 +23,15 @@ Sidekiq.configure_client do |config|
39
23
  config.redis = { :url => redis_url, :namespace => 'testy' }
40
24
  end
41
25
 
42
-
43
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
44
- $LOAD_PATH.unshift(File.dirname(__FILE__))
45
26
  require 'sidekiq-cron'
46
27
  require 'sidekiq/cron/web'
47
- require 'pp'
28
+
29
+ # For testing os symbilize args!
30
+ class Hash
31
+ def symbolize_keys
32
+ transform_keys { |key| key.to_sym rescue key }
33
+ end
34
+ end
48
35
 
49
36
  class CronTestClass
50
37
  include Sidekiq::Worker
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require './test/test_helper'
3
2
 
4
3
  describe "Cron Job" do
@@ -363,6 +362,108 @@ describe "Cron Job" do
363
362
  end
364
363
  end
365
364
 
365
+ describe '#active_job_message - unknown Active Job Worker class' do
366
+ before do
367
+ SecureRandom.stubs(:uuid).returns('XYZ')
368
+ ActiveJob::Base.queue_name_prefix = ''
369
+
370
+ @args = {
371
+ name: 'Test',
372
+ cron: '* * * * *',
373
+ klass: 'UnknownActiveJobCronTestClass',
374
+ active_job: true,
375
+ queue: 'super_queue',
376
+ description: nil,
377
+ args: { foo: 'bar' }
378
+ }
379
+ @job = Sidekiq::Cron::Job.new(@args)
380
+ end
381
+
382
+ it 'should return valid payload for Sidekiq::Client' do
383
+ payload = {
384
+ 'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
385
+ 'wrapped' => 'UnknownActiveJobCronTestClass',
386
+ 'queue' => 'super_queue',
387
+ 'description' => nil,
388
+ 'args' => [{
389
+ 'job_class' => 'UnknownActiveJobCronTestClass',
390
+ 'job_id' => 'XYZ',
391
+ 'queue_name' => 'super_queue',
392
+ 'arguments' => [{foo: 'bar'}]
393
+ }]
394
+ }
395
+ assert_equal @job.active_job_message, payload
396
+ end
397
+ end
398
+
399
+ describe '#active_job_message with symbolize_args (hash)' do
400
+ before do
401
+ SecureRandom.stubs(:uuid).returns('XYZ')
402
+ ActiveJob::Base.queue_name_prefix = ''
403
+
404
+ @args = {
405
+ name: 'Test',
406
+ cron: '* * * * *',
407
+ klass: 'ActiveJobCronTestClass',
408
+ queue: 'super_queue',
409
+ description: nil,
410
+ symbolize_args: true,
411
+ args: { 'foo' => 'bar' }
412
+ }
413
+ @job = Sidekiq::Cron::Job.new(@args)
414
+ end
415
+
416
+ it 'should return valid payload for Sidekiq::Client' do
417
+ payload = {
418
+ 'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
419
+ 'wrapped' => 'ActiveJobCronTestClass',
420
+ 'queue' => 'super_queue',
421
+ 'description' => nil,
422
+ 'args' => [{
423
+ 'job_class' => 'ActiveJobCronTestClass',
424
+ 'job_id' => 'XYZ',
425
+ 'queue_name' => 'super_queue',
426
+ 'arguments' => [{foo: 'bar'}]
427
+ }]
428
+ }
429
+ assert_equal @job.active_job_message, payload
430
+ end
431
+ end
432
+
433
+ describe '#active_job_message with symbolize_args (array)' do
434
+ before do
435
+ SecureRandom.stubs(:uuid).returns('XYZ')
436
+ ActiveJob::Base.queue_name_prefix = ''
437
+
438
+ @args = {
439
+ name: 'Test',
440
+ cron: '* * * * *',
441
+ klass: 'ActiveJobCronTestClass',
442
+ queue: 'super_queue',
443
+ description: nil,
444
+ symbolize_args: true,
445
+ args: [{ 'foo' => 'bar' }]
446
+ }
447
+ @job = Sidekiq::Cron::Job.new(@args)
448
+ end
449
+
450
+ it 'should return valid payload for Sidekiq::Client' do
451
+ payload = {
452
+ 'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
453
+ 'wrapped' => 'ActiveJobCronTestClass',
454
+ 'queue' => 'super_queue',
455
+ 'description' => nil,
456
+ 'args' => [{
457
+ 'job_class' => 'ActiveJobCronTestClass',
458
+ 'job_id' => 'XYZ',
459
+ 'queue_name' => 'super_queue',
460
+ 'arguments' => [{foo: 'bar'}]
461
+ }]
462
+ }
463
+ assert_equal @job.active_job_message, payload
464
+ end
465
+ end
466
+
366
467
  describe '#active_job_message with queue_name_prefix' do
367
468
  before do
368
469
  SecureRandom.stubs(:uuid).returns('XYZ')
@@ -827,11 +928,11 @@ describe "Cron Job" do
827
928
  cron: "* * * * *",
828
929
  klass: "CronTestClass"
829
930
  }
830
- #first time is allways
931
+ #first time is always
831
932
  #after next cron time!
832
933
  @time = Time.now.utc + 120
833
934
  end
834
- it "be allways false when status is disabled" do
935
+ it "be always false when status is disabled" do
835
936
  refute Sidekiq::Cron::Job.new(@args.merge(status: 'disabled')).should_enque? @time
836
937
  refute Sidekiq::Cron::Job.new(@args.merge(status: 'disabled')).should_enque? @time - 60
837
938
  refute Sidekiq::Cron::Job.new(@args.merge(status: 'disabled')).should_enque? @time - 120
@@ -1018,7 +1119,6 @@ describe "Cron Job" do
1018
1119
 
1019
1120
  assert_equal Sidekiq::Cron::Job.all.first.sidekiq_worker_message, payload
1020
1121
  end
1021
-
1022
1122
  end
1023
1123
  end
1024
1124
  end
@@ -1,11 +1,9 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require './test/test_helper'
3
2
 
4
-
5
3
  describe 'Cron Poller' do
6
4
  before do
5
+ REDIS.with { |c| c.respond_to?(:redis) ? c.redis.flushdb : c.flushdb }
7
6
  Sidekiq.redis = REDIS
8
- Redis.current.flushdb
9
7
 
10
8
  #clear all previous saved data from redis
11
9
  Sidekiq.redis do |conn|