diff options
author | Jacob Vosmaer <contact@jacobvosmaer.nl> | 2016-03-18 14:28:54 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-03-18 23:21:58 +0300 |
commit | ddb2de0957b3cf4c82a0e3a53e969e8b74e3b3dc (patch) | |
tree | c3e9bcbcdfc5398494b0399e3e544a38438a56a5 /spec | |
parent | c85085b757a37e81267ed76aeb94a0a1e00ed56d (diff) |
Merge branch 'project-cache-worker-without-diverging' into 'master'
Removed diverging commit count calculation from Repository#build_cache
Using a repository with 1000 branches the old `Repository#build_cache` method would take around 180 seconds to complete. Without calculating the diverging commit counts this method "only" takes around 60 seconds.
See commit 28cc2413eb5ddf920ce0b5eed803121f8b884754 for more details. This fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/14058
cc @rspeicher
See merge request !3274
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/repository_spec.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 536fe66b21b..a57229a4fdf 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -780,4 +780,34 @@ describe Repository, models: true do end end end + + describe '#build_cache' do + let(:cache) { repository.send(:cache) } + + it 'builds the caches if they do not already exist' do + expect(cache).to receive(:exist?). + exactly(repository.cache_keys.length). + times. + and_return(false) + + repository.cache_keys.each do |key| + expect(repository).to receive(key) + end + + repository.build_cache + end + + it 'does not build any caches that already exist' do + expect(cache).to receive(:exist?). + exactly(repository.cache_keys.length). + times. + and_return(true) + + repository.cache_keys.each do |key| + expect(repository).to_not receive(key) + end + + repository.build_cache + end + end end |