From e273848e5bf6ec88ec61ef7dd133bcd1b9326a8a Mon Sep 17 00:00:00 2001 From: Eagle Chen Date: Mon, 19 Nov 2012 18:29:24 +0800 Subject: [PATCH] add unit tests for mysql unprovision Change-Id: I065c96b244f0680aa23d101884b705d647525a96 --- ng/mysql/lib/mysql_service/without_warden.rb | 2 ++ ng/mysql/spec/mysql_node_spec.rb | 30 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/ng/mysql/lib/mysql_service/without_warden.rb b/ng/mysql/lib/mysql_service/without_warden.rb index 98ad85b7..050e4823 100644 --- a/ng/mysql/lib/mysql_service/without_warden.rb +++ b/ng/mysql/lib/mysql_service/without_warden.rb @@ -39,9 +39,11 @@ def pre_send_announcement_internal def handle_provision_exception(provisioned_service) delete_database(provisioned_service) if provisioned_service + @pool_mutex.synchronize { @pools.delete(provisioned_service.name) } end def help_unprovision(provisioned_service) + @pool_mutex.synchronize { @pools.delete(provisioned_service.name) } if not provisioned_service.destroy @logger.error("Could not delete service: #{provisioned_service.errors.inspect}") raise MysqlError.new(MysqError::MYSQL_LOCAL_DB_ERROR) diff --git a/ng/mysql/spec/mysql_node_spec.rb b/ng/mysql/spec/mysql_node_spec.rb index f2b9c448..c44c858a 100644 --- a/ng/mysql/spec/mysql_node_spec.rb +++ b/ng/mysql/spec/mysql_node_spec.rb @@ -304,6 +304,36 @@ def new_instance end end + it "should change variables back after unprovision" do + EM.run do + class << @node + attr_reader :free_ports + end if @node.use_warden + + pool_size = @node.pools.size + free_port_size = @node.free_ports.size if @node.use_warden + + db = @node.provision(@default_plan, nil, @default_version) + @node.pools.size.should == (pool_size + 1) + @node.pools.should have_key(db["name"]) + @node.mysqlProvisionedService.get(db["name"]).should_not == nil + if @node.use_warden + @node.free_ports.should_not include(db["port"]) + @node.free_ports.size.should == (free_port_size - 1) + end + + @node.unprovision(db["name"], []) + @node.pools.size.should == pool_size + @node.pools.should_not have_key(db["name"]) + @node.mysqlProvisionedService.get(db["name"]).should == nil + if @node.use_warden + @node.free_ports.size.should == free_port_size + @node.free_ports.should include(db["port"]) + end + EM.stop + end + end + it "should not be possible to access one database using null or wrong credential" do EM.run do plan = "free"