Package: ruby-clockwork
Followup-For: Bug #846020

Attach a patch to disable this specific test that randomly fails on
havey load machine.

Best regards,
-Andrew
Description: Disable test due to randomly fails on heavy load machine
Bug-Debian: https://bugs.debian.org/846020
Reviewed-By: Andrew Lee (李健秋) <ajq...@debian.org>
Last-Update: <2016-12-30>

--- ruby-clockwork-1.2.0.orig/test/database_events/sync_performer_test.rb
+++ /dev/null
@@ -1,291 +0,0 @@
-require "minitest/autorun"
-require 'mocha/setup'
-require 'time'
-require 'active_support/time'
-
-require_relative '../../lib/clockwork'
-require_relative '../../lib/clockwork/database_events'
-require_relative 'test_helpers'
-
-describe Clockwork::DatabaseEvents::SyncPerformer do
-  before do
-    @now = Time.now
-    DatabaseEventModel.delete_all
-    DatabaseEventModel2.delete_all
-
-    Clockwork.manager = @manager = Clockwork::DatabaseEvents::Manager.new
-    class << @manager
-      def log(msg); end # silence log output
-    end
-  end
-
-  after do
-    Clockwork.clear!
-  end
-
-  describe "setup" do
-    before do
-      @subject = Clockwork::DatabaseEvents::SyncPerformer
-    end
-
-    describe "arguments" do
-      it 'raises argument error if model is not set' do
-        error = assert_raises KeyError do
-          @subject.setup(every: 1.minute) {}
-        end
-        assert_equal error.message, ":model must be set to the model class"
-      end
-
-      it 'raises argument error if every is not set' do
-        error = assert_raises KeyError do
-          @subject.setup(model: DatabaseEventModel) {}
-        end
-        assert_equal error.message, ":every must be set to the database sync frequency"
-      end
-    end
-
-    describe "when database reload frequency is greater than model frequency period" do
-      before do
-        @events_run = []
-        @sync_frequency = 1.minute
-      end
-
-      it 'fetches and registers event from database' do
-        DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => 1.second)
-
-        assert_equal ["DatabaseEventModel:1"], @events_run
-      end
-
-      it 'fetches and registers multiple events from database' do
-        DatabaseEventModel.create(:frequency => 10)
-        DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => 1.second)
-
-        assert_equal ["DatabaseEventModel:1", "DatabaseEventModel:2"], @events_run
-      end
-
-      it 'does not run event again before frequency specified in database' do
-        model = DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => model.frequency - 1.second)
-        assert_equal 1, @events_run.length
-      end
-
-      it 'runs event repeatedly with frequency specified in database' do
-        model = DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => (2 * model.frequency) + 1.second)
-
-        assert_equal 3, @events_run.length
-      end
-
-      it 'runs reloaded events from database repeatedly' do
-        model = DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => @sync_frequency - 1)
-        model.update(:name => "DatabaseEventModel:1:Reloaded")
-        tick_at(@now + @sync_frequency, :and_every_second_for => model.frequency * 2)
-
-        assert_equal ["DatabaseEventModel:1:Reloaded", "DatabaseEventModel:1:Reloaded"], @events_run[-2..-1]
-      end
-
-      it 'updates modified event frequency with event reloading' do
-        model = DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => @sync_frequency - 1.second)
-        model.update(:frequency => 5)
-        tick_at(@now + @sync_frequency, :and_every_second_for => 6.seconds)
-
-        # model runs at: 1, 11, 21, 31, 41, 51 (6 runs)
-        # database sync happens at: 60
-        # modified model runs at: 61 (next tick after reload) and then 66 (2 runs)
-        assert_equal 8, @events_run.length
-      end
-
-      it 'stoped running deleted events from database' do
-        model = DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => (@sync_frequency - 1.second))
-        before = @events_run.dup
-        model.delete!
-        tick_at(@now + @sync_frequency, :and_every_second_for => @sync_frequency)
-        after = @events_run
-
-        assert_equal before, after
-      end
-
-      it 'updates event name with new name' do
-        model = DatabaseEventModel.create(:frequency => 10.seconds)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at @now, :and_every_second_for => @sync_frequency - 1.second
-        @events_run.clear
-        model.update(:name => "DatabaseEventModel:1_modified")
-        tick_at @now + @sync_frequency, :and_every_second_for => (model.frequency * 2)
-
-        assert_equal ["DatabaseEventModel:1_modified", "DatabaseEventModel:1_modified"], @events_run
-      end
-
-      it 'updates event frequency with new frequency' do
-        model = DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at @now, :and_every_second_for => @sync_frequency - 1.second
-        @events_run.clear
-        model.update(:frequency => 30)
-        tick_at @now + @sync_frequency, :and_every_second_for => @sync_frequency - 1.seconds
-
-        assert_equal 2, @events_run.length
-      end
-
-      it 'updates event at with new at' do
-        model = DatabaseEventModel.create(:frequency => 1.day, :at => '10:30')
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        assert_will_run 'jan 1 2010 10:30:00'
-        assert_wont_run 'jan 1 2010 09:30:00'
-
-        model.update(:at => '09:30')
-        tick_at @now, :and_every_second_for => @sync_frequency + 1.second
-
-        assert_will_run 'jan 1 2010 09:30:00'
-        assert_wont_run 'jan 1 2010 10:30:00'
-      end
-
-      describe "when #name is defined" do
-        it 'runs daily event with at from databse only once' do
-          DatabaseEventModel.create(:frequency => 1.day, :at => next_minute(@now).strftime('%H:%M'))
-          setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-          # tick from now, though specified :at time
-          tick_at(@now, :and_every_second_for => (2 * @sync_frequency) + 1.second)
-
-          assert_equal 1, @events_run.length
-        end
-      end
-
-      describe "when #name is not defined" do
-        it 'runs daily event with at from databse only once' do
-          DatabaseEventModelWithoutName.create(:frequency => 1.day, :at => next_minute(next_minute(@now)).strftime('%H:%M'))
-          setup_sync(model: DatabaseEventModelWithoutName, :every => @sync_frequency, :events_run => @events_run)
-
-          # tick from now, though specified :at time
-          tick_at(@now, :and_every_second_for => (2 * @sync_frequency) + 1.second)
-
-          assert_equal 1, @events_run.length
-        end
-      end
-
-      it 'creates multiple event ats with comma separated at string' do
-        DatabaseEventModel.create(:frequency => 1.day, :at => '16:20, 18:10')
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at @now, :and_every_second_for => 1.second
-
-        assert_wont_run 'jan 1 2010 16:19:59'
-        assert_will_run 'jan 1 2010 16:20:00'
-        assert_wont_run 'jan 1 2010 16:20:01'
-
-        assert_wont_run 'jan 1 2010 18:09:59'
-        assert_will_run 'jan 1 2010 18:10:00'
-        assert_wont_run 'jan 1 2010 18:10:01'
-      end
-
-      it 'allows syncing multiple database models' do
-        DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
-
-        DatabaseEventModel2.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel2, :every => @sync_frequency, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => 1.second)
-
-        assert_equal ["DatabaseEventModel:1", "DatabaseEventModel2:1"], @events_run
-      end
-    end
-
-    describe "when database reload frequency is less than model frequency period" do
-      before do
-        @events_run = []
-      end
-
-      it 'runs event only once within the model frequency period' do
-        DatabaseEventModel.create(:frequency => 5.minutes)
-        setup_sync(model: DatabaseEventModel, :every => 1.minute, :events_run => @events_run)
-
-        tick_at(@now, :and_every_second_for => 5.minutes)
-
-        assert_equal 1, @events_run.length
-      end
-    end
-
-    describe "with database event :at set to empty string" do
-      before do
-        @events_run = []
-
-        DatabaseEventModel.create(:frequency => 10)
-        setup_sync(model: DatabaseEventModel, :every => 1.minute, :events_run => @events_run)
-      end
-
-      it 'does not raise an error' do
-        begin
-          tick_at(Time.now, :and_every_second_for => 10.seconds)
-        rescue => e
-          assert false, "Raised an error: #{e.message}"
-        end
-      end
-
-      it 'runs the event' do
-        begin
-          tick_at(Time.now, :and_every_second_for => 10.seconds)
-        rescue
-        end
-        assert_equal 1, @events_run.length
-      end
-    end
-
-    describe "with task that responds to `tz`" do
-      before do
-        @events_run = []
-        @utc_time_now = Time.now.utc
-
-        DatabaseEventModel.create(:frequency => 1.days, :at => @utc_time_now.strftime('%H:%M'), :tz => 'America/Montreal')
-        setup_sync(model: DatabaseEventModel, :every => 1.minute, :events_run => @events_run)
-      end
-
-      it 'does not raise an error' do
-        begin
-          tick_at(@utc_time_now, :and_every_second_for => 10.seconds)
-        rescue => e
-          assert false, "Raised an error: #{e.message}"
-        end
-      end
-
-      it 'does not run the event based on UTC' do
-        begin
-          tick_at(@utc_time_now, :and_every_second_for => 3.hours)
-        rescue
-        end
-        assert_equal 0, @events_run.length
-      end
-
-      it 'runs the event based on America/Montreal tz' do
-        begin
-          tick_at(@utc_time_now, :and_every_second_for => 5.hours)
-        rescue
-        end
-        assert_equal 1, @events_run.length
-      end
-    end
-  end
-end
--- /dev/null
+++ ruby-clockwork-1.2.0/test/database_events/sync_performer_test.rb.disable
@@ -0,0 +1,291 @@
+require "minitest/autorun"
+require 'mocha/setup'
+require 'time'
+require 'active_support/time'
+
+require_relative '../../lib/clockwork'
+require_relative '../../lib/clockwork/database_events'
+require_relative 'test_helpers'
+
+describe Clockwork::DatabaseEvents::SyncPerformer do
+  before do
+    @now = Time.now
+    DatabaseEventModel.delete_all
+    DatabaseEventModel2.delete_all
+
+    Clockwork.manager = @manager = Clockwork::DatabaseEvents::Manager.new
+    class << @manager
+      def log(msg); end # silence log output
+    end
+  end
+
+  after do
+    Clockwork.clear!
+  end
+
+  describe "setup" do
+    before do
+      @subject = Clockwork::DatabaseEvents::SyncPerformer
+    end
+
+    describe "arguments" do
+      it 'raises argument error if model is not set' do
+        error = assert_raises KeyError do
+          @subject.setup(every: 1.minute) {}
+        end
+        assert_equal error.message, ":model must be set to the model class"
+      end
+
+      it 'raises argument error if every is not set' do
+        error = assert_raises KeyError do
+          @subject.setup(model: DatabaseEventModel) {}
+        end
+        assert_equal error.message, ":every must be set to the database sync frequency"
+      end
+    end
+
+    describe "when database reload frequency is greater than model frequency period" do
+      before do
+        @events_run = []
+        @sync_frequency = 1.minute
+      end
+
+      it 'fetches and registers event from database' do
+        DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => 1.second)
+
+        assert_equal ["DatabaseEventModel:1"], @events_run
+      end
+
+      it 'fetches and registers multiple events from database' do
+        DatabaseEventModel.create(:frequency => 10)
+        DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => 1.second)
+
+        assert_equal ["DatabaseEventModel:1", "DatabaseEventModel:2"], @events_run
+      end
+
+      it 'does not run event again before frequency specified in database' do
+        model = DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => model.frequency - 1.second)
+        assert_equal 1, @events_run.length
+      end
+
+      it 'runs event repeatedly with frequency specified in database' do
+        model = DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => (2 * model.frequency) + 1.second)
+
+        assert_equal 3, @events_run.length
+      end
+
+      it 'runs reloaded events from database repeatedly' do
+        model = DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => @sync_frequency - 1)
+        model.update(:name => "DatabaseEventModel:1:Reloaded")
+        tick_at(@now + @sync_frequency, :and_every_second_for => model.frequency * 2)
+
+        assert_equal ["DatabaseEventModel:1:Reloaded", "DatabaseEventModel:1:Reloaded"], @events_run[-2..-1]
+      end
+
+      it 'updates modified event frequency with event reloading' do
+        model = DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => @sync_frequency - 1.second)
+        model.update(:frequency => 5)
+        tick_at(@now + @sync_frequency, :and_every_second_for => 6.seconds)
+
+        # model runs at: 1, 11, 21, 31, 41, 51 (6 runs)
+        # database sync happens at: 60
+        # modified model runs at: 61 (next tick after reload) and then 66 (2 runs)
+        assert_equal 8, @events_run.length
+      end
+
+      it 'stoped running deleted events from database' do
+        model = DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => (@sync_frequency - 1.second))
+        before = @events_run.dup
+        model.delete!
+        tick_at(@now + @sync_frequency, :and_every_second_for => @sync_frequency)
+        after = @events_run
+
+        assert_equal before, after
+      end
+
+      it 'updates event name with new name' do
+        model = DatabaseEventModel.create(:frequency => 10.seconds)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at @now, :and_every_second_for => @sync_frequency - 1.second
+        @events_run.clear
+        model.update(:name => "DatabaseEventModel:1_modified")
+        tick_at @now + @sync_frequency, :and_every_second_for => (model.frequency * 2)
+
+        assert_equal ["DatabaseEventModel:1_modified", "DatabaseEventModel:1_modified"], @events_run
+      end
+
+      it 'updates event frequency with new frequency' do
+        model = DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at @now, :and_every_second_for => @sync_frequency - 1.second
+        @events_run.clear
+        model.update(:frequency => 30)
+        tick_at @now + @sync_frequency, :and_every_second_for => @sync_frequency - 1.seconds
+
+        assert_equal 2, @events_run.length
+      end
+
+      it 'updates event at with new at' do
+        model = DatabaseEventModel.create(:frequency => 1.day, :at => '10:30')
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        assert_will_run 'jan 1 2010 10:30:00'
+        assert_wont_run 'jan 1 2010 09:30:00'
+
+        model.update(:at => '09:30')
+        tick_at @now, :and_every_second_for => @sync_frequency + 1.second
+
+        assert_will_run 'jan 1 2010 09:30:00'
+        assert_wont_run 'jan 1 2010 10:30:00'
+      end
+
+      describe "when #name is defined" do
+        it 'runs daily event with at from databse only once' do
+          DatabaseEventModel.create(:frequency => 1.day, :at => next_minute(@now).strftime('%H:%M'))
+          setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+          # tick from now, though specified :at time
+          tick_at(@now, :and_every_second_for => (2 * @sync_frequency) + 1.second)
+
+          assert_equal 1, @events_run.length
+        end
+      end
+
+      describe "when #name is not defined" do
+        it 'runs daily event with at from databse only once' do
+          DatabaseEventModelWithoutName.create(:frequency => 1.day, :at => next_minute(next_minute(@now)).strftime('%H:%M'))
+          setup_sync(model: DatabaseEventModelWithoutName, :every => @sync_frequency, :events_run => @events_run)
+
+          # tick from now, though specified :at time
+          tick_at(@now, :and_every_second_for => (2 * @sync_frequency) + 1.second)
+
+          assert_equal 1, @events_run.length
+        end
+      end
+
+      it 'creates multiple event ats with comma separated at string' do
+        DatabaseEventModel.create(:frequency => 1.day, :at => '16:20, 18:10')
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at @now, :and_every_second_for => 1.second
+
+        assert_wont_run 'jan 1 2010 16:19:59'
+        assert_will_run 'jan 1 2010 16:20:00'
+        assert_wont_run 'jan 1 2010 16:20:01'
+
+        assert_wont_run 'jan 1 2010 18:09:59'
+        assert_will_run 'jan 1 2010 18:10:00'
+        assert_wont_run 'jan 1 2010 18:10:01'
+      end
+
+      it 'allows syncing multiple database models' do
+        DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => @sync_frequency, :events_run => @events_run)
+
+        DatabaseEventModel2.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel2, :every => @sync_frequency, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => 1.second)
+
+        assert_equal ["DatabaseEventModel:1", "DatabaseEventModel2:1"], @events_run
+      end
+    end
+
+    describe "when database reload frequency is less than model frequency period" do
+      before do
+        @events_run = []
+      end
+
+      it 'runs event only once within the model frequency period' do
+        DatabaseEventModel.create(:frequency => 5.minutes)
+        setup_sync(model: DatabaseEventModel, :every => 1.minute, :events_run => @events_run)
+
+        tick_at(@now, :and_every_second_for => 5.minutes)
+
+        assert_equal 1, @events_run.length
+      end
+    end
+
+    describe "with database event :at set to empty string" do
+      before do
+        @events_run = []
+
+        DatabaseEventModel.create(:frequency => 10)
+        setup_sync(model: DatabaseEventModel, :every => 1.minute, :events_run => @events_run)
+      end
+
+      it 'does not raise an error' do
+        begin
+          tick_at(Time.now, :and_every_second_for => 10.seconds)
+        rescue => e
+          assert false, "Raised an error: #{e.message}"
+        end
+      end
+
+      it 'runs the event' do
+        begin
+          tick_at(Time.now, :and_every_second_for => 10.seconds)
+        rescue
+        end
+        assert_equal 1, @events_run.length
+      end
+    end
+
+    describe "with task that responds to `tz`" do
+      before do
+        @events_run = []
+        @utc_time_now = Time.now.utc
+
+        DatabaseEventModel.create(:frequency => 1.days, :at => @utc_time_now.strftime('%H:%M'), :tz => 'America/Montreal')
+        setup_sync(model: DatabaseEventModel, :every => 1.minute, :events_run => @events_run)
+      end
+
+      it 'does not raise an error' do
+        begin
+          tick_at(@utc_time_now, :and_every_second_for => 10.seconds)
+        rescue => e
+          assert false, "Raised an error: #{e.message}"
+        end
+      end
+
+      it 'does not run the event based on UTC' do
+        begin
+          tick_at(@utc_time_now, :and_every_second_for => 3.hours)
+        rescue
+        end
+        assert_equal 0, @events_run.length
+      end
+
+      it 'runs the event based on America/Montreal tz' do
+        begin
+          tick_at(@utc_time_now, :and_every_second_for => 5.hours)
+        rescue
+        end
+        assert_equal 1, @events_run.length
+      end
+    end
+  end
+end

Reply via email to