resque-cleaner 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MWNmOTljMTBiYjM2YzA4NmZjOTU2ZTY5NDYwODdhYTQwYmNkNjIzMQ==
4
+ MTkwNTk5MTJmZDU2MmM0OGEzZjFjMDA1NDZkYmM4OTQxNzc5MTg1NQ==
5
5
  data.tar.gz: !binary |-
6
- NjIzNzI2MGQ2YjMxNTYyZDZhZTE0NWI4NDViNTZiNTdiNDU1NmJmZg==
6
+ ODRlODRhODg1MmUzMWUzMzllMmJhY2RmZWU1MmQyYzU1NGJiNzE0Yw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2Q0NTQ3NWYwNzk2MDc5NjQ0MDVkOGMwZjZkYmUzZTY1MjlmZjRiMDcyNWQ3
10
- ZTBlMzEyMWIxM2RmNzBkODBmNGFmOWQ2M2ZjZGJlYTRhNDIzZTYwMTVlMzQx
11
- ZWU4ODViOGNhNjMxN2RkZGQwZmE2YzliNDA4YjcxOGUxM2I1ODA=
9
+ MTI0ZDAyY2MzMmFkZWM5MGYwZGI5YTA5Mzk3NzhiYTk5Njk5YTIzZWM0YzUy
10
+ ZmM4YTBjZWJhY2JiYTNmNDNkYjcwZjkxZjhmOTBlZmNmNjQ1MDM3NmIwNjcx
11
+ NmUzMWNjMzU0MDY5Y2MxOTE2ZDU1YjM0ZTdkOGNmOTkzY2ViMjY=
12
12
  data.tar.gz: !binary |-
13
- YzkzNjI4NmExNTE3MmZkNzE2ZjNjZTVmNzRmZDRiYWQwY2VjZmEwN2MxZjUw
14
- NjMxZmJjNzViZmM2ZDExMThlNjNmOTYyYjRjMzZhNDgzMDlmZmYyNWZmNzIx
15
- YTE1N2Q5MzE0YWQ0Y2QxMjA1NmZlYTQyY2MyMGRlNWRiOWJlYTQ=
13
+ MzkxNjYyMzIzYWQ4ZWQxOTQzNzVmNDgwYjE0NzE4OGFlM2FhNDljYmJiOWE4
14
+ MjdkYWRjOTQ5NDlhMjBkZDI3ZDk1OTlkNThiYjU2NThlNTA2YTBkYTg1OTYx
15
+ NWViYWZmZTY3NmU1NTQzYzkxN2Q5ZjA0MmQ5NmFiMmNkNzYwOTg=
@@ -1,3 +1,7 @@
1
+ ## 0.3.1 (2016-01-28)
2
+
3
+ * Bug fix: fix the issue regex is not applied on bulk clearance (#36)
4
+
1
5
  ## 0.3.0 (2014-05-27)
2
6
 
3
7
  * Search by regex (#27)
@@ -38,6 +38,7 @@
38
38
  <input type="hidden" name="t" value="<%=@to%>" />
39
39
  <input type="hidden" name="p" value="<%=@paginate.page%>" />
40
40
  <input type="hidden" name="ex" value="<%=@exception%>" />
41
+ <input type="hidden" name="regex" value="<%=Rack::Utils.escape_html(@regex)%>" />
41
42
  <select id="form_action" name="action">
42
43
  <option id="default_option" value="" selected="selected">-- Select Action --</option>
43
44
  <option value="clear">Clear</option>
Binary file
@@ -1,7 +1,7 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
2
  require 'time'
3
- context "ResqueCleaner" do
4
- setup do
3
+ describe "ResqueCleaner" do
4
+ before do
5
5
  Resque.redis.flushall
6
6
 
7
7
  @worker = Resque::Worker.new(:jobs,:jobs2)
@@ -28,53 +28,53 @@ context "ResqueCleaner" do
28
28
  @cleaner.print_message = false
29
29
  end
30
30
 
31
- test "#select_by_regex returns only Jason jobs" do
31
+ it "#select_by_regex returns only Jason jobs" do
32
32
  ret = @cleaner.select_by_regex(/Jason/)
33
33
  assert_equal 13, ret.size
34
34
  end
35
35
 
36
- test "#select_by_regex returns an empty array if passed a non-regex" do
36
+ it "#select_by_regex returns an empty array if passed a non-regex" do
37
37
  ['string', nil, 13, Class.new].each do |non_regex|
38
38
  ret = @cleaner.select_by_regex(nil)
39
39
  assert_equal 0, ret.size
40
40
  end
41
41
  end
42
42
 
43
- test "#select returns failure jobs" do
43
+ it "#select returns failure jobs" do
44
44
  ret = @cleaner.select
45
45
  assert_equal 42, ret.size
46
46
  end
47
47
 
48
- test "#select works with a limit" do
48
+ it "#select works with a limit" do
49
49
  @cleaner.limiter.maximum = 10
50
50
  ret = @cleaner.select
51
51
 
52
52
  # only maximum number
53
53
  assert_equal 10, ret.size
54
54
 
55
- # latest one
55
+ # lait one
56
56
  assert_equal Time.parse(ret[0]['failed_at']), Time.parse('2010-08-13')
57
57
  end
58
58
 
59
- test "#select with a block returns failure jobs which the block evaluates true" do
59
+ it "#select with a block returns failure jobs which the block evaluates true" do
60
60
  ret = @cleaner.select {|job| job["payload"]["args"][0]=="Jason"}
61
61
  assert_equal 13, ret.size
62
62
  end
63
63
 
64
- test "#clear deletes failure jobs" do
64
+ it "#clear deletes failure jobs" do
65
65
  cleared = @cleaner.clear
66
66
  assert_equal 42, cleared
67
67
  assert_equal 0, @cleaner.select.size
68
68
  end
69
69
 
70
- test "#clear with a block deletes failure jobs which the block evaluates true" do
70
+ it "#clear with a block deletes failure jobs which the block evaluates true" do
71
71
  cleared = @cleaner.clear{|job| job["payload"]["args"][0]=="Jason"}
72
72
  assert_equal 13, cleared
73
73
  assert_equal 42-13, @cleaner.select.size
74
74
  assert_equal 0, @cleaner.select{|job| job["payload"]["args"][0]=="Jason"}.size
75
75
  end
76
76
 
77
- test "#requeue retries failure jobs" do
77
+ it "#requeue retries failure jobs" do
78
78
  assert_equal 0, queue_size(:jobs,:jobs2)
79
79
  requeued = @cleaner.requeue
80
80
  assert_equal 42, requeued
@@ -82,13 +82,13 @@ context "ResqueCleaner" do
82
82
  assert_equal 42, queue_size(:jobs,:jobs2)
83
83
  end
84
84
 
85
- test "#requeue with a block retries failure jobs which the block evaluates true" do
85
+ it "#requeue with a block retries failure jobs which the block evaluates true" do
86
86
  requeued = @cleaner.requeue{|job| job["payload"]["args"][0]=="Jason"}
87
87
  assert_equal 13, requeued
88
88
  assert_equal 13, queue_size(:jobs,:jobs2)
89
89
  end
90
90
 
91
- test "#requeue with clear option requeues and deletes failure jobs" do
91
+ it "#requeue with clear option requeues and deletes failure jobs" do
92
92
  assert_equal 0, queue_size(:jobs,:jobs2)
93
93
  requeued = @cleaner.requeue(true)
94
94
  assert_equal 42, requeued
@@ -96,7 +96,7 @@ context "ResqueCleaner" do
96
96
  assert_equal 0, @cleaner.select.size
97
97
  end
98
98
 
99
- test "#requeue with :queue option requeues the jobs to the queue" do
99
+ it "#requeue with :queue option requeues the jobs to the queue" do
100
100
  assert_equal 0, queue_size(:jobs,:jobs2,:retry)
101
101
  requeued = @cleaner.requeue false, :queue => :retry
102
102
  assert_equal 42, requeued
@@ -105,14 +105,14 @@ context "ResqueCleaner" do
105
105
  assert_equal 42, queue_size(:retry)
106
106
  end
107
107
 
108
- test "#clear_stale deletes failure jobs which is queued before the last x enqueued" do
108
+ it "#clear_stale deletes failure jobs which is queued before the last x enqueued" do
109
109
  @cleaner.limiter.maximum = 10
110
110
  @cleaner.clear_stale
111
111
  assert_equal 10, @cleaner.failure.count
112
112
  assert_equal Time.parse(@cleaner.failure_jobs[0]['failed_at']), Time.parse('2010-08-13')
113
113
  end
114
114
 
115
- test "FailedJobEx module extends job and provides some useful methods" do
115
+ it "FailedJobEx module extends job and provides some useful methods" do
116
116
  # before 2009-04-01
117
117
  ret = @cleaner.select {|j| j.before?('2009-04-01')}
118
118
  assert_equal 6, ret.size
@@ -147,7 +147,7 @@ context "ResqueCleaner" do
147
147
  assert_equal 1, ret.size
148
148
  end
149
149
 
150
- test "#stats_by_date returns stats grouped by date" do
150
+ it "#stats_by_date returns stats grouped by date" do
151
151
  ret = @cleaner.stats_by_date
152
152
  assert_equal 6, ret['2009/03/13']
153
153
  assert_equal 14, ret['2009/11/13']
@@ -159,25 +159,25 @@ context "ResqueCleaner" do
159
159
  assert_equal 11, ret['2010/08/13']
160
160
  end
161
161
 
162
- test "#stats_by_class returns stats grouped by class" do
162
+ it "#stats_by_class returns stats grouped by class" do
163
163
  ret = @cleaner.stats_by_class
164
164
  assert_equal 35, ret['BadJob']
165
165
  assert_equal 7, ret['BadJobWithSyntaxError']
166
166
  end
167
167
 
168
- test "#stats_by_class works with broken log" do
168
+ it "#stats_by_class works with broken log" do
169
169
  add_empty_payload_failure
170
170
  ret = @cleaner.stats_by_class
171
171
  assert_equal 1, ret['UNKNOWN']
172
172
  end
173
173
 
174
- test "#stats_by_exception returns stats grouped by exception" do
174
+ it "#stats_by_exception returns stats grouped by exception" do
175
175
  ret = @cleaner.stats_by_exception
176
176
  assert_equal 35, ret['RuntimeError']
177
177
  assert_equal 7, ret['SyntaxError']
178
178
  end
179
179
 
180
- test "#lock ensures that a new failure job doesn't affect in a limit mode" do
180
+ it "#lock ensures that a new failure job doesn't affect in a limit mode" do
181
181
  @cleaner.limiter.maximum = 23
182
182
  @cleaner.limiter.lock do
183
183
  first = @cleaner.select[0]
@@ -192,9 +192,9 @@ context "ResqueCleaner" do
192
192
  assert_equal "Jack", first["payload"]["args"][0]
193
193
  end
194
194
 
195
- test "allows you to configure limiter" do
195
+ it "allows you to configure limiter" do
196
196
  c = Resque::Plugins::ResqueCleaner.new
197
- assert_not_equal c.limiter.maximum, 10_000
197
+ refute_equal c.limiter.maximum, 10_000
198
198
 
199
199
  module Resque::Plugins
200
200
  ResqueCleaner::Limiter.default_maximum = 10_000
@@ -1,9 +1,15 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
2
 
3
- # Pull in the server test_helper from resque
4
- require 'resque/server/test_helper.rb'
5
3
  require 'digest/sha1'
6
4
  require 'json'
5
+ require 'rack/test'
6
+
7
+ class Minitest::Spec
8
+ include Rack::Test::Methods
9
+ def app
10
+ Resque::Server.new
11
+ end
12
+ end
7
13
 
8
14
  def setup_some_failed_jobs
9
15
  Resque.redis.flushall
@@ -20,39 +26,39 @@ def setup_some_failed_jobs
20
26
  @cleaner.print_message = false
21
27
  end
22
28
 
23
- context "resque-web" do
24
- setup do
29
+ describe "resque-web" do
30
+ before do
25
31
  setup_some_failed_jobs
26
32
  end
27
33
 
28
- test "#cleaner should respond with success" do
34
+ it "#cleaner should respond with success" do
29
35
  get "/cleaner"
30
36
  assert last_response.body.include?('BadJob')
31
37
  assert last_response.body =~ /\bException\b/
32
38
  end
33
39
 
34
- test "#cleaner_list should respond with success" do
40
+ it "#cleaner_list should respond with success" do
35
41
  get "/cleaner_list"
36
42
  assert last_response.ok?, last_response.errors
37
43
  end
38
44
 
39
- test '#cleaner_list shows the failed jobs' do
45
+ it '#cleaner_list shows the failed jobs' do
40
46
  get "/cleaner_list"
41
47
  assert last_response.body.include?('BadJob')
42
48
  end
43
49
 
44
- test "#cleaner_list shows the failed jobs when we use a select_by_regex" do
50
+ it "#cleaner_list shows the failed jobs when we use a select_by_regex" do
45
51
  get "/cleaner_list", :regex => "BadJob*"
46
52
  assert last_response.body.include?('"BadJobWithSyntaxError"')
47
53
  assert last_response.body.include?('"BadJob"')
48
54
  end
49
55
 
50
56
 
51
- test '#cleaner_exec clears job' do
57
+ it '#cleaner_exec clears job' do
52
58
  post "/cleaner_exec", :action => "clear", :sha1 => Digest::SHA1.hexdigest(@cleaner.select[0].to_json)
53
59
  assert_equal 10, @cleaner.select.size
54
60
  end
55
- test "#cleaner_dump should respond with success" do
61
+ it "#cleaner_dump should respond with success" do
56
62
  get "/cleaner_dump"
57
63
  assert last_response.ok?, last_response.errors
58
64
  end
@@ -4,8 +4,10 @@
4
4
  dir = File.dirname(File.expand_path(__FILE__))
5
5
  $LOAD_PATH.unshift dir + '/../lib'
6
6
  $TESTING = true
7
- require 'test/unit'
8
7
  require 'rubygems'
8
+ require 'minitest'
9
+ require 'minitest/spec'
10
+ require 'minitest/autorun'
9
11
  require 'resque'
10
12
  require 'timecop'
11
13
 
@@ -16,6 +18,8 @@ end
16
18
  require 'resque'
17
19
  require 'resque_cleaner'
18
20
 
21
+ $TEST_PID = Process.pid
22
+
19
23
  #
20
24
  # make sure we can run redis
21
25
  #
@@ -31,48 +35,22 @@ end
31
35
  # start our own redis when the tests start,
32
36
  # kill it when they end
33
37
  #
34
- at_exit do
35
- next if $!
36
-
37
- if defined?(MiniTest)
38
- exit_code = MiniTest::Unit.new.run(ARGV)
39
- else
40
- exit_code = Test::Unit::AutoRunner.run
38
+ MiniTest.after_run {
39
+ if Process.pid == $TEST_PID
40
+ processes = `ps -A -o pid,command | grep [r]edis-test`.split($/)
41
+ pids = processes.map { |process| process.split(" ")[0] }
42
+ puts "Killing test redis server..."
43
+ pids.each { |pid| Process.kill("TERM", pid.to_i) }
44
+ dump = "test/dump.rdb"
45
+ File.delete(dump) if File.exist?(dump)
41
46
  end
42
-
43
- pid = `ps -A -o pid,command | grep [r]edis-test`.split(" ")[0]
44
- puts "Killing test redis server..."
45
- Process.kill("KILL", pid.to_i)
46
- dump = "test/dump.rdb"
47
- File.delete(dump) if File.exist?(dump)
48
- exit exit_code
49
- end
47
+ }
50
48
 
51
49
  puts "Starting redis for testing at localhost:9736..."
52
50
  `redis-server #{dir}/redis-test.conf`
53
51
  Resque.redis = 'localhost:9736'
54
52
 
55
53
 
56
- ##
57
- # test/spec/mini 3
58
- # http://gist.github.com/25455
59
- # chris@ozmm.org
60
- #
61
- def context(*args, &block)
62
- return super unless (name = args.first) && block
63
- require 'test/unit'
64
- klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
65
- def self.test(name, &block)
66
- define_method("test_#{name.gsub(/\W/,'_')}", &block) if block
67
- end
68
- def self.xtest(*args) end
69
- def self.setup(&block) define_method(:setup, &block) end
70
- def self.teardown(&block) define_method(:teardown, &block) end
71
- end
72
- (class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
73
- klass.class_eval &block
74
- end
75
-
76
54
  ##
77
55
  # Helper to perform job classes
78
56
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tatsuya Ono
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-27 00:00:00.000000000 Z
11
+ date: 2016-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: resque
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack-test
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.6.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.6.0
27
55
  description: ! ' resque-cleaner maintains the cleanliness of failed jobs on Resque.
28
56
 
29
57
  '
@@ -49,6 +77,7 @@ files:
49
77
  - lib/resque_cleaner/server/views/cleaner_list.erb
50
78
  - lib/resque_cleaner/server.rb
51
79
  - lib/resque_cleaner.rb
80
+ - test/dump.rdb
52
81
  - test/redis-test.conf
53
82
  - test/resque_cleaner_test.rb
54
83
  - test/resque_web_test.rb