Skip to content

Commit e64e567

Browse files
committed
Ensure Timecop resets across specs
1 parent 7c22bc9 commit e64e567

File tree

5 files changed

+56
-46
lines changed

5 files changed

+56
-46
lines changed

spec/unit/jobs/services/service_instance_state_fetch_spec.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -473,13 +473,15 @@ def run_job(job)
473473
context 'when enqueuing the job would exceed the max poll duration by the time it runs' do
474474
let(:state) { 'in progress' }
475475

476-
it 'does not enqueue another fetch job' do
477-
Timecop.freeze(job.end_timestamp - (job.poll_interval * 0.5))
478-
run_job(job)
476+
it 'does not enqueue another fetch job' do
477+
Timecop.freeze(job.end_timestamp - (job.poll_interval * 0.5)) do
478+
run_job(job)
479+
end
479480

480-
Timecop.freeze(Time.now + (job.poll_interval * 2))
481-
execute_all_jobs(expected_successes: 0, expected_failures: 0)
482-
end
481+
Timecop.freeze(Time.now + (job.poll_interval * 2)) do
482+
execute_all_jobs(expected_successes: 0, expected_failures: 0)
483+
end
484+
end
483485
end
484486

485487
context 'when the job was migrated before the addition of end_timestamp' do

spec/unit/lib/cloud_controller/clock/distributed_executor_spec.rb

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,12 @@ module VCAP::CloudController
116116

117117
DistributedExecutor.new.execute_job name: job_name, interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
118118
Delayed::Job.create!(queue: job_name, failed_at: nil, locked_at: Time.now)
119-
counter += 1
120-
Timecop.travel(Time.now.utc + 1.minute + 2.seconds)
121-
122-
DistributedExecutor.new.execute_job name: job_name, interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
123-
counter += 2
124-
end
119+
counter += 1
120+
Timecop.travel(Time.now.utc + 1.minute + 2.seconds) do
121+
DistributedExecutor.new.execute_job name: job_name, interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
122+
counter += 2
123+
end
124+
end
125125
end
126126

127127
expect(counter).to eq(1)
@@ -139,11 +139,12 @@ module VCAP::CloudController
139139
counter = 0
140140

141141
DistributedExecutor.new.execute_job name: 'diego_sync', interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
142-
Timecop.travel(Time.now.utc + 1.minute + 1.second)
143-
counter += 1
142+
Timecop.travel(Time.now.utc + 1.minute + 1.second) do
143+
counter += 1
144144

145-
DistributedExecutor.new.execute_job name: 'diego_sync', interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
146-
counter += 2
145+
DistributedExecutor.new.execute_job name: 'diego_sync', interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
146+
counter += 2
147+
end
147148
end
148149
end
149150

@@ -162,12 +163,13 @@ module VCAP::CloudController
162163

163164
DistributedExecutor.new.execute_job name: job_name, interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
164165
Delayed::Job.create!(queue: job_name, failed_at: nil, locked_at: Time.now)
165-
Timecop.travel(Time.now.utc + 1.minute + 1.second)
166-
counter += 1
166+
Timecop.travel(Time.now.utc + 1.minute + 1.second) do
167+
counter += 1
167168

168-
DistributedExecutor.new.execute_job name: job_name, interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
169-
counter += 2
170-
end
169+
DistributedExecutor.new.execute_job name: job_name, interval: 1.minute, fudge: 1.second, timeout: 5.minutes do
170+
counter += 2
171+
end
172+
end
171173
end
172174

173175
expect(counter).to eq(1)

spec/unit/lib/cloud_controller/resource_match_spec.rb

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,12 @@ module VCAP::CloudController
6262
let(:maximum_file_size) { 500.megabytes } # this is arbitrary
6363
let(:minimum_file_size) { 3.kilobytes }
6464

65-
it 'correctly calculates and logs the time for each file size range' do
66-
Timecop.freeze
67-
allow(ResourcePool.instance).to receive(:resource_known?) do
68-
Timecop.freeze(2.seconds.from_now)
69-
true
70-
end
71-
expect(Steno.logger('cc.resource_pool')).to receive(:info).once.with('starting resource matching', {
65+
it 'correctly calculates and logs the time for each file size range' do
66+
Timecop.freeze do
67+
allow(ResourcePool.instance).to receive(:resource_known?) do
68+
Timecop.freeze(2.seconds.from_now) { true }
69+
end
70+
expect(Steno.logger('cc.resource_pool')).to receive(:info).once.with('starting resource matching', {
7271
total_resources_to_match: 6,
7372
resource_count_by_size: {
7473
'1KB or less': 0,
@@ -80,7 +79,7 @@ module VCAP::CloudController
8079
}
8180
})
8281

83-
expect(Steno.logger('cc.resource_pool')).to receive(:info).once.with('done matching resources', {
82+
expect(Steno.logger('cc.resource_pool')).to receive(:info).once.with('done matching resources', {
8483
total_resources_to_match: 6,
8584
total_resource_match_time: '12.0 seconds',
8685
resource_count_by_size: {
@@ -100,8 +99,10 @@ module VCAP::CloudController
10099
'1GB or more': '0.0 seconds'
101100
}
102101
})
103-
ResourceMatch.new(descriptors).match_resources
104-
end
102+
ResourceMatch.new(descriptors).match_resources
103+
end
104+
105+
after { Timecop.return }
105106
end
106107
end
107108

spec/unit/lib/services/service_brokers/v2/orphan_mitigator_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ module ServiceBrokers::V2
5050
OrphanMitigator.new.cleanup_failed_bind(binding)
5151
end
5252

53+
after { Timecop.return }
54+
5355
it 'enqueues an unbind job' do
5456
expect(VCAP::CloudController::Jobs::GenericEnqueuer).to have_received(:shared)
5557

@@ -107,6 +109,8 @@ module ServiceBrokers::V2
107109
end
108110
end
109111

112+
after { Timecop.return }
113+
110114
specify 'the enqueued job has a reschedule_at define such that exponential backoff occurs' do
111115
now = Time.now
112116

spec/unit/models/runtime/deployment_model_spec.rb

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,10 @@ module VCAP::CloudController
234234
let(:creation_time) { deployment.created_at }
235235
let(:update_time) { deployment.created_at + 24.hours }
236236

237-
before do
238-
Timecop.freeze(creation_time)
239-
end
240-
241-
after do
242-
Timecop.return
237+
around do |example|
238+
Timecop.freeze(creation_time) do
239+
example.run
240+
end
243241
end
244242

245243
it 'is defaulted with the created_at time' do
@@ -248,23 +246,26 @@ module VCAP::CloudController
248246

249247
it 'updates when status_reason has changed' do
250248
deployment.status_reason = DeploymentModel::CANCELING_STATUS_REASON
251-
Timecop.freeze(update_time)
252-
deployment.save
253-
expect(deployment.status_updated_at).to eq update_time
249+
Timecop.freeze(update_time) do
250+
deployment.save
251+
expect(deployment.status_updated_at).to eq update_time
252+
end
254253
end
255254

256255
it 'updates when status_value has changed' do
257256
deployment.status_value = DeploymentModel::FINALIZED_STATUS_VALUE
258-
Timecop.freeze(update_time)
259-
deployment.save
260-
expect(deployment.status_updated_at).to eq update_time
257+
Timecop.freeze(update_time) do
258+
deployment.save
259+
expect(deployment.status_updated_at).to eq update_time
260+
end
261261
end
262262

263263
it 'doesnt update when status_value or status_reason is unchanged' do
264264
deployment.strategy = 'faux_strategy'
265-
Timecop.freeze(update_time)
266-
deployment.save
267-
expect(deployment.status_updated_at).to eq creation_time
265+
Timecop.freeze(update_time) do
266+
deployment.save
267+
expect(deployment.status_updated_at).to eq creation_time
268+
end
268269
end
269270
end
270271

0 commit comments

Comments
 (0)