You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2011/04/08 17:04:28 UTC

svn commit: r1090287 [1/21] - in /incubator/deltacloud/trunk/server: ./ lib/deltacloud/drivers/rhevm/ tests/ tests/drivers/rhevm/ tests/drivers/rhevm/fixtures/

Author: mfojtik
Date: Fri Apr  8 15:04:27 2011
New Revision: 1090287

URL: http://svn.apache.org/viewvc?rev=1090287&view=rev
Log:
Added RHEV-M unit tests

Added:
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/api_test.rb
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/delete-47029714ecef17a0de559cfb7a4ee13e281fa75a.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/delete-79f01130866a0046140ada9d82b43f67173664e3.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-07591e87170082376368945386fe89e7df3a4f7e.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-0f50173e8cba941468c17039c11d63e940e351f7.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-163a76f09d41670494c54dcd2eab373a5588683d.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-2e0a6ff922e6b22884bdbc6d2320181fb5df2c08.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-31b55347b5adb27c83cd59e66ba8d39716736db0.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-5f04d9148e4e16d1f5c75536f58189cfa1c24d6f.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-61306a27a37ce8ff87e6e5501f71f0b37b8c89ac.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-620965396fa389179e1f43d6a4e553d9a8ad9523.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-68b0108a904ff68196f211620bc43aa0346ba651.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-6c91ab81e916b9caefd5571489e3d3d4069467b8.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-84898e68d65b04b154bb0af07b4c227c9fb78ced.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-dd7d02910e76e86ce94d113c1175f2ddb2ec711d.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-ebe038d5a1a303f6f636b5b9677d9f3f539253ef.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-f1d6fe5300bb627fd7d85a415b2e1a6ffe3194af.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/get-f3ae8b88ce387807e428e844a0863ad60b7b3f08.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/post-2f12ca06cbcda70b8067386a4a8550070b1c0101.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/post-2f79c1a608a5baca7fe2df4dd9b9bc480f23b5ab.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/post-62450ce8956a66b347580c422b780152504f64a2.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/post-870e41a661d593ec659e51fd4230a3c6629c6763.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/post-8df81dde5740cfcc811f8cc6a144ac381f417a77.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/fixtures/post-e6ef0d15fa869bf38d040855c89472533ae30df8.yml
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/hardware_profiles_test.rb
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/images_test.rb
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/instances_test.rb
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/realms_test.rb
    incubator/deltacloud/trunk/server/tests/drivers/rhevm/setup.rb
Modified:
    incubator/deltacloud/trunk/server/Rakefile
    incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
    incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb
    incubator/deltacloud/trunk/server/tests/common.rb

Modified: incubator/deltacloud/trunk/server/Rakefile
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/Rakefile?rev=1090287&r1=1090286&r2=1090287&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/Rakefile (original)
+++ incubator/deltacloud/trunk/server/Rakefile Fri Apr  8 15:04:27 2011
@@ -46,6 +46,14 @@ namespace :test do
     t.warning = false
   }
 
+  desc "Run rackspace unit tests"
+  Rake::TestTask.new("rhevm") { |t|
+    t.test_files = [ 'tests/common.rb', 'tests/drivers/rhevm/setup.rb' ] + FileList.new('tests/drivers/rhevm/*_test.rb')
+    t.options = "-v -v"
+    t.verbose = true
+    t.warning = false
+  }
+
 
 end
 

Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb?rev=1090287&r1=1090286&r2=1090287&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb Fri Apr  8 15:04:27 2011
@@ -111,14 +111,10 @@ module RHEVM
         :authorization => "Basic " + Base64.encode64("#{@username}:#{@password}"),
         :accept => 'application/xml',
       }
-      if ENV['RACK_ENV'] == 'test'
-        response = mock_request(:get, uri, {}, headers)
-      else
-        begin
-          response = RestClient.get(uri, headers).to_s
-        rescue Exception => e
-          raise ConnectionError::new(500, "GET #{uri}", "#{e.message} (GET #{uri})", e.backtrace)
-        end
+      begin
+        response = RestClient.get(uri, headers).to_s
+      rescue Exception => e
+        raise ConnectionError::new(500, "GET #{uri}", "#{e.message} (GET #{uri})", e.backtrace)
       end
       response
     end
@@ -130,12 +126,7 @@ module RHEVM
         :content_type => 'application/xml'
       }
       params = "<action/>" if params.size==0
-      if ENV['RACK_ENV'] == 'test'
-        response = mock_request(:post, uri, params, headers)
-      else
-        response = RestClient.post(uri, params, headers).to_s
-      end
-      response
+      RestClient.post(uri, params, headers).to_s
     end
 
     def discover_entry_points()
@@ -160,33 +151,6 @@ module RHEVM
       end
     end
 
-    def mock_request(*args)
-      http_method, request_uri, params, headers = args[0].to_sym, args[1], args[2], args[3]
-      params ||= {}
-      fixture_filename = "#{Digest::MD5.hexdigest("#{http_method}#{request_uri}#{params.inspect}#{headers}")}.fixture"
-      begin
-        read_fake_url(fixture_filename)[2]["body"]
-      rescue FixtureNotFound
-        if http_method.eql?(:get)
-          r = RestClient.send(http_method, request_uri, headers)
-        elsif http_method.eql?(:post)
-          r = RestClient.send(http_method, request_uri, params, headers)
-        else
-          r = RestClient.send(http_method, request_uri, headers)
-        end
-        response = {
-          :body => r.to_s,
-          :status => r.code,
-          :content_type => r.headers[:content_type]
-        }
-        fixtures_dir = "../tests/rhevm/support/fixtures/"
-        FileUtils.mkdir_p(fixtures_dir)
-        File.open(File::join(fixtures_dir, fixture_filename), 'w') do |f|
-          f.puts [request_uri, http_method, response].to_json
-        end and retry
-      end
-    end
-
     def singularize(str)
       str.gsub(/s$/, '')
     end

Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb?rev=1090287&r1=1090286&r2=1090287&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb Fri Apr  8 15:04:27 2011
@@ -134,13 +134,6 @@ class RHEVMDriver < Deltacloud::BaseDriv
     filter_on( inst_arr, :state, opts )
   end
 
-  def reboot_instance(credentials, id)
-    client = new_client(credentials)
-    safely do
-      client.vm_action(:reboot, id)
-    end
-  end
-
   def start_instance(credentials, id)
     client = new_client(credentials)
     safely do
@@ -151,7 +144,7 @@ class RHEVMDriver < Deltacloud::BaseDriv
   def stop_instance(credentials, id)
     client = new_client(credentials)
     safely do
-      client.vm_action(:suspend, id)
+      client.vm_action(:shutdown, id)
     end
   end
 
@@ -181,14 +174,13 @@ class RHEVMDriver < Deltacloud::BaseDriv
       # FIXME: Condor is using GlobalJobId here as a name, which is malformed
       #        and contains >50 characters
       #
-      # FIXME: Memory calculation is wrong in Conductor, they are sending
-      #        value/1024. Original line is here.
+      # FIXME: Memory calculation is wrong in Conductor, they are sending value/1024
+      #
       vm_name = opts[:name] ? "<name>#{opts[:name].split("#").last}</name>" : "<name>#{Time.now.to_i}</name>"
       vm_template = "<template id='#{image_id}'/>"
       vm_cluster = opts[:realm_id] ? "<cluster id='#{opts[:realm_id]}'/>" : "<cluster id='0'/>"
       vm_type = opts[:hwp_id] ? "<type>#{opts[:hwp_id].upcase}</type>" : "<type>DESKTOP</type>"
-      #vm_memory = opts[:hwp_memory] ? "<memory>#{opts[:hwp_memory].to_i*1024*1024}</memory>"  : ''
-      vm_memory = opts[:hwp_memory] ? "<memory>#{opts[:hwp_memory].to_i*1024}</memory>"  : '' # Conductor workaround
+      vm_memory = opts[:hwp_memory] ? "<memory>#{opts[:hwp_memory].to_i*1024*1024}</memory>"  : ''
       vm_cpus = opts[:hwp_cpu] ? "<cpu><topology cores='#{opts[:hwp_cpu]}' sockets='1'/></cpu>"  : ''
       xml = "<vm>"+
         vm_name +
@@ -217,9 +209,9 @@ class RHEVMDriver < Deltacloud::BaseDriv
 
   def new_client(credentials)
     url = (Thread.current[:provider] || ENV['API_PROVIDER'] || provider_uri)
-    #safely do
+    safely do
       ::RHEVM::Client.new(credentials.user, credentials.password, url)
-    #end
+    end
   end
 
   def convert_instance(client, inst)
@@ -317,8 +309,8 @@ class RHEVMDriver < Deltacloud::BaseDriv
   # how to pass those message to our exception handling tool)
   def catched_exceptions_list
     {
-      :auth => RestClient::Unauthorized,
-      :error => RestClient::InternalServerError,
+      :auth => [RestClient::Unauthorized],
+      :error => [RestClient::InternalServerError],
       :glob => [ /(RestClient|RHEVM)::(\w+)/ ]
     }
   end

Modified: incubator/deltacloud/trunk/server/tests/common.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/tests/common.rb?rev=1090287&r1=1090286&r2=1090287&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/tests/common.rb (original)
+++ incubator/deltacloud/trunk/server/tests/common.rb Fri Apr  8 15:04:27 2011
@@ -101,7 +101,7 @@ module DeltacloudTestCommon
         get(uri, params || {}, opts[:auth] ? authenticate(opts) : {})
       end
     else
-        get(uri, params || {}, opts[:auth] ? authenticate(opts) : {})
+      get(uri, params || {}, opts[:auth] ? authenticate(opts) : {})
     end
     last_response.status.should_not == 401
   end

Added: incubator/deltacloud/trunk/server/tests/drivers/rhevm/api_test.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/tests/drivers/rhevm/api_test.rb?rev=1090287&view=auto
==============================================================================
--- incubator/deltacloud/trunk/server/tests/drivers/rhevm/api_test.rb (added)
+++ incubator/deltacloud/trunk/server/tests/drivers/rhevm/api_test.rb Fri Apr  8 15:04:27 2011
@@ -0,0 +1,39 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+
+module RHEVMTest
+
+  class ApiTest < Test::Unit::TestCase
+    include Rack::Test::Methods
+
+    def app
+      Sinatra::Application
+    end
+
+    def test_01_it_returns_entry_points
+      get_auth_url '/api;driver=rhevm?force_auth=1'
+      (last_xml_response/'/api').first[:driver].should == 'rhevm'
+      (last_xml_response/'/api/link').length.should > 0
+    end
+
+    def test_02_it_has_rhevm_features
+      get_url '/api;driver=rhevm'
+      features = (last_xml_response/'/api/link[@rel="instances"]/feature').collect { |f| f[:name] }
+      features.include?('user_name').should == true
+      features.include?('hardware_profiles').should == true
+      features.length.should == 2
+    end
+
+    def test_03_it_has_rhevm_collections
+      get_url '/api;driver=rhevm'
+      collections = (last_xml_response/'/api/link').collect { |f| f[:rel] }
+      collections.include?('instance_states').should == true
+      collections.include?('instances').should == true
+      collections.include?('images').should == true
+      collections.include?('realms').should == true
+      collections.include?('hardware_profiles').should == true
+      collections.length.should == 8
+    end
+
+  end
+end