(POOLER-114) Fixed more pool_manager_spec tests

This commit is contained in:
Michelle Schuknecht 2018-07-24 11:37:17 -07:00
parent 1c8728b9b2
commit ce4be86486

View file

@ -574,10 +574,10 @@ EOT
it 'logs a message if an error is raised' do it 'logs a message if an error is raised' do
allow(logger).to receive(:log) allow(logger).to receive(:log)
expect(logger).to receive(:log).with('s',"[!] [#{pool_object['name']}] failed while cloning VM with an error: MockError") expect(logger).to receive(:log).with('s',"[!] [#{pool}] failed while cloning VM with an error: MockError")
expect(subject).to receive(:_clone_vm).with(pool_object,provider).and_raise('MockError') expect(subject).to receive(:_clone_vm).with(pool,provider).and_raise('MockError')
expect{subject.clone_vm(pool_object,provider)}.to raise_error(/MockError/) expect{subject.clone_vm(pool,provider)}.to raise_error(/MockError/)
end end
end end
@ -607,7 +607,7 @@ EOT
it 'should create a cloning VM' do it 'should create a cloning VM' do
expect(redis.scard("vmpooler__pending__#{pool}")).to eq(0) expect(redis.scard("vmpooler__pending__#{pool}")).to eq(0)
subject._clone_vm(pool_object,provider) subject._clone_vm(pool,provider)
expect(redis.scard("vmpooler__pending__#{pool}")).to eq(1) expect(redis.scard("vmpooler__pending__#{pool}")).to eq(1)
# Get the new VM Name from the pending pool queue as it should be the only entry # Get the new VM Name from the pending pool queue as it should be the only entry
@ -622,20 +622,20 @@ EOT
redis.incr('vmpooler__tasks__clone') redis.incr('vmpooler__tasks__clone')
redis.incr('vmpooler__tasks__clone') redis.incr('vmpooler__tasks__clone')
expect(redis.get('vmpooler__tasks__clone')).to eq('2') expect(redis.get('vmpooler__tasks__clone')).to eq('2')
subject._clone_vm(pool_object,provider) subject._clone_vm(pool,provider)
expect(redis.get('vmpooler__tasks__clone')).to eq('1') expect(redis.get('vmpooler__tasks__clone')).to eq('1')
end end
it 'should log a message that is being cloned from a template' do it 'should log a message that is being cloned from a template' do
expect(logger).to receive(:log).with('d',/\[ \] \[#{pool}\] Starting to clone '(.+)'/) expect(logger).to receive(:log).with('d',/\[ \] \[#{pool}\] Starting to clone '(.+)'/)
subject._clone_vm(pool_object,provider) subject._clone_vm(pool,provider)
end end
it 'should log a message that it completed being cloned' do it 'should log a message that it completed being cloned' do
expect(logger).to receive(:log).with('s',/\[\+\] \[#{pool}\] '(.+)' cloned in [0-9.]+ seconds/) expect(logger).to receive(:log).with('s',/\[\+\] \[#{pool}\] '(.+)' cloned in [0-9.]+ seconds/)
subject._clone_vm(pool_object,provider) subject._clone_vm(pool,provider)
end end
end end
@ -648,7 +648,7 @@ EOT
it 'should not create a cloning VM' do it 'should not create a cloning VM' do
expect(redis.scard("vmpooler__pending__#{pool}")).to eq(0) expect(redis.scard("vmpooler__pending__#{pool}")).to eq(0)
expect{subject._clone_vm(pool_object,provider)}.to raise_error(/MockError/) expect{subject._clone_vm(pool,provider)}.to raise_error(/MockError/)
expect(redis.scard("vmpooler__pending__#{pool}")).to eq(0) expect(redis.scard("vmpooler__pending__#{pool}")).to eq(0)
# Get the new VM Name from the pending pool queue as it should be the only entry # Get the new VM Name from the pending pool queue as it should be the only entry
@ -660,12 +660,12 @@ EOT
redis.incr('vmpooler__tasks__clone') redis.incr('vmpooler__tasks__clone')
redis.incr('vmpooler__tasks__clone') redis.incr('vmpooler__tasks__clone')
expect(redis.get('vmpooler__tasks__clone')).to eq('2') expect(redis.get('vmpooler__tasks__clone')).to eq('2')
expect{subject._clone_vm(pool_object,provider)}.to raise_error(/MockError/) expect{subject._clone_vm(pool,provider)}.to raise_error(/MockError/)
expect(redis.get('vmpooler__tasks__clone')).to eq('1') expect(redis.get('vmpooler__tasks__clone')).to eq('1')
end end
it 'should raise the error' do it 'should raise the error' do
expect{subject._clone_vm(pool_object,provider)}.to raise_error(/MockError/) expect{subject._clone_vm(pool,provider)}.to raise_error(/MockError/)
end end
end end
end end
@ -3138,7 +3138,7 @@ EOT
it 'should log a message the first time a pool is empty' do it 'should log a message the first time a pool is empty' do
expect(logger).to receive(:log).with('s', "[!] [#{pool}] is empty") expect(logger).to receive(:log).with('s', "[!] [#{pool}] is empty")
subject._check_pool(pool_object,provider) subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size)
end end
context 'when pool is marked as empty' do context 'when pool is marked as empty' do
@ -3150,14 +3150,14 @@ EOT
it 'should not log a message when the pool remains empty' do it 'should not log a message when the pool remains empty' do
expect(logger).to receive(:log).with('s', "[!] [#{pool}] is empty").exactly(0).times expect(logger).to receive(:log).with('s', "[!] [#{pool}] is empty").exactly(0).times
subject._check_pool(pool_object,provider) subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size)
end end
it 'should remove the empty pool mark if it is no longer empty' do it 'should remove the empty pool mark if it is no longer empty' do
create_ready_vm(pool,vm,token) create_ready_vm(pool,vm,token)
expect(redis.get("vmpooler__empty__#{pool}")).to be_truthy expect(redis.get("vmpooler__empty__#{pool}")).to be_truthy
subject._check_pool(pool_object,provider) subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size)
expect(redis.get("vmpooler__empty__#{pool}")).to be_falsey expect(redis.get("vmpooler__empty__#{pool}")).to be_falsey
end end
end end
@ -3166,41 +3166,38 @@ EOT
it 'should return the number of cloned VMs' do it 'should return the number of cloned VMs' do
pool_size = 5 pool_size = 5
config[:pools][0]['size'] = pool_size
result = subject._check_pool(pool_object,provider) subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size)
expect(result[:cloned_vms]).to be(pool_size) expect(pool_check_response[:cloned_vms]).to be(pool_size)
end end
it 'should call clone_vm to populate the pool' do it 'should call clone_vm to populate the pool' do
pool_size = 5 pool_size = 5
config[:pools][0]['size'] = pool_size
expect(subject).to receive(:clone_vm).exactly(pool_size).times expect(subject).to receive(:clone_vm).exactly(pool_size).times
subject._check_pool(pool_object,provider) subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size)
end end
it 'should call clone_vm until task_limit is hit' do it 'should call clone_vm until task_limit is hit' do
task_limit = 2 task_limit = 2
pool_size = 5 pool_size = 5
config[:pools][0]['size'] = pool_size
config[:config]['task_limit'] = task_limit config[:config]['task_limit'] = task_limit
expect(subject).to receive(:clone_vm).exactly(task_limit).times expect(subject).to receive(:clone_vm).exactly(task_limit).times
subject._check_pool(pool_object,provider) subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size)
end end
it 'log a message if a cloning error occurs' do it 'log a message if a cloning error occurs' do
pool_size = 1 pool_size = 2
config[:pools][0]['size'] = pool_size
expect(subject).to receive(:clone_vm).and_raise(RuntimeError,"MockError") expect(subject).to receive(:clone_vm).and_raise(RuntimeError,"MockError")
expect(logger).to receive(:log).with("s", "[!] [#{pool}] clone failed during check_pool with an error: MockError") expect(logger).to receive(:log).with("s", "[!] [#{pool}] clone failed during check_pool with an error: MockError")
create_ready_vm(pool,'vm')
expect{ subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size) }.to raise_error(RuntimeError,'MockError')
expect{ subject._check_pool(pool_object,provider) }.to raise_error(RuntimeError,'MockError')
end end
end end