Skip to content
Snippets Groups Projects
Commit 336635f2 authored by Z.J. van de Weg's avatar Z.J. van de Weg
Browse files

Test the ExpireJobCacheWorker and related changes

These were untested by the cherry picked commit.
parent da0c543e
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -89,7 +89,7 @@ class CommitStatus < ActiveRecord::Base
else
PipelineUpdateWorker.perform_async(pipeline.id)
end
ExpireJobCacheWorker.perform_async(pipeline.id, commit_status.id)
ExpireJobCacheWorker.perform_async(commit_status.id)
end
end
end
Loading
Loading
Loading
Loading
@@ -2,15 +2,17 @@ class ExpireJobCacheWorker
include Sidekiq::Worker
include BuildQueue
 
def perform(pipeline_id, job_id)
job = CommitStatus.joins(:pipeline, :project).find_by(id: job)
def perform(job_id)
job = CommitStatus.joins(:pipeline, :project).find_by(id: job_id)
return unless job
 
pipeline = job.pipeline
project = job.project
 
store.touch(project_pipeline_path(project, pipeline))
store.touch(project_job_path(project, job))
Gitlab::EtagCaching::Store.new.tap do |store|
store.touch(project_pipeline_path(project, pipeline))
store.touch(project_job_path(project, job))
end
end
 
private
Loading
Loading
@@ -30,8 +32,4 @@ class ExpireJobCacheWorker
job.id,
format: :json)
end
def store
@store ||= Gitlab::EtagCaching::Store.new
end
end
Loading
Loading
@@ -36,6 +36,16 @@ describe CommitStatus, :models do
it { is_expected.to eq(commit_status.user) }
end
 
describe 'status state machine' do
let!(:commit_status) { create(:commit_status, :running, project: project) }
it 'invalidates the cache after a transition' do
expect(ExpireJobCacheWorker).to receive(:perform_async).with(commit_status.id)
commit_status.success!
end
end
describe '#started?' do
subject { commit_status.started? }
 
Loading
Loading
require 'spec_helper'
describe ExpireJobCacheWorker do
set(:pipeline) { create(:ci_empty_pipeline) }
let(:project) { pipeline.project }
subject { described_class.new }
describe '#perform' do
context 'with a job in the pipeline' do
let(:job) { create(:ci_build, pipeline: pipeline) }
it 'invalidates Etag caching for the job path' do
pipeline_path = "/#{project.full_path}/pipelines/#{pipeline.id}.json"
job_path = "/#{project.full_path}/builds/#{job.id}.json"
expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(pipeline_path)
expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(job_path)
subject.perform(job.id)
end
end
context 'when there is no job in the pipeline' do
it 'does not change the etag store' do
expect(Gitlab::EtagCaching::Store).not_to receive(:new)
subject.perform(9999)
end
end
end
end
Loading
Loading
@@ -10,9 +10,11 @@ describe ExpirePipelineCacheWorker do
it 'invalidates Etag caching for project pipelines path' do
pipelines_path = "/#{project.full_path}/pipelines.json"
new_mr_pipelines_path = "/#{project.full_path}/merge_requests/new.json"
pipeline_path = "/#{project.full_path}/pipelines/#{pipeline.id}.json"
 
expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(pipelines_path)
expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(new_mr_pipelines_path)
expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(pipeline_path)
 
subject.perform(pipeline.id)
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment