From 481d5b215f5b638aef09da0bde9ce821b6501b95 Mon Sep 17 00:00:00 2001 From: "kirby@puppetlabs.com" Date: Fri, 29 Jun 2018 15:50:06 -0700 Subject: [PATCH] (MOB) Running tests pass Good luck ready tester --- spec/unit/pool_manager_spec.rb | 208 ++++++++++++++------------------- 1 file changed, 87 insertions(+), 121 deletions(-) diff --git a/spec/unit/pool_manager_spec.rb b/spec/unit/pool_manager_spec.rb index 404d17b..189b268 100644 --- a/spec/unit/pool_manager_spec.rb +++ b/spec/unit/pool_manager_spec.rb @@ -2665,6 +2665,7 @@ EOT end describe '#check_running_pool_vms' do + let(:pool_object) { config[:pools][0] } let(:pool_check_response) { {:checked_running_vms => 0} } @@ -2709,9 +2710,9 @@ EOT end it 'should return the number of checked running VMs' do - result = subject._check_pool(pool_object,provider) + subject.check_running_pool_vms(pool, provider, pool_check_response, inventory) - expect(result[:checked_running_vms]).to be(1) + expect(pool_check_response[:checked_running_vms]).to be(1) end it 'should use the VM lifetime in preference to defaults' do @@ -2721,24 +2722,87 @@ EOT # The lifetime comes in as string expect(subject).to receive(:check_running_vm).with(vm,pool,"#{big_lifetime}",provider) - subject._check_pool(pool_object,provider) + subject.check_running_pool_vms(pool, provider, pool_check_response, inventory) end it 'should use the configuration default if the VM lifetime is not set' do config[:config]['vm_lifetime'] = 50 expect(subject).to receive(:check_running_vm).with(vm,pool,50,provider) - subject._check_pool(pool_object,provider) + subject.check_running_pool_vms(pool, provider, pool_check_response, inventory) end it 'should use a lifetime of 12 if nothing is set' do expect(subject).to receive(:check_running_vm).with(vm,pool,12,provider) - subject._check_pool(pool_object,provider) + subject.check_running_pool_vms(pool, provider, pool_check_response, inventory) + end + end + end + + describe '#check_ready_pool_vms' do + let(:provider) { double('provider') } + let(:ttl) { 0 } + let(:pool_check_response) { + {:checked_ready_vms => 0} + } + let(:inventory) { + # mock response from create_inventory + {} + } + + context 'Ready VM not in the inventory' do + before(:each) do + create_ready_vm(pool,vm,token) + end + + it 'should not call check_ready_vm' do + expect(subject).to receive(:check_ready_vm).exactly(0).times + + subject.check_ready_pool_vms(pool, provider, pool_check_response, inventory, ttl) + end + + it 'should move the VM to completed queue' do + expect(subject).to receive(:move_vm_queue).with(pool,vm,'ready','completed',String).and_call_original + + subject.check_ready_pool_vms(pool, provider, pool_check_response, inventory, ttl) end end + context 'Ready VM in the inventory' do + before(:each) do + allow(subject).to receive(:check_ready_vm) + create_ready_vm(pool,vm,token) + end + it 'should return the number of checked ready VMs' do + subject.check_ready_pool_vms(pool, provider, pool_check_response, inventory, ttl) + + expect(pool_check_response[:checked_ready_vms]).to be(1) + end + + it 'should log an error if one occurs' do + expect(subject).to receive(:check_ready_vm).and_raise(RuntimeError,'MockError') + expect(logger).to receive(:log).with('d', "[!] [#{pool}] _check_pool failed with an error while evaluating ready VMs: MockError") + + subject.check_ready_pool_vms(pool, provider, pool_check_response, inventory, ttl) + end + + it 'should use the pool TTL if set' do + big_lifetime = 2000 + + config[:pools][0]['ready_ttl'] = big_lifetime + expect(subject).to receive(:check_ready_vm).with(vm,pool,big_lifetime,provider) + + subject.check_ready_pool_vms(pool, provider, pool_check_response, inventory, ttl) + end + + it 'should use a pool TTL of zero if none set' do + expect(subject).to receive(:check_ready_vm).with(vm,pool,0,provider) + + subject.check_ready_pool_vms(pool, provider, pool_check_response, inventory, ttl) + end + end end describe '#_check_pool' do @@ -2871,126 +2935,28 @@ EOT end # RUNNING - # context 'Running VM not in the inventory' do - # before(:each) do - # expect(provider).to receive(:vms_in_pool).with(pool).and_return(new_vm_response) - # expect(logger).to receive(:log).with('s', "[?] [#{pool}] '#{new_vm}' added to 'discovered' queue") - # create_running_vm(pool,vm,token) - # end + context 'when checking running VMs' do + let(:pool_check_response) { + { + discovered_vms: 0, + checked_running_vms: 0, + checked_ready_vms: 0, + checked_pending_vms: 0, + destroyed_vms: 0, + migrated_vms: 0, + cloned_vms: 0 + } + } - # it 'should not call check_running_vm' do - # expect(subject).to receive(:check_running_vm).exactly(0).times + it 'should call #check_running_pool_vms' do + allow(subject).to receive(:create_inventory).and_return({}) + expect(subject).to receive(:check_running_pool_vms).with(pool, provider, pool_check_response, {}) - # subject._check_pool(pool_object,provider) - # end - - # it 'should move the VM to completed queue' do - # expect(subject).to receive(:move_vm_queue).with(pool,vm,'running','completed',String).and_call_original - - # subject._check_pool(pool_object,provider) - # end - # end - - # context 'Running VM in the inventory' do - # before(:each) do - # expect(provider).to receive(:vms_in_pool).with(pool).and_return(vm_response) - # allow(subject).to receive(:check_running_vm) - # create_running_vm(pool,vm,token) - # end - - # it 'should log an error if one occurs' do - # expect(subject).to receive(:check_running_vm).and_raise(RuntimeError,'MockError') - # expect(logger).to receive(:log).with('d', "[!] [#{pool}] _check_pool with an error while evaluating running VMs: MockError") - - # subject._check_pool(pool_object,provider) - # end - - # it 'should return the number of checked running VMs' do - # result = subject._check_pool(pool_object,provider) - - # expect(result[:checked_running_vms]).to be(1) - # end - - # it 'should use the VM lifetime in preference to defaults' do - # big_lifetime = 2000 - - # redis.hset("vmpooler__vm__#{vm}", 'lifetime',big_lifetime) - # # The lifetime comes in as string - # expect(subject).to receive(:check_running_vm).with(vm,pool,"#{big_lifetime}",provider) - - # subject._check_pool(pool_object,provider) - # end - - # it 'should use the configuration default if the VM lifetime is not set' do - # config[:config]['vm_lifetime'] = 50 - # expect(subject).to receive(:check_running_vm).with(vm,pool,50,provider) - - # subject._check_pool(pool_object,provider) - # end - - # it 'should use a lifetime of 12 if nothing is set' do - # expect(subject).to receive(:check_running_vm).with(vm,pool,12,provider) - - # subject._check_pool(pool_object,provider) - # end - # end + subject._check_pool(pool_object,provider) + end + end # READY - context 'Ready VM not in the inventory' do - before(:each) do - expect(provider).to receive(:vms_in_pool).with(pool).and_return(new_vm_response) - expect(logger).to receive(:log).with('s', "[?] [#{pool}] '#{new_vm}' added to 'discovered' queue") - create_ready_vm(pool,vm,token) - end - - it 'should not call check_ready_vm' do - expect(subject).to receive(:check_ready_vm).exactly(0).times - - subject._check_pool(pool_object,provider) - end - - it 'should move the VM to completed queue' do - expect(subject).to receive(:move_vm_queue).with(pool,vm,'ready','completed',String).and_call_original - - subject._check_pool(pool_object,provider) - end - end - - context 'Ready VM in the inventory' do - before(:each) do - expect(provider).to receive(:vms_in_pool).with(pool).and_return(vm_response) - allow(subject).to receive(:check_ready_vm) - create_ready_vm(pool,vm,token) - end - - it 'should return the number of checked ready VMs' do - result = subject._check_pool(pool_object,provider) - - expect(result[:checked_ready_vms]).to be(1) - end - - it 'should log an error if one occurs' do - expect(subject).to receive(:check_ready_vm).and_raise(RuntimeError,'MockError') - expect(logger).to receive(:log).with('d', "[!] [#{pool}] _check_pool failed with an error while evaluating ready VMs: MockError") - - subject._check_pool(pool_object,provider) - end - - it 'should use the pool TTL if set' do - big_lifetime = 2000 - - config[:pools][0]['ready_ttl'] = big_lifetime - expect(subject).to receive(:check_ready_vm).with(vm,pool,big_lifetime,provider) - - subject._check_pool(pool_object,provider) - end - - it 'should use a pool TTL of zero if none set' do - expect(subject).to receive(:check_ready_vm).with(vm,pool,0,provider) - - subject._check_pool(pool_object,provider) - end - end # PENDING context 'Pending VM not in the inventory' do