diff options
author | Alejandro RodrÃguez <alejorro70@gmail.com> | 2016-07-25 16:18:33 -0400 |
---|---|---|
committer | Alejandro RodrÃguez <alejorro70@gmail.com> | 2016-07-27 11:13:19 -0400 |
commit | 0625d469d6645d90eeab18449b70b6d2463085ce (patch) | |
tree | d929996b6ebdc342bcb1c60b758a54b95725ee93 /spec/gitlab_reference_counter_spec.rb | |
parent | 522567afca91f2e04871e3d9bf8e9884f48a9855 (diff) | |
download | gitlab-shell-mv-storage.tar.gz |
Track ongoing pushes and reject mv-storage commands if there are push running (after waiting some time)mv-storage
Diffstat (limited to 'spec/gitlab_reference_counter_spec.rb')
-rw-r--r-- | spec/gitlab_reference_counter_spec.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/gitlab_reference_counter_spec.rb b/spec/gitlab_reference_counter_spec.rb new file mode 100644 index 0000000..5be53ff --- /dev/null +++ b/spec/gitlab_reference_counter_spec.rb @@ -0,0 +1,38 @@ +# coding: utf-8 +require 'spec_helper' +require 'gitlab_reference_counter' + +describe GitlabReferenceCounter do + let(:redis_client) { double('redis_client') } + let(:reference_counter_key) { "git-receive-pack-reference-counter:/test/path" } + let(:gitlab_reference_counter) { GitlabReferenceCounter.new('/test/path') } + + before do + allow(gitlab_reference_counter).to receive(:redis_client).and_return(redis_client) + $logger = double('logger').as_null_object + end + + it 'increases and set the expire time of a reference count for a path' do + expect(redis_client).to receive(:incr).with(reference_counter_key) + expect(redis_client).to receive(:expire).with(reference_counter_key, GitlabReferenceCounter::REFERENCE_EXPIRE_TIME) + expect(gitlab_reference_counter.increase).to be(true) + end + + it 'decreases the reference count for a path' do + allow(redis_client).to receive(:decr).and_return(0) + expect(redis_client).to receive(:decr).with(reference_counter_key) + expect(gitlab_reference_counter.decrease).to be(true) + end + + it 'warns if attempting to decrease a counter with a value of one or less, and resets the counter' do + expect(redis_client).to receive(:decr).and_return(-1) + expect(redis_client).to receive(:del) + expect($logger).to receive(:warn).with("Reference counter for /test/path decreased when its value was less than 1. Reseting the counter.") + expect(gitlab_reference_counter.decrease).to be(true) + end + + it 'get the reference count for a path' do + allow(redis_client).to receive(:get).and_return(1) + expect(gitlab_reference_counter.value).to be(1) + end +end |