new stubbing approach

This commit is contained in:
Anton Chuchkalov 2015-07-02 20:17:25 +04:00
parent 7d6b5410be
commit b09fab680d
9 changed files with 45 additions and 54 deletions

View File

@ -62,26 +62,6 @@ class DevopsService
def debug? def debug?
DevopsConfig.config[:debug] DevopsConfig.config[:debug]
end end
# you could check env via
# DevopsService.env.development? or
# DevopsService.env.test? or
# DevopsService.env.production?
def self.env
unless @env
@env = DevopsConfig.config[:env].dup
def @env.test?
self == 'test'
end
def @env.development?
self == 'development'
end
def @env.production?
self == 'production'
end
end
@env
end
end end
def self.create_method name, &block def self.create_method name, &block

View File

@ -0,0 +1,9 @@
module Stubber
def self.stub_providers!
Dir["tests/stubs/providers/*.rb"].each {|file| require file }
end
def self.stub_models!
Dir["tests/stubs/models/*.rb"].each {|file| require file }
end
end

View File

@ -1,13 +0,0 @@
["ec2", "openstack", "static"].each do |provider|
begin
require_relative provider
provider_stub_path = File.expand_path("../#{provider}_stub.rb", __FILE__)
if DevopsService.debug? && File.exists?(provider_stub_path)
require provider_stub_path
end
rescue LoadError => e
puts "Can not load provider '#{provider}': " + e.message
end
end

View File

@ -1,7 +1,7 @@
require "sinatra" require "sinatra"
module Provider module Provider
class ProviderFactory module ProviderFactory
@@providers = {} @@providers = {}
@ -20,9 +20,8 @@ module Provider
end end
def self.init conf def self.init conf
# require providers here to get access to debug properties # require providers here to get access to debug properties
require 'providers/all' require_all
["ec2", "openstack", "static"].each do |p| ["ec2", "openstack", "static"].each do |p|
begin begin
@ -38,5 +37,15 @@ module Provider
end end
end end
def self.require_all
["ec2", "openstack", "static"].each do |provider|
begin
require_relative provider
rescue LoadError => e
puts "Can not load provider '#{provider}': " + e.message
end
end
end
end end
end end

View File

@ -41,6 +41,7 @@ require "routes/v2.0/handlers/stack_template"
require "routes/v2.0/handlers/stack_template_preset" require "routes/v2.0/handlers/stack_template_preset"
require "routes/v2.0/handlers/stack" require "routes/v2.0/handlers/stack"
require "routes/routes_container" require "routes/routes_container"
require 'lib/stubber'
require "auth/devops_auth" require "auth/devops_auth"
@ -85,6 +86,10 @@ module Devops
::Provider::ProviderFactory.init(config) ::Provider::ProviderFactory.init(config)
#set_up_providers_keys!(::Provider::ProviderFactory.all, mongo) #set_up_providers_keys!(::Provider::ProviderFactory.all, mongo)
if settings.test? || config[:stub_classes]
Stubber.stub_providers!
Stubber.stub_models!
end
end end
def init_mongo def init_mongo

View File

@ -0,0 +1 @@
default: -r features

View File

@ -0,0 +1,13 @@
puts '!!! WARNING: Some StackOpenstack methods are stubbed'
class StackOpenstack < StackBase
def create_stack_in_cloud!
self.cloud_stack_id = '4c712026-dcd5-4664-90b8-0915494c1332'
end
def delete_stack_in_cloud!
true
end
end

View File

@ -1,7 +1,4 @@
# Stub some methods in Ec2 Provider puts '!!! WARNING: Some EC2 methods are stubbed'
puts '!!! WARNING !!!'
puts '!!! Some EC2 methods are stubbed !!!'
class Provider::Ec2 class Provider::Ec2
@ -31,9 +28,10 @@ class Provider::Ec2
def flavors def flavors
[{ [{
"id" => 'test_flavor', "id" => 'test_flavor',
"v_cpus" => 2, "cores" => 2,
"ram" => 256, "ram" => 256,
"disk" => 1000 "disk" => 1000,
"name" => 'name'
}] }]
end end

View File

@ -1,7 +1,4 @@
# Stub some methods in Openstack Provider puts '!!! WARNING: Some Openstack methods are stubbed'
puts '!!! WARNING !!!'
puts '!!! Some Openstack methods are stubbed !!!'
class Provider::Openstack class Provider::Openstack
@ -61,12 +58,4 @@ class Provider::Openstack
] ]
end end
def create_stack(stack)
'4c712026-dcd5-4664-90b8-0915494c1332'
end
def delete_stack(stack)
true
end
end end