made functional tests more configurable
SWIFT_TEST_CONFIG_FILE can redirect both functional test suites to any conf functional tests that don't require a account:username can now work with only username for auth systems that don't support the account/namespace concept
This commit is contained in:
parent
aa14afe2bb
commit
d1fa1a0040
@ -2,6 +2,25 @@
|
||||
# The code below enables nosetests to work with i18n _() blocks
|
||||
|
||||
import __builtin__
|
||||
import os
|
||||
from ConfigParser import MissingSectionHeaderError
|
||||
|
||||
from swift.common.utils import readconf
|
||||
|
||||
setattr(__builtin__, '_', lambda x: x)
|
||||
|
||||
def get_func_test_config():
|
||||
config_file = os.environ.get('SWIFT_TEST_CONFIG_FILE',
|
||||
'/etc/swift/func_test.conf')
|
||||
config = {}
|
||||
try:
|
||||
config = readconf(config_file, 'func_test')
|
||||
except SystemExit:
|
||||
print >>sys.stderr, 'SKIPPING FUNCTIONAL TESTS DUE TO NO CONFIG'
|
||||
except MissingSectionHeaderError:
|
||||
# rather than mock the stream to spoof a section header, display an
|
||||
# error to the user and let them fix it.
|
||||
print >>sys.stderr, 'SKIPPING FUNCTIONAL TESTS DUE TO NO ' \
|
||||
'[func_test] CONFIG SECTION'
|
||||
return config
|
||||
|
||||
|
0
test/functional/__init__.py
Normal file
0
test/functional/__init__.py
Normal file
@ -1,3 +1,4 @@
|
||||
[func_test]
|
||||
# sample config
|
||||
auth_host = 127.0.0.1
|
||||
# For DevAuth:
|
||||
|
@ -80,7 +80,7 @@ def listing_items(method):
|
||||
|
||||
class Connection(object):
|
||||
def __init__(self, config):
|
||||
for key in 'auth_host auth_port auth_ssl account username password'.split():
|
||||
for key in 'auth_host auth_port auth_ssl username password'.split():
|
||||
if not config.has_key(key):
|
||||
raise SkipTest
|
||||
|
||||
@ -89,7 +89,7 @@ class Connection(object):
|
||||
self.auth_ssl = config['auth_ssl'] in ('on', 'true', 'yes', '1')
|
||||
self.auth_prefix = config.get('auth_prefix', '/')
|
||||
|
||||
self.account = config['account']
|
||||
self.account = config.get('account')
|
||||
self.username = config['username']
|
||||
self.password = config['password']
|
||||
|
||||
@ -110,8 +110,12 @@ class Connection(object):
|
||||
self.storage_token = clone_conn.storage_token
|
||||
return
|
||||
|
||||
if self.account:
|
||||
auth_user = '%s:%s' % (self.account, self.username)
|
||||
else:
|
||||
auth_user = self.username
|
||||
headers = {
|
||||
'x-auth-user': '%s:%s' % (self.account, self.username),
|
||||
'x-auth-user': auth_user,
|
||||
'x-auth-key': self.password,
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
# limitations under the License.
|
||||
|
||||
import array
|
||||
import configobj
|
||||
from datetime import datetime
|
||||
import locale
|
||||
import os
|
||||
@ -29,20 +28,13 @@ import uuid
|
||||
import unittest
|
||||
import urllib
|
||||
|
||||
from test import get_func_test_config
|
||||
|
||||
from swift import Account, AuthenticationFailed, Connection, Container, \
|
||||
File, ResponseError
|
||||
|
||||
config_file_env_var = 'SWIFT_TEST_CONFIG_FILE'
|
||||
default_config_file = '/etc/swift/func_test.conf'
|
||||
config = get_func_test_config()
|
||||
|
||||
if os.environ.has_key(config_file_env_var):
|
||||
config_file = os.environ[config_file_env_var]
|
||||
elif os.path.isfile(default_config_file):
|
||||
config_file = default_config_file
|
||||
else:
|
||||
print >>sys.stderr, 'SKIPPING FUNCTIONAL TESTS DUE TO NO CONFIG'
|
||||
|
||||
config = configobj.ConfigObj(config_file)
|
||||
locale.setlocale(locale.LC_COLLATE, config.get('collate', 'C'))
|
||||
|
||||
class Base:
|
||||
@ -136,7 +128,8 @@ class TestAccountEnv:
|
||||
def setUp(cls):
|
||||
cls.conn = Connection(config)
|
||||
cls.conn.authenticate()
|
||||
cls.account = Account(cls.conn, config['account'])
|
||||
cls.account = Account(cls.conn, config.get('account',
|
||||
config['username']))
|
||||
cls.account.delete_containers()
|
||||
|
||||
cls.containers = []
|
||||
@ -314,7 +307,8 @@ class TestAccountNoContainersEnv:
|
||||
def setUp(cls):
|
||||
cls.conn = Connection(config)
|
||||
cls.conn.authenticate()
|
||||
cls.account = Account(cls.conn, config['account'])
|
||||
cls.account = Account(cls.conn, config.get('account',
|
||||
config['username']))
|
||||
cls.account.delete_containers()
|
||||
|
||||
class TestAccountNoContainers(Base):
|
||||
@ -339,7 +333,8 @@ class TestContainerEnv:
|
||||
def setUp(cls):
|
||||
cls.conn = Connection(config)
|
||||
cls.conn.authenticate()
|
||||
cls.account = Account(cls.conn, config['account'])
|
||||
cls.account = Account(cls.conn, config.get('account',
|
||||
config['username']))
|
||||
cls.account.delete_containers()
|
||||
|
||||
cls.container = cls.account.container(Utils.create_name())
|
||||
@ -624,7 +619,8 @@ class TestContainerPathsEnv:
|
||||
def setUp(cls):
|
||||
cls.conn = Connection(config)
|
||||
cls.conn.authenticate()
|
||||
cls.account = Account(cls.conn, config['account'])
|
||||
cls.account = Account(cls.conn, config.get('account',
|
||||
config['username']))
|
||||
cls.account.delete_containers()
|
||||
|
||||
cls.file_size = 8
|
||||
@ -784,7 +780,8 @@ class TestFileEnv:
|
||||
def setUp(cls):
|
||||
cls.conn = Connection(config)
|
||||
cls.conn.authenticate()
|
||||
cls.account = Account(cls.conn, config['account'])
|
||||
cls.account = Account(cls.conn, config.get('account',
|
||||
config['username']))
|
||||
cls.account.delete_containers()
|
||||
|
||||
cls.container = cls.account.container(Utils.create_name())
|
||||
@ -1430,7 +1427,8 @@ class TestFileComparisonEnv:
|
||||
def setUp(cls):
|
||||
cls.conn = Connection(config)
|
||||
cls.conn.authenticate()
|
||||
cls.account = Account(cls.conn, config['account'])
|
||||
cls.account = Account(cls.conn, config.get('account',
|
||||
config['username']))
|
||||
cls.account.delete_containers()
|
||||
|
||||
cls.container = cls.account.container(Utils.create_name())
|
||||
|
Loading…
x
Reference in New Issue
Block a user