summaryrefslogtreecommitdiff
path: root/spec/unit/run_lock_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/run_lock_spec.rb')
-rw-r--r--spec/unit/run_lock_spec.rb140
1 files changed, 0 insertions, 140 deletions
diff --git a/spec/unit/run_lock_spec.rb b/spec/unit/run_lock_spec.rb
deleted file mode 100644
index 80140dfcce..0000000000
--- a/spec/unit/run_lock_spec.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-#
-# Author:: Daniel DeLeo (<dan@opscode.com>)
-# Copyright:: Copyright (c) 2012 Opscode, Inc.
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require File.expand_path('../../spec_helper', __FILE__)
-require 'chef/client'
-
-describe Chef::RunLock do
-
- default_cache_path = windows? ? 'C:\chef' : '/var/chef'
- default_pid_location = windows? ? 'C:\chef\cache\chef-client-running.pid' : '/var/chef/cache/chef-client-running.pid'
-
- describe "when first created" do
- it "locates the lockfile in the file cache path by default" do
- Chef::Config.stub(:cache_path).and_return(default_cache_path)
- run_lock = Chef::RunLock.new(Chef::Config.lockfile)
- run_lock.runlock_file.should == default_pid_location
- end
-
- it "locates the lockfile in the user-configured path when set" do
- Chef::Config.lockfile = "/tmp/chef-client-running.pid"
- run_lock = Chef::RunLock.new(Chef::Config.lockfile)
- run_lock.runlock_file.should == "/tmp/chef-client-running.pid"
- end
- end
-
- describe "acquire" do
- let(:lockfile) { "/tmp/chef-client-running.pid" }
- subject(:runlock) { Chef::RunLock.new(lockfile) }
-
- def stub_unblocked_run
- runlock.stub(:test).and_return(true)
- end
-
- def stub_blocked_run(duration)
- runlock.stub(:test).and_return(false)
- runlock.stub(:wait) { sleep(duration) }
- runlock.stub(:runpid).and_return(666) # errors read blocking pid
- end
-
- describe "when Chef::Config[:run_lock_timeout] is not set (set to default)" do
- describe "and the lockfile is not locked by another client run" do
- it "should not wait" do
- stub_unblocked_run
- Chef::RunLock.any_instance.should_not_receive(:wait)
- runlock.acquire
- end
- end
-
- describe "and the lockfile is locked by another client run" do
- it "should wait for the lock to be released" do
- stub_blocked_run(0.001)
- runlock.should_receive(:wait)
- runlock.acquire
- end
- end
- end
-
- describe "when Chef::Config[:run_lock_timeout] is set to 0" do
- before(:each) do
- @default_timeout = Chef::Config[:run_lock_timeout]
- Chef::Config[:run_lock_timeout] = 0
- end
-
- after(:each) do
- Chef::Config[:run_lock_timeout] = @default_timeout
- end
-
- describe "and the lockfile is not locked by another client run" do
- it "should acquire the lock" do
- stub_unblocked_run
- runlock.should_not_receive(:wait)
- runlock.acquire
- end
- end
-
- describe "and the lockfile is locked by another client run" do
- it "should raise Chef::Exceptions::RunLockTimeout" do
- stub_blocked_run(0.001)
- runlock.should_not_receive(:wait)
- expect{ runlock.acquire }.to raise_error(Chef::Exceptions::RunLockTimeout)
- end
- end
- end
-
- describe "when Chef::Config[:run_lock_timeout] is set to >0" do
- before(:each) do
- @default_timeout = Chef::Config[:run_lock_timeout]
- @timeout = 0.1
- Chef::Config[:run_lock_timeout] = @timeout
- end
-
- after(:each) do
- Chef::Config[:run_lock_timeout] = @default_timeout
- end
-
- describe "and the lockfile is not locked by another client run" do
- it "should acquire the lock" do
- stub_unblocked_run
- runlock.should_not_receive(:wait)
- runlock.acquire
- end
- end
-
- describe "and the lockfile is locked by another client run" do
- describe "and the lock is released before the timeout expires" do
- it "should acquire the lock" do
- stub_blocked_run(@timeout/2.0)
- runlock.should_receive(:wait)
- expect{ runlock.acquire }.not_to raise_error
- end
- end
-
- describe "and the lock is not released before the timeout expires" do
- it "should raise a RunLockTimeout exception" do
- stub_blocked_run(2.0)
- runlock.should_receive(:wait)
- expect{ runlock.acquire }.to raise_error(Chef::Exceptions::RunLockTimeout)
- end
- end
- end
- end
- end
-
- # See also: spec/functional/run_lock_spec
-
-end