aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/test/support/integration/dummy_app_template.rb
diff options
context:
space:
mode:
authorWill Jessop <will@willj.net>2015-11-21 05:01:56 +0000
committerWill Jessop <will@willj.net>2015-11-23 14:24:49 +0000
commit171e788ccd508caad5389edfe04e304a0da344a1 (patch)
treefeeb8e7d8bca174f9a8a35a7e8d2877a470ab531 /activejob/test/support/integration/dummy_app_template.rb
parent4547e894e9f924221f1ec4ff8e71fa750bab3595 (diff)
downloadrails-171e788ccd508caad5389edfe04e304a0da344a1.tar.gz
rails-171e788ccd508caad5389edfe04e304a0da344a1.tar.bz2
rails-171e788ccd508caad5389edfe04e304a0da344a1.zip
Fix race condition testing for job execution order
On most filesystems file ctime is limited to 1 second granularity, which means that on faster computers multiple simple jobs (for instance dummy TestJob) can finish within the same second. The execution order test in ActiveJob integration tests relies on multiple TestJobs writing files then comparing the ctime. As a result integration tests would sometimes fail as the ctime of the files written by these TestJobs could have coincidental ctimes making the comparison for job order fail. This commit adds a far more precise execution time (to the extent that the Ruby Time class allows) to the file created by TestJob, and updates the execution order assertion to use it, removing the race condition.
Diffstat (limited to 'activejob/test/support/integration/dummy_app_template.rb')
-rw-r--r--activejob/test/support/integration/dummy_app_template.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/activejob/test/support/integration/dummy_app_template.rb b/activejob/test/support/integration/dummy_app_template.rb
index 0c062a025e..262ca72327 100644
--- a/activejob/test/support/integration/dummy_app_template.rb
+++ b/activejob/test/support/integration/dummy_app_template.rb
@@ -18,8 +18,11 @@ class TestJob < ActiveJob::Base
queue_as :integration_tests
def perform(x)
- File.open(Rails.root.join("tmp/\#{x}"), "w+") do |f|
- f.write I18n.locale
+ File.open(Rails.root.join("tmp/\#{x}"), "wb+") do |f|
+ f.write Marshal.dump({
+ "locale" => I18n.locale.to_s || "en",
+ "executed_at" => Time.now.to_r
+ })
end
end
end