Add support for default_region

Changes to actually use the
'default_region' setting in the
S3TEST_CONF file.
Previously, the first connection set
was assumed to be the default.
This means that the parse order
of the S3TEST_CONF file was dictating
how the tests behaved, resulting in
failures in some cases.

Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
Joe Buck 2013-08-21 15:47:04 -07:00
parent b4b99d3e23
commit 703e66d547

View file

@ -182,6 +182,9 @@ class RegionsConn:
def iteritems(self): def iteritems(self):
return self.m.iteritems() return self.m.iteritems()
def set_default(self, conn):
self.default = conn
def add(self, name, conn): def add(self, name, conn):
self.m[name] = conn self.m[name] = conn
if not self.default: if not self.default:
@ -217,6 +220,12 @@ def setup():
template = 'test-{random}-' template = 'test-{random}-'
prefix = choose_bucket_prefix(template=template) prefix = choose_bucket_prefix(template=template)
# pull the default_region out, if it exists
try:
default_region = cfg.get('fixtures', 'default_region')
except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
default_region = None
s3.clear() s3.clear()
config.clear() config.clear()
@ -263,7 +272,18 @@ def setup():
# TODO test vhost calling format # TODO test vhost calling format
calling_format=conf.calling_format, calling_format=conf.calling_format,
) )
targets[name].add(k, TargetConnection(conf, conn))
temp_targetConn = TargetConnection(conf, conn)
targets[name].add(k, temp_targetConn)
# Explicitly test for and set the default region, if specified.
# If it was not specified, use the 'is_master' flag to set it.
if default_region:
if default_region == name:
targets[name].set_default(temp_targetConn)
elif conf.is_master:
targets[name].set_default(temp_targetConn)
s3[name] = targets[name].default.connection s3[name] = targets[name].default.connection
# WARNING! we actively delete all buckets we see with the prefix # WARNING! we actively delete all buckets we see with the prefix