Sha256: 897166c63be158241b666d2971884ecef75e3d5f3ad530f2aaa5aa97cbbd53eb
Contents?: true
Size: 1.19 KB
Versions: 15
Compression:
Stored size: 1.19 KB
Contents
# frozen_string_literal: true describe 'Accessing ISO3166::Country instances data in multiple threads' do before do if Thread.respond_to?(:report_on_exception) @report_on_exception_value = Thread.report_on_exception Thread.report_on_exception = false end ISO3166::Data.reset end def create_countries_threaded nthreads = 100 threads = [] alpha2_codes = %w[us es nl ca de fr mx ru ch jp] nthreads.times do threads << Thread.new do alpha2_codes.each do |a2| country = ISO3166::Country[a2] # This will fail if data['translations'] has been # left nil due to a race condition country.translation end end end threads.map(&:join) end it "doesn't raise any exceptions when using a mutex" do expect { create_countries_threaded }.to_not raise_error end it 'raises NoMethodError when not using a mutex' do allow(ISO3166::Data).to receive(:use_mutex?).and_return(false) expect { create_countries_threaded }.to raise_error(NoMethodError) end after do if Thread.respond_to?(:report_on_exception) Thread.report_on_exception = @report_on_exception_value end end end
Version data entries
15 entries across 15 versions & 1 rubygems