mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Adding monitoring tests and their required changes
Changes made to lib/bin/rackspace.rb and lib/fog/rackspace.rb were required in order to allow the tests to actually run. Changes to lib/fog/rackspace/monitoring.rb were made in an effort to get failure tests to run without the error that I am purposefully creating causing the test to fail.
This commit is contained in:
parent
6bc5cba9f3
commit
002a918b21
5 changed files with 90 additions and 5 deletions
|
@ -21,6 +21,8 @@ class Rackspace < Fog::Bin
|
||||||
Fog::Rackspace::Identity
|
Fog::Rackspace::Identity
|
||||||
when :databases
|
when :databases
|
||||||
Fog::Rackspace::Databases
|
Fog::Rackspace::Databases
|
||||||
|
when :monitoring
|
||||||
|
Fog::Rackspace::Monitoring
|
||||||
else
|
else
|
||||||
raise ArgumentError, "Unrecognized service: #{key}"
|
raise ArgumentError, "Unrecognized service: #{key}"
|
||||||
end
|
end
|
||||||
|
@ -52,6 +54,8 @@ class Rackspace < Fog::Bin
|
||||||
Fog::Rackspace::Databases.new
|
Fog::Rackspace::Databases.new
|
||||||
when :block_storage
|
when :block_storage
|
||||||
Fog::Rackspace::BlockStorage.new
|
Fog::Rackspace::BlockStorage.new
|
||||||
|
when :monitoring
|
||||||
|
Fog::Rackspace::Monitoring.new
|
||||||
else
|
else
|
||||||
raise ArgumentError, "Unrecognized service: #{key.inspect}"
|
raise ArgumentError, "Unrecognized service: #{key.inspect}"
|
||||||
end
|
end
|
||||||
|
|
|
@ -71,6 +71,7 @@ module Fog
|
||||||
service(:load_balancers, 'rackspace/load_balancers', 'LoadBalancers')
|
service(:load_balancers, 'rackspace/load_balancers', 'LoadBalancers')
|
||||||
service(:identity, 'rackspace/identity', 'Identity')
|
service(:identity, 'rackspace/identity', 'Identity')
|
||||||
service(:databases, 'rackspace/databases', 'Databases')
|
service(:databases, 'rackspace/databases', 'Databases')
|
||||||
|
service(:monitoring, 'rackspace/monitoring', 'Monitoring')
|
||||||
|
|
||||||
def self.authenticate(options, connection_options = {})
|
def self.authenticate(options, connection_options = {})
|
||||||
rackspace_auth_url = options[:rackspace_auth_url]
|
rackspace_auth_url = options[:rackspace_auth_url]
|
||||||
|
|
|
@ -4,6 +4,12 @@ require 'fog/core'
|
||||||
module Fog
|
module Fog
|
||||||
module Rackspace
|
module Rackspace
|
||||||
class Monitoring < Fog::Service
|
class Monitoring < Fog::Service
|
||||||
|
include Fog::Rackspace::Errors
|
||||||
|
|
||||||
|
class IdentifierTaken < Fog::Errors::Error; end
|
||||||
|
class ServiceError < Fog::Rackspace::Errors::ServiceError; end
|
||||||
|
class InternalServerError < Fog::Rackspace::Errors::InternalServerError; end
|
||||||
|
class BadRequest < Fog::Rackspace::Errors::BadRequest; end
|
||||||
|
|
||||||
ENDPOINT = 'https://monitoring.api.rackspacecloud.com/v1.0'
|
ENDPOINT = 'https://monitoring.api.rackspacecloud.com/v1.0'
|
||||||
|
|
||||||
|
@ -11,7 +17,7 @@ module Fog
|
||||||
recognizes :rackspace_auth_url, :persistent, :raise_errors
|
recognizes :rackspace_auth_url, :persistent, :raise_errors
|
||||||
recognizes :rackspace_auth_token, :rackspace_service_url, :rackspace_account_id
|
recognizes :rackspace_auth_token, :rackspace_service_url, :rackspace_account_id
|
||||||
|
|
||||||
model_path 'fog/rackspace/models/monitoring/models'
|
model_path 'fog/rackspace/models/monitoring'
|
||||||
model :entity
|
model :entity
|
||||||
collection :entities
|
collection :entities
|
||||||
model :check
|
model :check
|
||||||
|
@ -29,7 +35,7 @@ module Fog
|
||||||
model :check_type
|
model :check_type
|
||||||
collection :check_types
|
collection :check_types
|
||||||
|
|
||||||
request_path 'fog/rackspace/models/monitoring/requests'
|
request_path 'fog/rackspace/requests/monitoring'
|
||||||
request :list_agent_tokens
|
request :list_agent_tokens
|
||||||
request :list_alarms
|
request :list_alarms
|
||||||
request :list_alarm_examples
|
request :list_alarm_examples
|
||||||
|
@ -61,11 +67,13 @@ module Fog
|
||||||
request :evaluate_alarm_example
|
request :evaluate_alarm_example
|
||||||
|
|
||||||
|
|
||||||
class Mock
|
class Mock < Fog::Rackspace::Service
|
||||||
|
def request(params)
|
||||||
|
Fog::Mock.not_implemented
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Real
|
class Real < Fog::Rackspace::Service
|
||||||
def initialize(options={})
|
def initialize(options={})
|
||||||
@rackspace_api_key = options[:rackspace_api_key]
|
@rackspace_api_key = options[:rackspace_api_key]
|
||||||
@rackspace_username = options[:rackspace_username]
|
@rackspace_username = options[:rackspace_username]
|
||||||
|
|
45
tests/rackspace/requests/monitoring/entity_tests.rb
Normal file
45
tests/rackspace/requests/monitoring/entity_tests.rb
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
Shindo.tests('Fog::Rackspace::Monitoring | entity_tests', ['rackspace','rackspacemonitoring']) do
|
||||||
|
|
||||||
|
pending if Fog.mocking?
|
||||||
|
require 'pp'
|
||||||
|
account = Fog::Rackspace::Monitoring.new
|
||||||
|
entity_id = nil
|
||||||
|
tests('success') do
|
||||||
|
tests('#create new entity').formats(DATA_FORMAT) do
|
||||||
|
response = account.create_entity(:label => "Foo").data
|
||||||
|
entity_id = response[:headers]["X-Object-ID"]
|
||||||
|
response[:status] == 201 ? response : false
|
||||||
|
end
|
||||||
|
tests('#update entity').formats(DATA_FORMAT) do
|
||||||
|
options = { :testing => "Bar"}
|
||||||
|
response = account.update_entity(entity_id,options).data
|
||||||
|
response[:status] == 204 ? response : false
|
||||||
|
end
|
||||||
|
tests('#delete entity').formats(DELETE_DATA_FORMAT) do
|
||||||
|
response = account.delete_entity(entity_id).data
|
||||||
|
response[:status] == 204 ? response : false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
__END__
|
||||||
|
tests('failure') do
|
||||||
|
tests('#create new entity(-1)').raises(Fog::Rackspace::Monitoring::BadRequest) do
|
||||||
|
response = account.create_entity(:label => "").data
|
||||||
|
puts "I made it this far"
|
||||||
|
pp response
|
||||||
|
puts "All done now"
|
||||||
|
end
|
||||||
|
tests('#update entity(-1)').raises(Fog::Rackspace::Monitoring::Notfound) do
|
||||||
|
entity_id = account.create_entity(:label => "Foo").data[:headers]["X-Object-ID"] #setup
|
||||||
|
options = { :testing => "Bar" }
|
||||||
|
response = account.update_entity(entity_id,options)
|
||||||
|
puts ""
|
||||||
|
pp response
|
||||||
|
account.delete_entity(entity_id) #cleanup
|
||||||
|
response
|
||||||
|
end
|
||||||
|
tests('#delete entity(-1)').raises(Fog::Rackspace::Monitoring::NotFound) do
|
||||||
|
account.delete_entity(-1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
27
tests/rackspace/requests/monitoring/helper.rb
Normal file
27
tests/rackspace/requests/monitoring/helper.rb
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
DELETE_HEADERS_FORMAT = {
|
||||||
|
'X-LB' => String,
|
||||||
|
'X-Response-Id' => String,
|
||||||
|
'X-RateLimit-Remaining' => String,
|
||||||
|
'X-RateLimit-Window' => String,
|
||||||
|
'X-RateLimit-Type' => String,
|
||||||
|
'Content-Type' => String,
|
||||||
|
'Date' => String,
|
||||||
|
'X-RateLimit-Limit' => String,
|
||||||
|
'Content-Length' => String
|
||||||
|
}
|
||||||
|
HEADERS_FORMAT = DELETE_HEADERS_FORMAT.merge({
|
||||||
|
'X-Object-ID' => String,
|
||||||
|
'Location' => String,
|
||||||
|
})
|
||||||
|
DATA_FORMAT = {
|
||||||
|
:status => Integer,
|
||||||
|
:body => String,
|
||||||
|
:headers => HEADERS_FORMAT,
|
||||||
|
:remote_ip => String
|
||||||
|
}
|
||||||
|
DELETE_DATA_FORMAT = {
|
||||||
|
:status => Integer,
|
||||||
|
:body => String,
|
||||||
|
:headers => DELETE_HEADERS_FORMAT,
|
||||||
|
:remote_ip => String
|
||||||
|
}
|
Loading…
Reference in a new issue