-
Notifications
You must be signed in to change notification settings - Fork 236
Open
Description
Following on from adzap/timeliness#37...
I'm not seeing a fix for this in my spec (see below) for pre-threaded configuration / threadsafety.
Results:
timeliness | validates_timeliness | no reconfiguration per thread | thread-safety |
---|---|---|---|
v0.3.10 | v4.0.10 | passes | fails |
v0.4.3 | v4.0.10 | fails | passes |
v0.4.3 | v5.0.0.alpha5 | fails | passes |
My spec for this is as follows:
# frozen_string_literal: true
require "rails_helper"
RSpec.describe Timeliness do
after(:each) do
# reset to not mess up other specs
load(Rails.root.join("config/initializers/validates_timeliness.rb"))
end
let(:us_date) { "06/30/2016" }
let(:eu_date) { "30/06/2016" }
it "doesn't need re-configuration per thread (fails with Timeliness >= 0.4 but should be fixed with ValidatesTimeliness >= 5.0.0.alpha5)" do
# Timeliness.use_euro_formats -- in initializer
expect(Timeliness.parse(eu_date)).not_to be_nil
expect(Timeliness.parse(us_date)).to be_nil
threads = []
threads << Thread.new { expect(Timeliness.parse(eu_date)).not_to be_nil }
threads << Thread.new { expect(Timeliness.parse(us_date)).to be_nil }
threads.each(&:join)
end
it "is thread_safe (fails with Timeliness < 0.4, fixed with Timeliness >= 0.4)" do
threads = []
threads << Thread.new do
Timeliness.use_euro_formats
10_000.times { expect(Timeliness.parse(eu_date)).not_to be_nil }
end
threads << Thread.new do
Timeliness.use_us_formats
10_000.times { expect(Timeliness.parse(us_date)).not_to be_nil }
end
threads.each do |t|
t.report_on_exception = false
t.join
end
end
end
Metadata
Metadata
Assignees
Labels
No labels