From: marios <[email protected]> https://issues.apache.org/jira/browse/DTACLOUD-400
Signed-off-by: marios <[email protected]> --- tests/cimi/part4_test.rb | 59 ++++++++++++++++++++++++++--------------------- tests/cimi/test_helper.rb | 15 +++++++++--- 2 files changed, 45 insertions(+), 29 deletions(-) diff --git a/tests/cimi/part4_test.rb b/tests/cimi/part4_test.rb index 07e780e..a58d5de 100644 --- a/tests/cimi/part4_test.rb +++ b/tests/cimi/part4_test.rb @@ -23,6 +23,8 @@ class AddVolumeToMachine < CIMI::Test::Spec ROOTS = [ "machines" , "volumes" , "volumeConfigurations"] + need_capability("add", "volumes") + # Cleanup for resources created for the test MiniTest::Unit.after_tests { teardown(@@created_resources, api.basic_auth) } @@ -53,17 +55,21 @@ class AddVolumeToMachine < CIMI::Test::Spec # Create a machine to attach the volume cep_json = cep(:accept => :json) machine_add_uri = discover_uri_for("add", "machines") - machine = post(machine_add_uri, - "<MachineCreate xmlns=\"#{CIMI::Test::CIMI_NAMESPACE}\">" + - "<name>cimi_machine</name>" + - "<machineTemplate>" + - "<machineConfig " + - "href=\"" + get_a(cep_json, "machineConfig") + "\"/>" + - "<machineImage " + - "href=\"" + get_a(cep_json, "machineImage") + "\"/>" + - "</machineTemplate>" + - "</MachineCreate>", - {:accept => :json, :content_type => :xml}) +#no point creating machine if we can't run these tests: + begin + discover_uri_for("add", "volumes") # this will raise the RuntimeError + machine = post(machine_add_uri, + "<MachineCreate xmlns=\"#{CIMI::Test::CIMI_NAMESPACE}\">" + + "<name>cimi_machine</name>" + + "<machineTemplate>" + + "<machineConfig " + + "href=\"" + get_a(cep_json, "machineConfig") + "\"/>" + + "<machineImage " + + "href=\"" + get_a(cep_json, "machineImage") + "\"/>" + + "</machineTemplate>" + + "</MachineCreate>", {:accept => :json, :content_type => :xml}) + rescue RuntimeError =>e + end # 4.3: Create a new Volume model :volume, :cache => true do |fmt| @@ -129,7 +135,6 @@ class AddVolumeToMachine < CIMI::Test::Spec # it "should add resource for cleanup" do # @@created_resources[:volumes] << volume.id # end - it "should have a name" do volume.name.wont_be_empty log.info("volume name: " + volume.name) @@ -140,20 +145,22 @@ class AddVolumeToMachine < CIMI::Test::Spec last_response.json["resourceURI"].must_equal RESOURCE_URI.gsub("Create", "") end - log.info("#{machine.location} is the machine id") - volume_add_uri = discover_uri_for("add", "volumes") - volume = post(volume_add_uri, - "<VolumeCreate xmlns=\"#{CIMI::Test::CIMI_NAMESPACE}\">" + - "<name>cimi_volume_for_attach</name>" + - "<description>volume for attach testing</description>" + - "<volumeTemplate>" + - "<volumeConfig href=\"" + get_a(cep_json, "volumeConfig") + "\">" + - "</volumeConfig>" + - "</volumeTemplate>" + - "</VolumeCreate>", - :accept => :json, :content_type => :xml) - - log.info(volume.location + " is the volume id") + if machine # machine not created if we can't create volumes here + log.info("#{machine.location} is the machine id") + volume_add_uri = discover_uri_for("add", "volumes") + volume = post(volume_add_uri, + "<VolumeCreate xmlns=\"#{CIMI::Test::CIMI_NAMESPACE}\">" + + "<name>cimi_volume_for_attach</name>" + + "<description>volume for attach testing</description>" + + "<volumeTemplate>" + + "<volumeConfig href=\"" + get_a(cep_json, "volumeConfig") + "\">" + + "</volumeConfig>" + + "</volumeTemplate>" + + "</VolumeCreate>", + :accept => :json, :content_type => :xml) + log.info(volume.location + " is the volume id") + end + # 4.4: Attach the new Volume to a Machine model :machineWithVolume, :only => :xml do attach_uri = discover_uri_for_subcollection("add", machine.location, "volumes") diff --git a/tests/cimi/test_helper.rb b/tests/cimi/test_helper.rb index 6be43c1..1720dd7 100644 --- a/tests/cimi/test_helper.rb +++ b/tests/cimi/test_helper.rb @@ -108,7 +108,6 @@ module CIMI::Test::Methods def cep(params = {}) get(api.cep_url, params) end - def discover_uri_for(op, collection, operations = nil) unless operations cep_json = cep(:accept => :json) @@ -116,8 +115,8 @@ module CIMI::Test::Methods operations = get(cep_json.json["#{collection}"]["href"], {:accept=> :json}).json["operations"] end op_regex = Regexp.new(op, Regexp::IGNORECASE) # "add" == /add/i - op_uri = operations.inject(""){|res,current| res = current["href"] if current["rel"] =~ op_regex; res} - raise "Couldn't discover the #{collection} Collection #{op} URI" if op_uri.empty? + op_uri = operations.inject(""){|res,current| res = current["href"] if current["rel"] =~ op_regex; res} unless operations.nil? + raise "Couldn't discover the #{collection} Collection #{op} URI" if op_uri.nil? || op_uri.empty? op_uri end @@ -273,6 +272,16 @@ module CIMI::Test::Methods end end + def need_capability(op, collection) + before :each do + begin + discover_uri_for(op, collection) + rescue RuntimeError => e + skip "Server at #{api.cep_url} doesn't support #{op} for #{collection} collection. #{e.message}" + end + end + end + # Perform basic collection checks; +model_name+ is the name of the # method returning the collection model def check_collection(model_name) -- 1.7.11.7
