[DRE-commits] [ruby-clockwork] 01/01: Apply disable-sync_performer_test.patch: disable specific test that randomly fails on havey load machine. (Closes: #846020)
Andrew Lee
ajqlee at moszumanska.debian.org
Fri Dec 30 10:22:23 UTC 2016
This is an automated email from the git hooks/post-receive script.
ajqlee pushed a commit to branch master
in repository ruby-clockwork.
commit 1b30956a96151e7752f8533c47283cb72a8eb9e0
Author: Andrew Lee (李健秋) <andrew.lee at collabora.co.uk>
Date: Fri Dec 30 18:22:00 2016 +0800
Apply disable-sync_performer_test.patch: disable specific test that randomly fails on havey load machine. (Closes: #846020)
---
debian/patches/disable-sync_performer_test.patch | 593 +++++++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 594 insertions(+)
diff --git a/debian/patches/disable-sync_performer_test.patch b/debian/patches/disable-sync_performer_test.patch
new file mode 100644
index 0000000..7b7d16c
--- /dev/null
+++ b/debian/patches/disable-sync_performer_test.patch
@@ -0,0 +1,593 @@
+Description: Disable test due to randomly fails on heavy load machine
+Bug-Debian: https://bugs.debian.org/846020
+Reviewed-By: Andrew Lee (李健秋) <ajqlee at 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
diff --git a/debian/patches/series b/debian/patches/series
index e43d435..023bcc7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
fix_test_with_minitest.patch
+disable-sync_performer_test.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-clockwork.git
More information about the Pkg-ruby-extras-commits
mailing list