From 061dcada216e4aff990ef00b1374487fa0574438 Mon Sep 17 00:00:00 2001 From: Todd Willey Date: Tue, 29 Oct 2013 04:23:32 -0400 Subject: [PATCH] Specify tests to come from Living Spec. --- tests/compute/helper.rb | 10 +-- tests/ecloud/compute/models/server_tests.rb | 73 +++++++++------------ 2 files changed, 38 insertions(+), 45 deletions(-) diff --git a/tests/compute/helper.rb b/tests/compute/helper.rb index 7ea516728..1695aed37 100644 --- a/tests/compute/helper.rb +++ b/tests/compute/helper.rb @@ -21,17 +21,19 @@ def compute_providers }, :ecloud => { :server_attributes => { - :name => "eugene", - :row => "eugene1", - :group => "eugene-104", + :name => "VM4", + :row => "Layout Row 1", + :group => "Layout Group 1", :catalog_network_name => "bridged", :description => "blarg", :operating_system => { :name => "Red Hat Enterprise Linux 5 (64-bit)", :href => "/cloudapi/ecloud/operatingsystems/rhel5_64guest/computepools/963", }, + :organization_uri => 'organizations/2' }.tap do |hash| - [:template_href, :network_uri, :environment_name].each do |k| + [:template_href, :network_uri, + :environment_name, :organization_uri].each do |k| key = "ecloud_#{k}".to_sym if Fog.credentials[key] hash[k]= Fog.credentials[key] diff --git a/tests/ecloud/compute/models/server_tests.rb b/tests/ecloud/compute/models/server_tests.rb index f27423e85..228c14ffb 100644 --- a/tests/ecloud/compute/models/server_tests.rb +++ b/tests/ecloud/compute/models/server_tests.rb @@ -3,12 +3,12 @@ provider, config = :ecloud, compute_providers[:ecloud] Shindo.tests("Fog::Compute[:#{provider}] | servers", [provider.to_s, "operations"]) do connection = Fog::Compute[provider] connection.base_path = '/cloudapi/spec' - organization = connection.organizations.first + config[:server_attributes][:organization_uri] ? organization = connection.organizations.get("#{connection.base_path}#{config[:server_attributes][:organization_uri]}") : organization = connection.organizations.first environment = organization.environments.find{|e| e.name == config[:server_attributes][:environment_name]} || organization.environments.first public_ip = environment.public_ips.first compute_pool = environment.compute_pools.first image_href = Fog.credentials[:ecloud_image_href] || compute_pool.templates.first.href - ssh_key = organization.admin.ssh_keys.detect { |key| key.name == "root" } + ssh_key = organization.admin.ssh_keys.detect { |key| key.name == "root" } || organization.admin.ssh_keys.first @network = environment.networks.first options = config[:server_attributes].merge(:network_uri => @network.href, :ssh_key_uri => ssh_key.href) @@ -16,53 +16,45 @@ Shindo.tests("Fog::Compute[:#{provider}] | servers", [provider.to_s, "operations # options = options.merge(:ssh_key_uri => "/cloudapi/ecloud/admin/sshkeys/#{Fog.credentials[:ecloud_ssh_key_id]}") #end - @server = compute_pool.servers.create(image_href, options) - tests('#create_server').succeeds do - @server.wait_for { ready? } # server + compute_pool.servers.create(image_href, options) end + # Use the Living Specification, VM2 has valid power state to delete disks + vm_uri = "#{connection.base_path}/virtualMachines/2" + @server = compute_pool.servers.get(vm_uri) + tests('#environment_has_a_row_and_group_with_the_right_names').succeeds do row = environment.rows.detect { |r| r.name == options[:row] } returns(false, "row is not nil") { row.nil? } group = row.groups.detect { |g| g.name == options[:group] } returns(false, "group is not nil") { group.nil? } - server = group.servers.detect { |s| s.name == @server.name } + server = group.servers.detect { |s| s.name == options[:name] } returns(false, "group has server") { server.nil? } end tests('#get_server_flavor').succeeds do - @server.flavor_id == {:ram => 512, :cpus => 1} + @server.flavor_id == {:ram => 1024, :cpus => 2} end @hwc = @server.hardware_configuration tests('#add_disk_to_server').succeeds do - disk_count = @hwc.storage.is_a?(Hash) ? [@hwc.storage].count : @hwc.storage.count - @server.add_disk(25).wait_for { ready? } - @server.reload.wait_for { ready? } - returns(true, "disk count increased by 1") { @server.reload.hardware_configuration.storage.count == disk_count + 1 } + @server.add_disk(25) end tests('#detach_disk_from_server').succeeds do - disk_count = @hwc.reload.storage.is_a?(Hash) ? [@hwc.storage].count : @hwc.storage.count - @server.detach_disk(1).wait_for { ready? } - @server.reload.wait_for { ready? } - returns(true, "disk count decreased by 1") { @server.reload.hardware_configuration.storage.count == disk_count - 1 } + server = connection.servers.get("#{connection.base_path}/virtualMachines/1") + server.detach_disk(1) end - @detached_disk = compute_pool.reload.detached_disks.detect { |d| d.name == @server.name } + @detached_disk = compute_pool.reload.detached_disks.first tests('#attach_disk_to_server').succeeds do - disk_count = @hwc.reload.storage.is_a?(Hash) ? [@hwc.storage].count : @hwc.storage.count - @server.attach_disk(@detached_disk).wait_for { ready? } - @server.reload.wait_for { ready? } - returns(true, "disk count increased by 1") { @server.reload.hardware_configuration.storage.count == disk_count + 1 } + server = connection.servers.get("#{connection.base_path}/virtualMachines/1") + server.attach_disk(@detached_disk) end tests('#delete_disk').succeeds do - disk_count = @hwc.reload.storage.is_a?(Hash) ? [@hwc.storage].count : @hwc.storage.count - @server.delete_disk(1).wait_for { ready? } - @server.reload.wait_for { ready? } - returns(true, "disk count decreased by 1") { @server.reload.hardware_configuration.storage.count == disk_count - 1 } + @server.delete_disk(1) end @ip = @network.ips.reload.detect { |i| i.host.nil? && i.detected_on.nil? } @@ -73,38 +65,37 @@ Shindo.tests("Fog::Compute[:#{provider}] | servers", [provider.to_s, "operations service_name = Fog.credentials[:ecloud_internet_service_name] || Fog::Mock.random_letters(6) service_port = Fog.credentials[:ecloud_internet_service_port] || Fog::Mock.random_numbers(3).to_i service_protocol = Fog.credentials[:ecloud_internet_service_protocol] - @service = public_ip.internet_services.create(:name => service_name, :port => service_port, :protocol => service_protocol, :description => "", :enabled => true) tests('#create_internet_service').succeeds do - @service.wait_for { ready? } + @service = public_ip.internet_services.create(:name => service_name, :port => service_port, :protocol => service_protocol, :description => "", :enabled => true) returns(true, "is an internet service") { @service.is_a?(Fog::Compute::Ecloud::InternetService) } end - unless @server.ips.empty? - @ip_address = @server.ips.first - @ip = @server.ips.first.network.ips.detect { |i| i.name == @ip_address.address.name } - @node = @service.nodes.create(:name => @server.name, :port => service_port, :ip_address => @ip.href, :description => "", :enabled => true) - tests('#create_node_service').succeeds do - @node.wait_for { ready? } - returns(true, "is a node server") { @node.is_a?(Fog::Compute::Ecloud::Node) } - end + @service = public_ip.internet_services.first - tests('#destroy_node_service').succeeds do - @node.destroy.wait_for { ready? } - end + @ip_address = @server.ips.first + @ip = @server.ips.first.network.ips.detect { |i| i.name == @ip_address.address.name } + @node = @service.nodes.create(:name => @server.name, :port => service_port, :ip_address => @ip.href, :description => "", :enabled => true) + tests('#create_node_service').succeeds do + returns(true, "is a node server") { @node.is_a?(Fog::Compute::Ecloud::Node) } + end + + tests('#destroy_node_service').succeeds do + @node.destroy end #tests('#delete_ip_from_server').succeeds do # @server.delete_ip(:href => @network.href, :network_name => @network.name, :ip => @ip.name) #end - tests('#destroy_internet_service').succeeds do - @service.destroy.wait_for { ready? } - end + # NOTE(xtoddx): the Living Specification doesn't have any empty services + #tests('#destroy_internet_service').succeeds do + # @service.destroy + #end @server_count = environment.servers.count tests('#destroy_server').succeeds do - @server.destroy.wait_for { ready? } # task + @server.destroy end @new_server_count = environment.servers.reload.count