summaryrefslogtreecommitdiff
path: root/spec/gitlab_reference_counter_spec.rb
diff options
context:
space:
mode:
authorJacob Vosmaer (GitLab) <jacob@gitlab.com>2016-07-27 15:28:03 +0000
committerJacob Vosmaer (GitLab) <jacob@gitlab.com>2016-07-27 15:28:03 +0000
commitead20c033a56be1e26a477bbd8802122f743fb24 (patch)
treed929996b6ebdc342bcb1c60b758a54b95725ee93 /spec/gitlab_reference_counter_spec.rb
parent87b388232505b1715a1d7448dc393a383cd7a53f (diff)
parent0625d469d6645d90eeab18449b70b6d2463085ce (diff)
downloadgitlab-shell-ead20c033a56be1e26a477bbd8802122f743fb24.tar.gz
Merge branch 'mv-storage' into 'master'
Add command to move repositories between repository storages Necessary for https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/533 /cc @pcarranza See merge request !71
Diffstat (limited to 'spec/gitlab_reference_counter_spec.rb')
-rw-r--r--spec/gitlab_reference_counter_spec.rb38
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