You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2011/03/24 14:39:13 UTC
Initial RackSpace unit tests
Hi,
This patch will enable a quick unit test for Rackspace driver.
It tests all collections and instance creation and management.
How can I run tests?
1. Edit "tests/drivers/rackspace/setup.rb" and put your Rackspace credentials here
2. Run: rake test:rackspace
How much it will cost?
With tests you launch *1* instance in Rackspace for ~1 minute and this instance will
be destroyed with another test.
In case this test suite fail, I recommending to look into your Rackspace account
and destroy created instance manually.
What about Mock tests?
Yes, they are still here: rake test:mock
PS: Additionally this patch fixing an issue I found in Rackspace driver during my work. When you query
for non-existing instance id it throwed an 500 error with Exception. I replaced it with 404, which is
correct HTTP code for this case.
Also I removed unnecessary call to images when you're starting new instance. Image ID is passed throught
param[:image_id] and additional checking here is not needed.
-- Michal
[PATCH core 1/2] Added basic RackSpace unit tests
Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>
---
server/Rakefile | 26 ++++--
server/tests/common.rb | 4 +-
server/tests/drivers/mock/setup.rb | 3 +
server/tests/drivers/rackspace/api_test.rb | 41 +++++++++
.../drivers/rackspace/hardware_profiles_test.rb | 53 +++++++++++
server/tests/drivers/rackspace/images_test.rb | 40 ++++++++
server/tests/drivers/rackspace/instances_test.rb | 95 ++++++++++++++++++++
server/tests/drivers/rackspace/realms_test.rb | 36 ++++++++
server/tests/drivers/rackspace/setup.rb | 3 +
server/tests/drivers/rackspace/setup_test.rb | 1 +
10 files changed, 293 insertions(+), 9 deletions(-)
create mode 100644 server/tests/drivers/mock/setup.rb
create mode 100644 server/tests/drivers/rackspace/api_test.rb
create mode 100644 server/tests/drivers/rackspace/hardware_profiles_test.rb
create mode 100644 server/tests/drivers/rackspace/images_test.rb
create mode 100644 server/tests/drivers/rackspace/instances_test.rb
create mode 100644 server/tests/drivers/rackspace/realms_test.rb
create mode 100644 server/tests/drivers/rackspace/setup.rb
create mode 100644 server/tests/drivers/rackspace/setup_test.rb
diff --git a/server/Rakefile b/server/Rakefile
index e562cb5..3453bfe 100644
--- a/server/Rakefile
+++ b/server/Rakefile
@@ -28,12 +28,26 @@ begin
rescue LoadError
end
-desc "Run basic unit tests"
-Rake::TestTask.new("test") { |t|
- t.test_files = FileList.new('tests/**/*_test.rb')
- t.verbose = true
- t.warning = false
-}
+namespace :test do
+
+ desc "Run mock unit tests"
+ Rake::TestTask.new("mock") { |t|
+ t.test_files = FileList.new('tests/drivers/mock/*_test.rb') + FileList.new('tests/rabbit_test.rb')
+ t.options = "-v -v"
+ t.verbose = true
+ t.warning = false
+ }
+
+ desc "Run rackspace unit tests"
+ Rake::TestTask.new("rackspace") { |t|
+ t.test_files = ['tests/common.rb', 'tests/drivers/rackspace/setup.rb'] + FileList.new('tests/drivers/rackspace/*_test.rb')
+ t.options = "-v -v"
+ t.verbose = true
+ t.warning = false
+ }
+
+
+end
begin
require 'yard'
diff --git a/server/tests/common.rb b/server/tests/common.rb
index 6efe089..e134388 100644
--- a/server/tests/common.rb
+++ b/server/tests/common.rb
@@ -1,6 +1,7 @@
$:.unshift File.join(File.dirname(__FILE__), '..')
require 'rubygems'
+require 'yaml'
require 'base64'
require 'test/unit'
require 'spec'
@@ -10,11 +11,8 @@ require 'json'
# Set proper environment variables for running test
ENV['RACK_ENV'] = 'test'
-ENV['API_DRIVER'] = 'mock'
ENV['API_HOST'] = 'localhost'
ENV['API_PORT'] = '4040'
-ENV['API_USER'] = 'mockuser'
-ENV['API_PASSWORD'] = 'mockpassword'
require 'server'
diff --git a/server/tests/drivers/mock/setup.rb b/server/tests/drivers/mock/setup.rb
new file mode 100644
index 0000000..60a7094
--- /dev/null
+++ b/server/tests/drivers/mock/setup.rb
@@ -0,0 +1,3 @@
+ENV['API_DRIVER'] = "mock"
+ENV['API_USER'] = 'mockuser'
+ENV['API_PASSWORD'] = 'mockpassword'
diff --git a/server/tests/drivers/rackspace/api_test.rb b/server/tests/drivers/rackspace/api_test.rb
new file mode 100644
index 0000000..e351388
--- /dev/null
+++ b/server/tests/drivers/rackspace/api_test.rb
@@ -0,0 +1,41 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+
+module RackspaceTest
+
+ class ApiTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ def test_01_it_returns_entry_points
+ do_xml_request '/api;driver=rackspace/?force_auth=1', {}, true
+ (last_xml_response/'/api').first[:driver].should == 'rackspace'
+ (last_xml_response/'/api/link').length.should > 0
+ end
+
+ def test_02_it_has_rackspace_features
+ do_xml_request '/api;driver=rackspace'
+ features = (last_xml_response/'/api/link[@rel="instances"]/feature').collect { |f| f[:name] }
+ features.include?('user_name').should == true
+ features.include?('authentication_password').should == true
+ features.include?('user_files').should == true
+ features.length.should == 3
+ end
+
+ def test_03_it_has_rackspace_collections
+ do_xml_request '/api;driver=rackspace'
+ 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?('buckets').should == true
+ collections.include?('realms').should == true
+ collections.include?('hardware_profiles').should == true
+ collections.length.should == 6
+ end
+
+ end
+end
diff --git a/server/tests/drivers/rackspace/hardware_profiles_test.rb b/server/tests/drivers/rackspace/hardware_profiles_test.rb
new file mode 100644
index 0000000..90720a4
--- /dev/null
+++ b/server/tests/drivers/rackspace/hardware_profiles_test.rb
@@ -0,0 +1,53 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+
+module RackspaceTest
+
+ class HardwareProfilesTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ def test_01_it_returns_hardware_profiles
+ do_xml_request '/api;driver=rackspace/hardware_profiles', {}, true
+ (last_xml_response/'hardware_profiles/hardware_profile').length.should == 7
+ end
+
+ def test_02_each_hardware_profile_has_a_name
+ do_xml_request '/api;driver=rackspace/hardware_profiles', {}, true
+ (last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
+ (profile/'name').text.should_not == nil
+ (profile/'name').text.should_not == ''
+ end
+ end
+
+ def test_03_each_hardware_profile_has_correct_properties
+ do_xml_request '/api;driver=rackspace/hardware_profiles', {}, true
+ (last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
+ (profile/'property[@name="architecture"]').first[:value].should == 'x86_64'
+ (profile/'property[@name="memory"]').first[:unit].should == 'MB'
+ (profile/'property[@name="memory"]').first[:kind].should == 'fixed'
+ (profile/'property[@name="storage"]').first[:unit].should == 'GB'
+ (profile/'property[@name="storage"]').first[:kind].should == 'fixed'
+ end
+ end
+
+ def test_04_it_returns_single_hardware_profile
+ do_xml_request '/api;driver=rackspace/hardware_profiles/1', {}, true
+ (last_xml_response/'hardware_profile/name').first.text.should == '1'
+ (last_xml_response/'hardware_profile/property[@name="architecture"]').first[:value].should == 'x86_64'
+ (last_xml_response/'hardware_profile/property[@name="memory"]').first[:value].should == '256'
+ (last_xml_response/'hardware_profile/property[@name="storage"]').first[:value].should == '10'
+ end
+
+ def test_05_it_filter_hardware_profiles
+ do_xml_request '/api;driver=rackspace/hardware_profiles?architecture=i386', {}, true
+ (last_xml_response/'hardware_profiles/hardware_profile').length.should == 0
+ do_xml_request '/api;driver=rackspace/hardware_profiles?architecture=x86_64', {}, true
+ (last_xml_response/'hardware_profiles/hardware_profile').length.should == 7
+ end
+
+ end
+end
diff --git a/server/tests/drivers/rackspace/images_test.rb b/server/tests/drivers/rackspace/images_test.rb
new file mode 100644
index 0000000..76dc73c
--- /dev/null
+++ b/server/tests/drivers/rackspace/images_test.rb
@@ -0,0 +1,40 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+
+module RackspaceTest
+
+ class ImagesTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ def test_01_it_returns_images
+ do_xml_request '/api;driver=rackspace/images', {}, true
+ (last_xml_response/'images/image').length.should > 0
+ end
+
+ def test_02_each_image_has_correct_properties
+ do_xml_request '/api;driver=rackspace/images', {}, true
+ (last_xml_response/'images/image').each do |image|
+ (image/'name').should_not == nil
+ (image/'name').should_not == ''
+ (image/'description').should_not == nil
+ (image/'description').should_not == ''
+ (image/'architecture').should_not == nil
+ (image/'architecture').should_not == ''
+ (image/'state').text.should == 'ACTIVE'
+ (image/'owner_id').text.should == ENV['API_USER']
+ (image/'actions/link').length == 1
+ (image/'actions/link').first[:rel] == 'create_instance'
+ end
+ end
+
+ def test_03_it_returns_single_image
+ do_xml_request '/api;driver=rackspace/images/71', {}, true
+ (last_xml_response/'image').length.should == 1
+ end
+
+ end
+end
diff --git a/server/tests/drivers/rackspace/instances_test.rb b/server/tests/drivers/rackspace/instances_test.rb
new file mode 100644
index 0000000..1338af2
--- /dev/null
+++ b/server/tests/drivers/rackspace/instances_test.rb
@@ -0,0 +1,95 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+
+module RackspaceTest
+
+ class InstancesTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ def test_01_it_can_create_instance_without_hardware_profile
+ params = {
+ :image_id => '71',
+ :'api[driver]' => 'rackspace',
+ }
+ header 'Accept', accept_header(:xml)
+ post '/api/instances', params, authenticate
+ last_response.status.should == 201 # Created
+ @@instance = Nokogiri::XML(last_response.body)
+ (@@instance/'instance').length.should > 0
+ (@@instance/'instance/name').first.text.should_not == nil
+ (@@instance/'instance/name').first.text.should_not == nil
+ (@@instance/'instance/owner_id').first.text.should_not == ''
+ (@@instance/'instance/owner_id').first.text.should == ENV['API_USER']
+ (@@instance/'instance/state').first.text.should == 'PENDING'
+ end
+
+ def test_02_created_instance_has_correct_authentication
+ (@@instance/'instance/authentication').first.should_not == nil
+ (@@instance/'instance/authentication').first[:type].should == 'password'
+ (@@instance/'instance/authentication/login/username').first.text.should == 'root'
+ (@@instance/'instance/authentication/login/password').first.text.should_not == nil
+ (@@instance/'instance/authentication/login/password').first.text.should_not == ''
+ end
+
+ def test_03_created_instance_has_correct_addresses
+ (@@instance/'instance/public_addresses/address').length.should > 0
+ (@@instance/'instance/public_addresses/address').first.text.should_not == nil
+ (@@instance/'instance/public_addresses/address').first.text.should_not == ''
+ end
+
+ def test_04_created_instance_goes_to_running_state
+ 20.times do
+ do_xml_request "/api;driver=rackspace/instances/#{(@@instance/'instance').first[:id]}", {}, true
+ last_response.status.should_not == 500
+ state = (last_xml_response/'instance/state').first.text
+ break if state=='RUNNING'
+ sleep(5)
+ end
+ @@instance = last_xml_response
+ do_xml_request "/api;driver=rackspace/instances/#{(@@instance/'instance').first[:id]}", {}, true
+ last_response.status.should_not == 500
+ (last_xml_response/'instance/state').first.text.should == 'RUNNING'
+ (last_xml_response/'instance/actions/link[@rel="reboot"]').first.should_not == nil
+ (last_xml_response/'instance/actions/link[@rel="stop"]').first.should_not == nil
+ (last_xml_response/'instance/actions/link[@rel="create_image"]').first.should_not == nil
+ (last_xml_response/'instance/actions/link[@rel="run"]').first.should_not == nil
+ end
+
+ def test_05_created_instance_can_be_rebooted
+ params = {
+ :'api[driver]' => 'rackspace',
+ }
+ header 'Accept', accept_header(:xml)
+ post "/api/instances/#{(@@instance/'instance').first[:id]}/reboot", params, authenticate
+ last_response.status.should == 200
+ 20.times do
+ do_xml_request "/api;driver=rackspace/instances/#{(@@instance/'instance').first[:id]}", {}, true
+ last_response.status.should_not == 500
+ state = (last_xml_response/'instance/state').first.text
+ break if state=='RUNNING'
+ sleep(5)
+ end
+ end
+
+ def test_06_created_instance_can_be_destroyed
+ params = {
+ :'api[driver]' => 'rackspace',
+ }
+ header 'Accept', accept_header(:xml)
+ post "/api/instances/#{(@@instance/'instance').first[:id]}/stop", params, authenticate
+ last_response.status.should == 200
+ 20.times do
+ do_xml_request "/api;driver=rackspace/instances/#{(@@instance/'instance').first[:id]}", {}, true
+ last_response.status.should_not == 500
+ break if last_response.status == 404
+ sleep(5)
+ end
+ last_response.status.should == 404
+ end
+
+ end
+end
diff --git a/server/tests/drivers/rackspace/realms_test.rb b/server/tests/drivers/rackspace/realms_test.rb
new file mode 100644
index 0000000..ca44d15
--- /dev/null
+++ b/server/tests/drivers/rackspace/realms_test.rb
@@ -0,0 +1,36 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..')
+require 'tests/common'
+
+module RackspaceTest
+
+ class RealmsTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ def test_01_it_returns_realms
+ do_xml_request '/api;driver=rackspace/realms', {}, true
+ (last_xml_response/'realms/realm').length.should == 1
+ end
+
+ def test_02_each_realm_has_a_name
+ do_xml_request '/api;driver=rackspace/realms', {}, true
+ (last_xml_response/'realms/realm').each do |profile|
+ (profile/'name').text.should_not == nil
+ (profile/'name').text.should_not == ''
+ (profile/'name').text.should == 'United States'
+ end
+ end
+
+ def test_03_it_returns_single_realm
+ do_xml_request '/api;driver=rackspace/realms/us', {}, true
+ (last_xml_response/'realm').first[:id].should == 'us'
+ (last_xml_response/'realm/name').first.text.should == 'United States'
+ (last_xml_response/'realm/state').first.text.should == 'AVAILABLE'
+ (last_xml_response/'realm/limit').first.text.should == ''
+ end
+
+ end
+end
diff --git a/server/tests/drivers/rackspace/setup.rb b/server/tests/drivers/rackspace/setup.rb
new file mode 100644
index 0000000..ff56810
--- /dev/null
+++ b/server/tests/drivers/rackspace/setup.rb
@@ -0,0 +1,3 @@
+ENV['API_DRIVER'] = "rackspace"
+ENV['API_USER'] = '<YOUR_RACKSPACE_USERNAME>'
+ENV['API_PASSWORD'] = '<YOUR_RACKSPACE_API_KEY>'
diff --git a/server/tests/drivers/rackspace/setup_test.rb b/server/tests/drivers/rackspace/setup_test.rb
new file mode 100644
index 0000000..5a6b076
--- /dev/null
+++ b/server/tests/drivers/rackspace/setup_test.rb
@@ -0,0 +1 @@
+ENV['API_DRIVER'] = "rackspace"
--
1.7.4.1
[PATCH core 2/2] Fixed Rackspace driver error code when you're trying to get non-existing instance Removed extra call to images when you're starting a new instance.
Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>
---
.../drivers/rackspace/rackspace_driver.rb | 15 +++++++++------
server/server.rb | 8 +++-----
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
index 4363580..c0c93e4 100644
--- a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
+++ b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
@@ -154,13 +154,16 @@ class RackspaceDriver < Deltacloud::BaseDriver
insts = []
safely do
- if opts[:id]
- server = rs.get_server(opts[:id].to_i)
- insts << convert_instance_after_create(server, credentials.user)
- else
- insts = rs.list_servers_detail.collect do |server|
- convert_instance(server, credentials.user)
+ begin
+ if opts[:id]
+ server = rs.get_server(opts[:id].to_i)
+ insts << convert_instance_after_create(server, credentials.user)
+ else
+ insts = rs.list_servers_detail.collect do |server|
+ convert_instance(server, credentials.user)
+ end
end
+ rescue CloudServers::Exception::ItemNotFound
end
end
diff --git a/server/server.rb b/server/server.rb
index 3c4273c..05b715c 100644
--- a/server/server.rb
+++ b/server/server.rb
@@ -363,17 +363,15 @@ END
param :realm_id, :string, :optional
param :hwp_id, :string, :optional
control do
- @image = driver.image(credentials, :id => params[:image_id])
- instance = driver.create_instance(credentials, @image.id, params)
+ @instance = driver.create_instance(credentials, params[:image_id], params)
respond_to do |format|
format.xml do
response.status = 201 # Created
- response['Location'] = instance_url(instance.id)
- @instance = instance
+ response['Location'] = instance_url(@instance.id)
haml :"instances/show"
end
format.html do
- redirect instance_url(instance.id) if instance and instance.id
+ redirect instance_url(@instance.id) if @instance and @instance.id
redirect instances_url
end
end
--
1.7.4.1
Re: Initial RackSpace unit tests
Posted by "marios@redhat.com" <ma...@redhat.com>.
Applies cleanly, 'real' test work fine but mock gave me some errors. I
leave the branch in place and we can talk tomorrow if you'd like me to
run again/do something different etc. Traces (real first and then mock):
========REAL=======
rake test:rackspace
(in /home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud/server)
/usr/bin/ruby -I"lib"
"/home/marios/.gem/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "tests/common.rb"
"tests/drivers/rackspace/setup.rb"
"tests/drivers/rackspace/images_test.rb"
"tests/drivers/rackspace/setup_test.rb"
"tests/drivers/rackspace/hardware_profiles_test.rb"
"tests/drivers/rackspace/instances_test.rb"
"tests/drivers/rackspace/api_test.rb"
"tests/drivers/rackspace/realms_test.rb" -v -v
Loaded suite
/home/marios/.gem/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
test_01_it_returns_entry_points(RackspaceTest::ApiTest): .
test_02_it_has_rackspace_features(RackspaceTest::ApiTest): .
test_03_it_has_rackspace_collections(RackspaceTest::ApiTest): .
test_01_it_returns_hardware_profiles(RackspaceTest::HardwareProfilesTest): .
test_02_each_hardware_profile_has_a_name(RackspaceTest::HardwareProfilesTest):
.
test_03_each_hardware_profile_has_correct_properties(RackspaceTest::HardwareProfilesTest):
.
test_04_it_returns_single_hardware_profile(RackspaceTest::HardwareProfilesTest):
.
test_05_it_filter_hardware_profiles(RackspaceTest::HardwareProfilesTest): .
test_01_it_returns_images(RackspaceTest::ImagesTest): .
test_02_each_image_has_correct_properties(RackspaceTest::ImagesTest): .
test_03_it_returns_single_image(RackspaceTest::ImagesTest): .
test_01_it_can_create_instance_without_hardware_profile(RackspaceTest::InstancesTest):
.
test_02_created_instance_has_correct_authentication(RackspaceTest::InstancesTest):
.
test_03_created_instance_has_correct_addresses(RackspaceTest::InstancesTest):
.
test_04_created_instance_goes_to_running_state(RackspaceTest::InstancesTest):
.
test_05_created_instance_can_be_rebooted(RackspaceTest::InstancesTest): .
test_06_created_instance_can_be_destroyed(RackspaceTest::InstancesTest): .
test_01_it_returns_realms(RackspaceTest::RealmsTest): .
test_02_each_realm_has_a_name(RackspaceTest::RealmsTest): .
test_03_it_returns_single_realm(RackspaceTest::RealmsTest): .
Finished in 140.152888 seconds.
20 tests, 0 assertions, 0 failures, 0 errors
========MOCK=======
rake test:mock
(in /home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud/server)
/usr/bin/ruby -I"lib"
"/home/marios/.gem/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "tests/drivers/mock/images_test.rb"
"tests/drivers/mock/hardware_profiles_test.rb"
"tests/drivers/mock/url_for_test.rb"
"tests/drivers/mock/instance_states_test.rb"
"tests/drivers/mock/instances_test.rb" "tests/drivers/mock/api_test.rb"
"tests/drivers/mock/realms_test.rb" "tests/rabbit_test.rb" -v -v
Loaded suite
/home/marios/.gem/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
test_effective_params(DeltacloudUnitTest::ApiTest): .
test_it_allows_accessing_docs(DeltacloudUnitTest::ApiTest): .
test_it_change_features_after_driver_change(DeltacloudUnitTest::ApiTest): .
test_it_expose_available_drivers(DeltacloudUnitTest::ApiTest): .
test_it_expose_ec2_driver_entrypoints(DeltacloudUnitTest::ApiTest): .
test_it_handles_unsupported_collections(DeltacloudUnitTest::ApiTest): .
test_it_has_correct_attributes_set(DeltacloudUnitTest::ApiTest): .
test_it_respond_to_head(DeltacloudUnitTest::ApiTest): .
test_it_responses_to_html(DeltacloudUnitTest::ApiTest): .
test_it_responses_to_json(DeltacloudUnitTest::ApiTest): .
test_it_returns_entry_points(DeltacloudUnitTest::ApiTest): .
test_it_supports_matrix_params(DeltacloudUnitTest::ApiTest): .
test_it_switches_drivers(DeltacloudUnitTest::ApiTest): .
test_params(DeltacloudUnitTest::ApiTest): .
test_hardware_profiles_have_name(DeltacloudUnitTest::HardwareProfilesTest):
.
test_hardware_profiles_have_unique_id(DeltacloudUnitTest::HardwareProfilesTest):
.
test_hardware_profiles_have_unique_name(DeltacloudUnitTest::HardwareProfilesTest):
.
test_img1_has_correct_attributes(DeltacloudUnitTest::HardwareProfilesTest):
.
test_it_can_filter_using_architecture(DeltacloudUnitTest::HardwareProfilesTest):
F
test_it_can_filter_using_owner_id(DeltacloudUnitTest::HardwareProfilesTest):
F
test_it_can_filter_using_unknown_architecture(DeltacloudUnitTest::HardwareProfilesTest):
.
test_it_can_filter_using_unknown_owner_id(DeltacloudUnitTest::HardwareProfilesTest):
.
test_it_has_correct_attributes_set(DeltacloudUnitTest::HardwareProfilesTest):
.
test_it_has_unique_ids(DeltacloudUnitTest::HardwareProfilesTest): .
test_it_has_valid_urls(DeltacloudUnitTest::HardwareProfilesTest): .
test_it_require_authentication(DeltacloudUnitTest::HardwareProfilesTest): .
test_it_responses_to_html(DeltacloudUnitTest::HardwareProfilesTest): .
test_it_responses_to_json(DeltacloudUnitTest::HardwareProfilesTest): .
test_it_returns_error_on_wrong_name(DeltacloudUnitTest::HardwareProfilesTest):
.
test_it_returns_hardware_profiles(DeltacloudUnitTest::HardwareProfilesTest):
.
test_it_returns_images(DeltacloudUnitTest::HardwareProfilesTest): F
test_it_returns_valid_hardware_profile(DeltacloudUnitTest::HardwareProfilesTest):
.
test_it_returns_valid_image(DeltacloudUnitTest::HardwareProfilesTest): .
test_m1_xlarge_profile_has_correct_attributes(DeltacloudUnitTest::HardwareProfilesTest):
.
test_inst1_has_correct_attributes(DeltacloudUnitTest::InstancesTest): F
test_it_create_a_new_instance_using_image_id(DeltacloudUnitTest::InstancesTest):
F
test_it_create_a_new_instance_using_image_id_and_name(DeltacloudUnitTest::InstancesTest):
F
test_it_create_a_new_instance_using_image_id_and_name_and_hwp(DeltacloudUnitTest::InstancesTest):
F
test_it_has_correct_attributes_set(DeltacloudUnitTest::InstancesTest): .
test_it_has_unique_ids(DeltacloudUnitTest::InstancesTest): .
test_it_require_authentication(DeltacloudUnitTest::InstancesTest): .
test_it_responses_to_html(DeltacloudUnitTest::InstancesTest): F
test_it_responses_to_json(DeltacloudUnitTest::InstancesTest): E
test_it_returns_instances(DeltacloudUnitTest::InstancesTest): F
test_it_returns_valid_realm(DeltacloudUnitTest::InstancesTest): F
test_it_z0_stop_and_start_instance(DeltacloudUnitTest::InstancesTest): E
test_z0_reboot_instance(DeltacloudUnitTest::InstancesTest): E
test_z1_stop_created_instances(DeltacloudUnitTest::InstancesTest): E
test_z2_destroy_created_instances(DeltacloudUnitTest::InstancesTest): E
test_each_state_has_transition(DeltacloudUnitTest::RealmsTest): .
test_it_has_correct_attributes_set(DeltacloudUnitTest::RealmsTest): .
test_it_has_unique_ids(DeltacloudUnitTest::RealmsTest): .
test_it_not_require_authentication(DeltacloudUnitTest::RealmsTest): .
test_it_responses_to_html(DeltacloudUnitTest::RealmsTest): .
test_it_responses_to_json(DeltacloudUnitTest::RealmsTest): .
test_it_responses_to_png(DeltacloudUnitTest::RealmsTest): .
test_it_returns_instance_states(DeltacloudUnitTest::RealmsTest): .
test_it_returns_realms(DeltacloudUnitTest::RealmsTest): .
test_it_returns_valid_realm(DeltacloudUnitTest::RealmsTest): .
test_us_has_correct_attributes(DeltacloudUnitTest::RealmsTest): .
test_it_works_for_root(DeltacloudUnitTest::UrlForTest): .
test_it_works_for_root_absolute(DeltacloudUnitTest::UrlForTest): .
test_it_works_when_given_absolute(DeltacloudUnitTest::UrlForTest): .
test_it_works_when_not_at_root_context(DeltacloudUnitTest::UrlForTest): .
test_it_works_with_spaces(DeltacloudUnitTest::UrlForTest): .
Finished in 0.891265 seconds.
1) Failure:
test_it_can_filter_using_architecture(DeltacloudUnitTest::HardwareProfilesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/images_test.rb:72:in
`test_it_can_filter_using_architecture']:
expected: 1,
got: 0 (using ==)
2) Failure:
test_it_can_filter_using_owner_id(DeltacloudUnitTest::HardwareProfilesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/images_test.rb:61:in
`test_it_can_filter_using_owner_id']:
expected: 1,
got: 0 (using ==)
3) Failure:
test_it_returns_images(DeltacloudUnitTest::HardwareProfilesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:63:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`>'
./tests/drivers/mock/images_test.rb:18:in `test_it_returns_images']:
expected: > 0,
got: 0
4) Failure:
test_inst1_has_correct_attributes(DeltacloudUnitTest::InstancesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:178:in
`test_instance_attributes'
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:40:in
`test_inst1_has_correct_attributes']:
expected: true,
got: false (using ==)
5) Failure:
test_it_create_a_new_instance_using_image_id(DeltacloudUnitTest::InstancesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:76:in
`test_it_create_a_new_instance_using_image_id']:
expected: 201,
got: 403 (using ==)
6) Failure:
test_it_create_a_new_instance_using_image_id_and_name(DeltacloudUnitTest::InstancesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:91:in
`test_it_create_a_new_instance_using_image_id_and_name']:
expected: 201,
got: 403 (using ==)
7) Failure:
test_it_create_a_new_instance_using_image_id_and_name_and_hwp(DeltacloudUnitTest::InstancesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:107:in
`test_it_create_a_new_instance_using_image_id_and_name_and_hwp']:
expected: 201,
got: 403 (using ==)
8) Failure:
test_it_responses_to_html(DeltacloudUnitTest::InstancesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:62:in
`test_it_responses_to_html']:
expected: 200,
got: 403 (using ==)
9) Error:
test_it_responses_to_json(DeltacloudUnitTest::InstancesTest):
Sinatra::RespondTo::MissingTemplate: Sinatra::RespondTo::MissingTemplate
./tests/drivers/mock/../../../tests/../lib/sinatra/respond_to.rb:240:in
`respond_to'
./tests/drivers/mock/../../../tests/../lib/deltacloud/helpers/application_helper.rb:112:in
`report_error'
./tests/drivers/mock/../../../tests/../server.rb:70
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:642:in
`instance_eval'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:642:in
`error_block!'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:637:in
`each'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:637:in
`error_block!'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:626:in
`handle_exception!'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:606:in
`dispatch!'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:412:in
`call!'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:567:in
`instance_eval'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:567:in
`invoke'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:567:in
`catch'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:567:in
`invoke'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:412:in
`call!'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:400:in
`call'
./tests/drivers/mock/../../../tests/../lib/sinatra/rack_driver_select.rb:47:in
`call'
./tests/drivers/mock/../../../tests/../lib/sinatra/rack_matrix_params.rb:82:in
`call'
./tests/drivers/mock/../../../tests/../lib/sinatra/rack_runtime.rb:36:in
`call'
./tests/drivers/mock/../../../tests/../lib/sinatra/rack_etag.rb:42:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-accept-0.4.3/lib/rack/accept/context.rb:22:in
`call'
/usr/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/methodoverride.rb:24:in
`call'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:980:in
`call'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:1006:in
`synchronize'
/usr/lib/ruby/gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb:980:in
`call'
/usr/lib/ruby/gems/1.8/gems/rack-test-0.5.6/lib/rack/mock_session.rb:30:in
`request'
/usr/lib/ruby/gems/1.8/gems/rack-test-0.5.6/lib/rack/test.rb:209:in
`process_request'
/usr/lib/ruby/gems/1.8/gems/rack-test-0.5.6/lib/rack/test.rb:57:in
`get'
./tests/drivers/mock/../../../tests/common.rb:65:in `do_request'
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:50:in
`test_it_responses_to_json'
10) Failure:
test_it_returns_instances(DeltacloudUnitTest::InstancesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:63:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`>'
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:18:in
`test_it_returns_instances']:
expected: > 0,
got: 0
11) Failure:
test_it_returns_valid_realm(DeltacloudUnitTest::InstancesTest)
[/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/fail_with.rb:41:in
`fail_with'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:39:in
`fail_with_message'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:61:in
`__delegate_operator'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:51:in
`eval_match'
/usr/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/operator_matcher.rb:29:in
`=='
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:178:in
`test_instance_attributes'
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:46:in
`test_it_returns_valid_realm']:
expected: true,
got: false (using ==)
12) Error:
test_it_z0_stop_and_start_instance(DeltacloudUnitTest::InstancesTest):
NoMethodError: undefined method `each' for nil:NilClass
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:117:in
`test_it_z0_stop_and_start_instance'
13) Error:
test_z0_reboot_instance(DeltacloudUnitTest::InstancesTest):
NoMethodError: undefined method `each' for nil:NilClass
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:138:in
`test_z0_reboot_instance'
14) Error:
test_z1_stop_created_instances(DeltacloudUnitTest::InstancesTest):
NoMethodError: undefined method `each' for nil:NilClass
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:151:in
`test_z1_stop_created_instances'
15) Error:
test_z2_destroy_created_instances(DeltacloudUnitTest::InstancesTest):
NoMethodError: undefined method `each' for nil:NilClass
./tests/drivers/mock/../../../tests/../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/../../../tests/drivers/mock/instances_test.rb:164:in
`test_z2_destroy_created_instances'
65 tests, 0 assertions, 10 failures, 5 errors
rake aborted!
Command failed with status (1): [/usr/bin/ruby -I"lib"
"/home/marios/.gem/r...]
(See full trace by running task with --trace)
On 24/03/11 15:39, mfojtik@redhat.com wrote:
> Hi,
>
> This patch will enable a quick unit test for Rackspace driver.
> It tests all collections and instance creation and management.
>
> How can I run tests?
>
> 1. Edit "tests/drivers/rackspace/setup.rb" and put your Rackspace credentials here
> 2. Run: rake test:rackspace
>
> How much it will cost?
>
> With tests you launch *1* instance in Rackspace for ~1 minute and this instance will
> be destroyed with another test.
> In case this test suite fail, I recommending to look into your Rackspace account
> and destroy created instance manually.
>
> What about Mock tests?
>
> Yes, they are still here: rake test:mock
>
> PS: Additionally this patch fixing an issue I found in Rackspace driver during my work. When you query
> for non-existing instance id it throwed an 500 error with Exception. I replaced it with 404, which is
> correct HTTP code for this case.
>
> Also I removed unnecessary call to images when you're starting new instance. Image ID is passed throught
> param[:image_id] and additional checking here is not needed.
>
>
> -- Michal
>