Skip to content

Commit

Permalink
[ninefold|compute] Refactor out job waiting functionality, test corre…
Browse files Browse the repository at this point in the history
…ct data.
  • Loading branch information
lstoll committed Jun 4, 2011
1 parent ad7b299 commit 3fe91ca
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 32 deletions.
14 changes: 12 additions & 2 deletions tests/compute/requests/ninefold/helper.rb
Expand Up @@ -11,6 +11,18 @@ module TestSupport
ZONE_ID = 1
# Max time to wait for job completion (2 mins)
MAXWAIT = 2 * 60

## Waits for a job, returning the completed jobs payload.
## Accepts an integer jobid, or a hash containing a jobid or id.
def wait_for_job(job)
job = job['jobid'] || job['id'] unless job.kind_of? Integer
while Ninefold[:compute].query_async_job_result(:jobid => job)['jobstatus'] == 0
sleep 1
end
Ninefold[:compute].query_async_job_result(:jobid => job)
end
module_function :wait_for_job

end
module Formats
module Lists
Expand Down Expand Up @@ -156,8 +168,6 @@ def fill_virtual_machine_data(vms)

module_function :fill_virtual_machine_data

PENDING_VIRTUAL_MACHINE = {"id" => Integer, "jobid" => Integer}
ASYNC_VIRTUAL_MACHINE = {"jobid" => Integer}
VIRTUAL_MACHINE = {
"id"=>Integer,
"name"=>String,
Expand Down
46 changes: 16 additions & 30 deletions tests/compute/requests/ninefold/virtual_machine_tests.rb
Expand Up @@ -3,7 +3,7 @@
tests('success') do


tests("#deploy_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::PENDING_VIRTUAL_MACHINE) do
tests("#deploy_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::VIRTUAL_MACHINE) do
pending if Fog.mocking?
networks = Ninefold[:compute].list_networks

Expand All @@ -16,12 +16,9 @@
:zoneid => Ninefold::Compute::TestSupport::ZONE_ID,
:networkids => networks[0]['id'])
# wait for deployment, stash the job id.
@jobid = newvm['jobid']
@newvmid = newvm['id']
while Ninefold[:compute].query_async_job_result(:jobid => @jobid)['jobstatus'] == 0
sleep 1
end
newvm
result = Ninefold::Compute::TestSupport.wait_for_job(newvm['jobid'])['jobresult']['virtualmachine']
Ninefold::Compute::Formats::VirtualMachines::fill_virtual_machine_data(result)
end

tests("#list_virtual_machines()").formats(Ninefold::Compute::Formats::VirtualMachines::VIRTUAL_MACHINES) do
Expand All @@ -31,22 +28,18 @@
Ninefold::Compute::Formats::VirtualMachines::fill_virtual_machine_data(vms)
end

tests("#reboot_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::ASYNC_VIRTUAL_MACHINE) do
tests("#reboot_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::VIRTUAL_MACHINE) do
pending if Fog.mocking?
job = Ninefold[:compute].reboot_virtual_machine(:id => @newvmid)
while Ninefold[:compute].query_async_job_result(:jobid => job['jobid'])['jobstatus'] == 0
sleep 1
end
job
result = Ninefold::Compute::TestSupport.wait_for_job(job)['jobresult']['virtualmachine']
Ninefold::Compute::Formats::VirtualMachines::fill_virtual_machine_data(result)
end

tests("#stop_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::ASYNC_VIRTUAL_MACHINE) do
tests("#stop_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::VIRTUAL_MACHINE) do
pending if Fog.mocking?
job = Ninefold[:compute].stop_virtual_machine(:id => @newvmid)
while Ninefold[:compute].query_async_job_result(:jobid => job['jobid'])['jobstatus'] == 0
sleep 1
end
job
result = Ninefold::Compute::TestSupport.wait_for_job(job)['jobresult']['virtualmachine']
Ninefold::Compute::Formats::VirtualMachines::fill_virtual_machine_data(result)
end


Expand All @@ -57,25 +50,18 @@
Ninefold::Compute::Formats::VirtualMachines::fill_virtual_machine_data(vms)
end

tests("#start_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::ASYNC_VIRTUAL_MACHINE) do
tests("#start_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::VIRTUAL_MACHINE) do
pending if Fog.mocking?
job = Ninefold[:compute].start_virtual_machine(:id => @newvmid)
while Ninefold[:compute].query_async_job_result(:jobid => job['jobid'])['jobstatus'] == 0
sleep 1
end
job
result = Ninefold::Compute::TestSupport.wait_for_job(job)['jobresult']['virtualmachine']
Ninefold::Compute::Formats::VirtualMachines::fill_virtual_machine_data(result)
end

tests("#destroy_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::ASYNC_VIRTUAL_MACHINE) do
tests("#destroy_virtual_machine()").formats(Ninefold::Compute::Formats::VirtualMachines::VIRTUAL_MACHINE) do
pending if Fog.mocking?
destvm = Ninefold[:compute].destroy_virtual_machine(:id => @newvmid)

# wait for destroy, stash the job id.
@jobid = destvm['jobid']
while Ninefold[:compute].query_async_job_result(:jobid => @jobid)['jobstatus'] == 0
sleep 1
end
destvm
job = Ninefold[:compute].destroy_virtual_machine(:id => @newvmid)
result = Ninefold::Compute::TestSupport.wait_for_job(job)['jobresult']['virtualmachine']
Ninefold::Compute::Formats::VirtualMachines::fill_virtual_machine_data(result)
end

end
Expand Down

0 comments on commit 3fe91ca

Please sign in to comment.