summaryrefslogtreecommitdiff
path: root/spec/gitlab_projects_spec.rb
diff options
context:
space:
mode:
authorAlejandro Rodríguez <alejorro70@gmail.com>2016-10-05 18:26:45 -0300
committerAlejandro Rodríguez <alejorro70@gmail.com>2016-10-05 18:26:45 -0300
commit9dc7a11955b35cc2edb105898a59d914796702f2 (patch)
treea7b66ce3f82fef704187501780967c59ab1e825b /spec/gitlab_projects_spec.rb
parentfad9498c1b15e96bf553064d77dc33c17ff7baa7 (diff)
downloadgitlab-shell-9dc7a11955b35cc2edb105898a59d914796702f2.tar.gz
Fix short circuit logic between rsync with and without ionice for
storage migrations
Diffstat (limited to 'spec/gitlab_projects_spec.rb')
-rw-r--r--spec/gitlab_projects_spec.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/gitlab_projects_spec.rb b/spec/gitlab_projects_spec.rb
index bc615d4..149d53f 100644
--- a/spec/gitlab_projects_spec.rb
+++ b/spec/gitlab_projects_spec.rb
@@ -227,6 +227,41 @@ describe GitlabProjects do
FileUtils.cd(new_repo_path) { Dir['**/*'].length.should_not be(0) }
end
+ it "should attempt rsync with ionice first" do
+ expect(gl_projects).to receive(:system).with(
+ 'ionice -c2 -n7 rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
+ "#{tmp_repo_path}/", new_repo_path
+ ).and_return(true)
+
+ gl_projects.exec.should be_true
+ end
+
+ it "should attempt rsync without ionice if with ionice fails" do
+ expect(gl_projects).to receive(:system).with(
+ 'ionice -c2 -n7 rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
+ "#{tmp_repo_path}/", new_repo_path
+ ).and_return(false)
+
+ expect(gl_projects).to receive(:system).with(
+ 'rsync', '-a', '--delete', '--rsync-path="rsync"', "#{tmp_repo_path}/", new_repo_path
+ ).and_return(true)
+
+ gl_projects.exec.should be_true
+ end
+
+ it "should fail if both rsync attempts fail" do
+ expect(gl_projects).to receive(:system).with(
+ 'ionice -c2 -n7 rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
+ "#{tmp_repo_path}/", new_repo_path
+ ).and_return(false)
+
+ expect(gl_projects).to receive(:system).with(
+ 'rsync', '-a', '--delete', '--rsync-path="rsync"', "#{tmp_repo_path}/", new_repo_path
+ ).and_return(false)
+
+ gl_projects.exec.should be_false
+ end
+
it "should fail if no destination path is provided" do
incomplete = build_gitlab_projects('mv-storage', tmp_repos_path, repo_name)
$logger.should_receive(:error).with("mv-storage failed: no destination storage path provided.")