sidekiq-cron 0.6.3 → 1.4.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.
@@ -1,24 +1,26 @@
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
- <form action="<%= root_path %>cron/__all__/delete" method="post" class="pull-right">
7
- <%= csrf_tag if respond_to?(:csrf_tag) %>
8
- <input class="btn btn-small btn-danger" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSureDeleteCronJobs') %>">
9
- </form>
10
- <form action="<%= root_path %>cron/__all__/disable" method="post" class="pull-right">
11
- <%= csrf_tag if respond_to?(:csrf_tag) %>
12
- <input class="btn btn-small" type="submit" name="enque" value="<%= t('DisableAll') %>" />
13
- </form>
14
- <form action="<%= root_path %>cron/__all__/enable" method="post" class="pull-right">
15
- <%= csrf_tag if respond_to?(:csrf_tag) %>
16
- <input class="btn btn-small" type="submit" name="enque" value="<%= t('EnableAll') %>" />
17
- </form>
18
- <form action="<%= root_path %>cron/__all__/enque" method="post" class="pull-right">
19
- <%= csrf_tag if respond_to?(:csrf_tag) %>
20
- <input class="btn btn-small" type="submit" name="enque" value="<%= t('EnqueueAll') %>" />
21
- </form>
6
+ <% if @cron_jobs.size > 0 %>
7
+ <form action="<%= root_path %>cron/__all__/delete" method="post" class="pull-right">
8
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
9
+ <input class="btn btn-danger" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSureDeleteCronJobs') %>" />
10
+ </form>
11
+ <form action="<%= root_path %>cron/__all__/disable" method="post" class="pull-right">
12
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
13
+ <input class="btn btn-warn" type="submit" name="enque" value="<%= t('DisableAll') %>" />
14
+ </form>
15
+ <form action="<%= root_path %>cron/__all__/enable" method="post" class="pull-right">
16
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
17
+ <input class="btn btn-warn" type="submit" name="enque" value="<%= t('EnableAll') %>" />
18
+ </form>
19
+ <form action="<%= root_path %>cron/__all__/enque" method="post" class="pull-right">
20
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
21
+ <input class="btn btn-warn" type="submit" name="enque" value="<%= t('EnqueueAll') %>" data-confirm="<%= t('AreYouSureEnqueueCronJobs') %>" />
22
+ </form>
23
+ <% end %>
22
24
  </div>
23
25
  </header>
24
26
 
@@ -29,23 +31,31 @@
29
31
  <th><%= t('Status') %></th>
30
32
  <th><%= t('Name') %></th>
31
33
  <th><%= t('Cron string') %></th>
32
- <th><%= t('Last enque') %></th>
34
+ <th><%= t('Last enqueued') %></th>
33
35
  <th width="180"><%= t('Actions')%></th>
34
36
  </thead>
35
37
 
36
38
  <tbody>
37
39
  <% @cron_jobs.sort{|a,b| a.sort_name <=> b.sort_name }.each_with_index do |job, index| %>
38
- <% style = "#{job.status == 'disabled' ? "background: #ecc": ""}" %>
40
+ <% style = "#{job.status == 'disabled' ? "background: #ecc; color: #585454;": ""}" %>
39
41
  <tr>
40
42
  <td style="<%= style %>"><%= t job.status %></td>
41
43
  <td style="<%= style %>">
42
- <b><%= job.name %></b>
44
+ <a href="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>">
45
+ <b><%= job.name %></b>
46
+ </a>
43
47
  <hr style="margin:3px;border:0;">
44
48
  <small>
45
49
  <% if job.message and job.message.to_s.size > 100 %>
46
- <button data-toggle="collapse" data-target=".worker_<%= index %>" class="btn btn-xs"><%= t('ShowAll')%></button>
47
- <div class="toggle worker_<%= index %>" style="display: inline;"><%= job.message[0..100] + "... " %></div>
48
- <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 %>
49
59
  <% else %>
50
60
  <%= job.message %>
51
61
  <% end %>
@@ -57,20 +67,20 @@
57
67
  <% if job.status == 'enabled' %>
58
68
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/enque" method="post">
59
69
  <%= csrf_tag if respond_to?(:csrf_tag) %>
60
- <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) %>"/>
61
71
  </form>
62
72
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/disable" method="post">
63
73
  <%= csrf_tag if respond_to?(:csrf_tag) %>
64
- <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') %>"/>
65
75
  </form>
66
76
  <% else %>
67
77
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/enque" method="post">
68
78
  <%= csrf_tag if respond_to?(:csrf_tag) %>
69
- <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') %>"/>
70
80
  </form>
71
81
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/enable" method="post">
72
82
  <%= csrf_tag if respond_to?(:csrf_tag) %>
73
- <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') %>"/>
74
84
  </form>
75
85
  <form action="<%= root_path %>cron/<%= CGI.escape(job.name).gsub('+', '%20') %>/delete" method="post">
76
86
  <%= csrf_tag if respond_to?(:csrf_tag) %>
@@ -83,6 +93,6 @@
83
93
  </tbody>
84
94
  </table>
85
95
  <% else %>
86
- <span class='alert alert-success'><%= t('NoCronJobsFound') %></span>
96
+ <div class='alert alert-success'><%= t('NoCronJobsWereFound') %></div>
87
97
  <% end %>
88
98
 
@@ -0,0 +1,88 @@
1
+ <header class="row">
2
+ <div class="span col-sm-5 pull-left">
3
+ <h3>
4
+ <%= "#{t('Cron')} #{t('Job')}" %>
5
+ <small><%= @job.name %></small>
6
+ </h3>
7
+ </div>
8
+ <div class="span col-sm-7 pull-right" style="margin-top: 20px; margin-bottom: 10px;">
9
+ <% cron_job_path = "#{root_path}cron/#{CGI.escape(@job.name).gsub('+', '%20')}" %>
10
+ <form action="<%= cron_job_path %>/enque?redirect=<%= cron_job_path %>" method="post">
11
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
12
+ <input class="btn btn-warn pull-left" name="enque" type="submit" value="<%= t('EnqueueNow') %>" data-confirm="<%= t('AreYouSureEnqueueCronJob', :job => @job.name) %>" />
13
+ </form>
14
+ <% if @job.status == 'enabled' %>
15
+ <form action="<%= cron_job_path %>/disable?redirect=<%= cron_job_path %>" method="post">
16
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
17
+ <input class="btn btn-warn pull-left" name="disable" type="submit" value="<%= t('Disable') %>" />
18
+ </form>
19
+ <% else %>
20
+ <form action="<%= cron_job_path %>/enable?redirect=<%= cron_job_path %>" method="post">
21
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
22
+ <input class="btn btn-warn pull-left" name="enable" type="submit" value="<%= t('Enable') %>" />
23
+ </form>
24
+ <form action="<%= cron_job_path %>/delete" method="post">
25
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
26
+ <input class="btn btn-danger" data-confirm="<%= t('AreYouSureDeleteCronJob', :job => @job.name) %>" name="delete" type="submit" value="<%= t('Delete') %>" />
27
+ </form>
28
+ <% end %>
29
+ </div>
30
+ </header>
31
+
32
+ <table class="table table-bordered table-striped">
33
+ <tbody>
34
+ <tr>
35
+ <th><%= t 'Status' %></th>
36
+ <td><%= @job.status %></td>
37
+ </tr>
38
+ <tr>
39
+ <th><%= t 'Name' %></th>
40
+ <td><%= @job.name %></td>
41
+ </tr>
42
+ <tr>
43
+ <th><%= t 'Description' %></th>
44
+ <td><%= @job.description %></td>
45
+ </tr>
46
+ <tr>
47
+ <th><%= t 'Message' %></th>
48
+ <td><pre><%= @job.pretty_message %></pre></td>
49
+ </tr>
50
+ <tr>
51
+ <th><%= t 'Cron' %></th>
52
+ <td><%= @job.cron.gsub(" ", "&nbsp;") %></td>
53
+ </tr>
54
+ <tr>
55
+ <th><%= t 'Last enqueued' %></th>
56
+ <td><%= @job.last_enqueue_time ? relative_time(@job.last_enqueue_time) : "-" %></td>
57
+ </tr>
58
+ </tbody>
59
+ </table>
60
+
61
+ <header class="row">
62
+ <div class="col-sm-12">
63
+ <h4>
64
+ <%= t 'History' %>
65
+ </h4>
66
+ </div>
67
+ </header>
68
+
69
+ <% if @job.jid_history_from_redis.size > 0 %>
70
+ <table class="table table-hover table-bordered table-striped">
71
+ <thead>
72
+ <tr>
73
+ <th><%= t 'Enqueued' %></th>
74
+ <th><%= t 'JID' %></th>
75
+ </tr>
76
+ </thead>
77
+ <tbody>
78
+ <% @job.jid_history_from_redis.each do |jid_history| %>
79
+ <tr>
80
+ <td><%= jid_history['enqueued'] %></td>
81
+ <td><%= jid_history['jid'] %></td>
82
+ </tr>
83
+ <% end %>
84
+ </tbody>
85
+ </table>
86
+ <% else %>
87
+ <div class='alert alert-success'><%= t 'NoHistoryWereFound' %></div>
88
+ <% end %>
@@ -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,11 +12,18 @@ 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")))
15
+ render(:erb, File.read(File.join(view_path, "cron.erb")))
16
+ end
17
+
18
+ # display job detail + jid history
19
+ app.get '/cron/:name' do
20
+ view_path = File.join(File.expand_path("..", __FILE__), "views")
21
+
22
+ @job = Sidekiq::Cron::Job.find(route_params[:name])
23
+ if @job
24
+ render(:erb, File.read(File.join(view_path, "cron_show.erb")))
18
25
  else
19
- render(:erb, File.read(File.join(view_path, "cron.erb")))
26
+ redirect "#{root_path}cron"
20
27
  end
21
28
  end
22
29
 
@@ -27,7 +34,7 @@ module Sidekiq
27
34
  elsif job = Sidekiq::Cron::Job.find(route_params[:name])
28
35
  job.enque!
29
36
  end
30
- redirect "#{root_path}cron"
37
+ redirect params['redirect'] || "#{root_path}cron"
31
38
  end
32
39
 
33
40
  #delete schedule
@@ -47,7 +54,7 @@ module Sidekiq
47
54
  elsif job = Sidekiq::Cron::Job.find(route_params[:name])
48
55
  job.enable!
49
56
  end
50
- redirect "#{root_path}cron"
57
+ redirect params['redirect'] || "#{root_path}cron"
51
58
  end
52
59
 
53
60
  #disable job
@@ -57,7 +64,7 @@ module Sidekiq
57
64
  elsif job = Sidekiq::Cron::Job.find(route_params[:name])
58
65
  job.disable!
59
66
  end
60
- redirect "#{root_path}cron"
67
+ redirect params['redirect'] || "#{root_path}cron"
61
68
  end
62
69
 
63
70
  end
data/sidekiq-cron.gemspec CHANGED
@@ -1,125 +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 0.6.3 ruby lib
1
+ # frozen_string_literal: true
2
+
3
+ require './lib/sidekiq/cron/version'
6
4
 
7
5
  Gem::Specification.new do |s|
8
6
  s.name = "sidekiq-cron"
9
- s.version = "0.6.3"
7
+ s.version = Sidekiq::Cron::VERSION
10
8
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.required_ruby_version = ">= 2.5"
12
10
  s.require_paths = ["lib"]
13
11
  s.authors = ["Ondrej Bartas"]
14
- s.date = "2017-06-20"
15
12
  s.description = "Enables to set jobs to be run in specified time (using CRON notation)"
16
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/ru.yml",
41
- "lib/sidekiq/cron/poller.rb",
42
- "lib/sidekiq/cron/support.rb",
43
- "lib/sidekiq/cron/views/cron.erb",
44
- "lib/sidekiq/cron/views/cron.slim",
45
- "lib/sidekiq/cron/web.rb",
46
- "lib/sidekiq/cron/web_extension.rb",
23
+ "README.md",
47
24
  "sidekiq-cron.gemspec",
48
- "test/integration/performance_test.rb",
49
- "test/test_helper.rb",
50
- "test/unit/job_test.rb",
51
- "test/unit/poller_test.rb",
52
- "test/unit/web_extension_test.rb"
53
25
  ]
54
- s.homepage = "http://github.com/ondrejbartas/sidekiq-cron"
26
+
27
+ s.homepage = "https://github.com/ondrejbartas/sidekiq-cron"
55
28
  s.licenses = ["MIT"]
56
- s.rubygems_version = "2.5.1"
57
- s.summary = "Sidekiq Cron helps to add repeated scheduled jobs"
29
+ s.summary = "Sidekiq-Cron helps to add repeated scheduled jobs"
58
30
 
59
- if s.respond_to? :specification_version then
60
- s.specification_version = 4
31
+ s.add_dependency("fugit", "~> 1")
32
+ s.add_dependency("sidekiq", ">= 4.2.1")
61
33
 
62
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
- s.add_runtime_dependency(%q<sidekiq>, [">= 4.2.1"])
64
- s.add_runtime_dependency(%q<rufus-scheduler>, [">= 3.3.0"])
65
- s.add_development_dependency(%q<bundler>, [">= 0"])
66
- s.add_development_dependency(%q<simplecov>, [">= 0"])
67
- s.add_development_dependency(%q<redis-namespace>, [">= 1.5.2"])
68
- s.add_development_dependency(%q<shoulda-context>, [">= 0"])
69
- s.add_development_dependency(%q<rack>, [">= 0"])
70
- s.add_development_dependency(%q<rack-test>, [">= 0"])
71
- s.add_development_dependency(%q<jeweler>, [">= 0"])
72
- s.add_development_dependency(%q<minitest>, [">= 0"])
73
- s.add_development_dependency(%q<test-unit>, [">= 0"])
74
- s.add_development_dependency(%q<sdoc>, [">= 0"])
75
- s.add_development_dependency(%q<slim>, [">= 0"])
76
- s.add_development_dependency(%q<sinatra>, [">= 0"])
77
- s.add_development_dependency(%q<mocha>, [">= 0"])
78
- s.add_development_dependency(%q<coveralls>, [">= 0"])
79
- s.add_development_dependency(%q<shotgun>, [">= 0"])
80
- s.add_development_dependency(%q<guard>, [">= 0"])
81
- s.add_development_dependency(%q<guard-minitest>, [">= 0"])
82
- else
83
- s.add_dependency(%q<sidekiq>, [">= 4.2.1"])
84
- s.add_dependency(%q<rufus-scheduler>, [">= 3.3.0"])
85
- s.add_dependency(%q<bundler>, [">= 0"])
86
- s.add_dependency(%q<simplecov>, [">= 0"])
87
- s.add_dependency(%q<redis-namespace>, [">= 1.5.2"])
88
- s.add_dependency(%q<shoulda-context>, [">= 0"])
89
- s.add_dependency(%q<rack>, [">= 0"])
90
- s.add_dependency(%q<rack-test>, [">= 0"])
91
- s.add_dependency(%q<jeweler>, [">= 0"])
92
- s.add_dependency(%q<minitest>, [">= 0"])
93
- s.add_dependency(%q<test-unit>, [">= 0"])
94
- s.add_dependency(%q<sdoc>, [">= 0"])
95
- s.add_dependency(%q<slim>, [">= 0"])
96
- s.add_dependency(%q<sinatra>, [">= 0"])
97
- s.add_dependency(%q<mocha>, [">= 0"])
98
- s.add_dependency(%q<coveralls>, [">= 0"])
99
- s.add_dependency(%q<shotgun>, [">= 0"])
100
- s.add_dependency(%q<guard>, [">= 0"])
101
- s.add_dependency(%q<guard-minitest>, [">= 0"])
102
- end
103
- else
104
- s.add_dependency(%q<sidekiq>, [">= 4.2.1"])
105
- s.add_dependency(%q<rufus-scheduler>, [">= 3.3.0"])
106
- s.add_dependency(%q<bundler>, [">= 0"])
107
- s.add_dependency(%q<simplecov>, [">= 0"])
108
- s.add_dependency(%q<redis-namespace>, [">= 1.5.2"])
109
- s.add_dependency(%q<shoulda-context>, [">= 0"])
110
- s.add_dependency(%q<rack>, [">= 0"])
111
- s.add_dependency(%q<rack-test>, [">= 0"])
112
- s.add_dependency(%q<jeweler>, [">= 0"])
113
- s.add_dependency(%q<minitest>, [">= 0"])
114
- s.add_dependency(%q<test-unit>, [">= 0"])
115
- s.add_dependency(%q<sdoc>, [">= 0"])
116
- s.add_dependency(%q<slim>, [">= 0"])
117
- s.add_dependency(%q<sinatra>, [">= 0"])
118
- s.add_dependency(%q<mocha>, [">= 0"])
119
- s.add_dependency(%q<coveralls>, [">= 0"])
120
- s.add_dependency(%q<shotgun>, [">= 0"])
121
- s.add_dependency(%q<guard>, [">= 0"])
122
- s.add_dependency(%q<guard-minitest>, [">= 0"])
123
- end
34
+ s.add_development_dependency("minitest")
35
+ s.add_development_dependency("mocha")
36
+ s.add_development_dependency("redis-namespace", ">= 1.5.2")
37
+ s.add_development_dependency("rack", "~> 2.0")
38
+ s.add_development_dependency("rack-test", "~> 1.0")
39
+ s.add_development_dependency("rake", "~> 13.0")
40
+ s.add_development_dependency("simplecov")
124
41
  end
125
-
@@ -1,14 +1,11 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require './test/test_helper'
3
2
  require 'benchmark'
4
3
 
5
- describe 'Perfromance Poller' do
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
- Sidekiq.redis do |conn|
10
- conn.flushdb
11
- end
12
9
 
13
10
  #clear all previous saved data from redis
14
11
  Sidekiq.redis do |conn|
@@ -28,12 +25,12 @@ describe 'Perfromance Poller' do
28
25
  end
29
26
 
30
27
  @poller = Sidekiq::Cron::Poller.new
31
- now = Time.now.utc
32
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour + 1, 10, 5)
28
+ now = Time.now.utc + 3600
29
+ enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 10, 5)
33
30
  Time.stubs(:now).returns(enqueued_time)
34
31
  end
35
32
 
36
- it 'should enqueue 10000 jobs in less than 30s' do
33
+ it 'should enqueue 10000 jobs in less than 50s' do
37
34
  Sidekiq.redis do |conn|
38
35
  assert_equal 0, conn.llen("queue:default"), 'Queue should be empty'
39
36
  end
@@ -46,7 +43,7 @@ describe 'Perfromance Poller' do
46
43
  assert_equal X, conn.llen("queue:default"), 'Queue should be full'
47
44
  end
48
45
 
49
- puts "Perfomance test finished in #{bench.real}"
50
- assert_operator 30, :>, bench.real
46
+ puts "Performance test finished in #{bench.real}"
47
+ assert_operator bench.real, :<, 50
51
48
  end
52
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
- require "mocha/setup"
24
-
25
- ENV['RACK_ENV'] = 'test'
26
-
27
- #SIDEKIQ Require - need to have sidekiq running!
12
+ require 'mocha/minitest'
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
@@ -66,6 +53,13 @@ end
66
53
 
67
54
  module ActiveJob
68
55
  class Base
56
+ attr_accessor *%i[job_class provider_job_id queue_name arguments]
57
+
58
+ def initialize
59
+ yield self if block_given?
60
+ self.provider_job_id ||= SecureRandom.hex(12)
61
+ end
62
+
69
63
  def self.queue_name_prefix
70
64
  @queue_name_prefix
71
65
  end
@@ -80,12 +74,16 @@ module ActiveJob
80
74
  self
81
75
  end
82
76
 
77
+ def try(method, *args, &block)
78
+ send method, *args, &block if respond_to? method
79
+ end
80
+
83
81
  def self.perform_later(*args)
84
- {
85
- "job_class" => self.class.name,
86
- "queue_name" => @queue,
87
- "args" => [*args],
88
- }
82
+ new do |instance|
83
+ instance.job_class = self.class.name
84
+ instance.queue_name = @queue
85
+ instance.arguments = [*args]
86
+ end
89
87
  end
90
88
  end
91
89
  end