Merge "Enable most unit tests for py34 job"
This commit is contained in:
commit
35a9d72f46
@ -94,18 +94,18 @@ In practical terms this scenario would be translated in the code below:
|
|||||||
|
|
||||||
|
|
||||||
def callback1(resource, event, trigger, **kwargs):
|
def callback1(resource, event, trigger, **kwargs):
|
||||||
print 'Callback1 called by trigger: ', trigger
|
print('Callback1 called by trigger: ', trigger)
|
||||||
print 'kwargs: ', kwargs
|
print('kwargs: ', kwargs)
|
||||||
|
|
||||||
def callback2(resource, event, trigger, **kwargs):
|
def callback2(resource, event, trigger, **kwargs):
|
||||||
print 'Callback2 called by trigger: ', trigger
|
print('Callback2 called by trigger: ', trigger)
|
||||||
print 'kwargs: ', kwargs
|
print('kwargs: ', kwargs)
|
||||||
|
|
||||||
|
|
||||||
# B and C express interest with I
|
# B and C express interest with I
|
||||||
registry.subscribe(callback1, resources.ROUTER, events.BEFORE_CREATE)
|
registry.subscribe(callback1, resources.ROUTER, events.BEFORE_CREATE)
|
||||||
registry.subscribe(callback2, resources.ROUTER, events.BEFORE_CREATE)
|
registry.subscribe(callback2, resources.ROUTER, events.BEFORE_CREATE)
|
||||||
print 'Subscribed'
|
print('Subscribed')
|
||||||
|
|
||||||
|
|
||||||
# A notifies
|
# A notifies
|
||||||
@ -114,7 +114,7 @@ In practical terms this scenario would be translated in the code below:
|
|||||||
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
print 'Notifying...'
|
print('Notifying...')
|
||||||
do_notify()
|
do_notify()
|
||||||
|
|
||||||
|
|
||||||
@ -171,13 +171,13 @@ to abort events are ignored. The snippet below shows this in action:
|
|||||||
raise Exception('I am failing!')
|
raise Exception('I am failing!')
|
||||||
|
|
||||||
def callback2(resource, event, trigger, **kwargs):
|
def callback2(resource, event, trigger, **kwargs):
|
||||||
print 'Callback2 called by %s on event %s' % (trigger, event)
|
print('Callback2 called by %s on event %s' % (trigger, event))
|
||||||
|
|
||||||
|
|
||||||
registry.subscribe(callback1, resources.ROUTER, events.BEFORE_CREATE)
|
registry.subscribe(callback1, resources.ROUTER, events.BEFORE_CREATE)
|
||||||
registry.subscribe(callback2, resources.ROUTER, events.BEFORE_CREATE)
|
registry.subscribe(callback2, resources.ROUTER, events.BEFORE_CREATE)
|
||||||
registry.subscribe(callback2, resources.ROUTER, events.ABORT_CREATE)
|
registry.subscribe(callback2, resources.ROUTER, events.ABORT_CREATE)
|
||||||
print 'Subscribed'
|
print('Subscribed')
|
||||||
|
|
||||||
|
|
||||||
def do_notify():
|
def do_notify():
|
||||||
@ -185,11 +185,11 @@ to abort events are ignored. The snippet below shows this in action:
|
|||||||
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
print 'Notifying...'
|
print('Notifying...')
|
||||||
try:
|
try:
|
||||||
do_notify()
|
do_notify()
|
||||||
except exceptions.CallbackFailure as e:
|
except exceptions.CallbackFailure as e:
|
||||||
print 'Error: ', e
|
print('Error: ', e)
|
||||||
|
|
||||||
The output is:
|
The output is:
|
||||||
|
|
||||||
@ -237,11 +237,11 @@ The snippet below shows these concepts in action:
|
|||||||
|
|
||||||
|
|
||||||
def callback1(resource, event, trigger, **kwargs):
|
def callback1(resource, event, trigger, **kwargs):
|
||||||
print 'Callback1 called by %s on event %s for resource %s' % (trigger, event, resource)
|
print('Callback1 called by %s on event %s for resource %s' % (trigger, event, resource))
|
||||||
|
|
||||||
|
|
||||||
def callback2(resource, event, trigger, **kwargs):
|
def callback2(resource, event, trigger, **kwargs):
|
||||||
print 'Callback2 called by %s on event %s for resource %s' % (trigger, event, resource)
|
print('Callback2 called by %s on event %s for resource %s' % (trigger, event, resource))
|
||||||
|
|
||||||
|
|
||||||
registry.subscribe(callback1, resources.ROUTER, events.BEFORE_READ)
|
registry.subscribe(callback1, resources.ROUTER, events.BEFORE_READ)
|
||||||
@ -249,11 +249,11 @@ The snippet below shows these concepts in action:
|
|||||||
registry.subscribe(callback1, resources.ROUTER, events.AFTER_DELETE)
|
registry.subscribe(callback1, resources.ROUTER, events.AFTER_DELETE)
|
||||||
registry.subscribe(callback1, resources.PORT, events.BEFORE_UPDATE)
|
registry.subscribe(callback1, resources.PORT, events.BEFORE_UPDATE)
|
||||||
registry.subscribe(callback2, resources.ROUTER_GATEWAY, events.BEFORE_UPDATE)
|
registry.subscribe(callback2, resources.ROUTER_GATEWAY, events.BEFORE_UPDATE)
|
||||||
print 'Subscribed'
|
print('Subscribed')
|
||||||
|
|
||||||
|
|
||||||
def do_notify():
|
def do_notify():
|
||||||
print 'Notifying...'
|
print('Notifying...')
|
||||||
kwargs = {'foo': 'bar'}
|
kwargs = {'foo': 'bar'}
|
||||||
registry.notify(resources.ROUTER, events.BEFORE_READ, do_notify, **kwargs)
|
registry.notify(resources.ROUTER, events.BEFORE_READ, do_notify, **kwargs)
|
||||||
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
||||||
@ -356,17 +356,17 @@ What kind of function can be a callback?
|
|||||||
|
|
||||||
|
|
||||||
def callback1(resource, event, trigger, **kwargs):
|
def callback1(resource, event, trigger, **kwargs):
|
||||||
print 'module callback'
|
print('module callback')
|
||||||
|
|
||||||
|
|
||||||
class MyCallback(object):
|
class MyCallback(object):
|
||||||
|
|
||||||
def callback2(self, resource, event, trigger, **kwargs):
|
def callback2(self, resource, event, trigger, **kwargs):
|
||||||
print 'object callback'
|
print('object callback')
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def callback3(cls, resource, event, trigger, **kwargs):
|
def callback3(cls, resource, event, trigger, **kwargs):
|
||||||
print 'class callback'
|
print('class callback')
|
||||||
|
|
||||||
|
|
||||||
c = MyCallback()
|
c = MyCallback()
|
||||||
@ -376,7 +376,7 @@ What kind of function can be a callback?
|
|||||||
|
|
||||||
def do_notify():
|
def do_notify():
|
||||||
def nested_subscribe(resource, event, trigger, **kwargs):
|
def nested_subscribe(resource, event, trigger, **kwargs):
|
||||||
print 'nested callback'
|
print('nested callback')
|
||||||
|
|
||||||
registry.subscribe(nested_subscribe, resources.ROUTER, events.BEFORE_CREATE)
|
registry.subscribe(nested_subscribe, resources.ROUTER, events.BEFORE_CREATE)
|
||||||
|
|
||||||
@ -384,7 +384,7 @@ What kind of function can be a callback?
|
|||||||
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
registry.notify(resources.ROUTER, events.BEFORE_CREATE, do_notify, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
print 'Notifying...'
|
print('Notifying...')
|
||||||
do_notify()
|
do_notify()
|
||||||
|
|
||||||
And the output is going to be:
|
And the output is going to be:
|
||||||
|
@ -50,7 +50,7 @@ class AsyncProcess(object):
|
|||||||
>>> time.sleep(5)
|
>>> time.sleep(5)
|
||||||
>>> proc.stop()
|
>>> proc.stop()
|
||||||
>>> for line in proc.iter_stdout():
|
>>> for line in proc.iter_stdout():
|
||||||
... print line
|
... print(line)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, cmd, run_as_root=False, respawn_interval=None,
|
def __init__(self, cmd, run_as_root=False, respawn_interval=None,
|
||||||
|
@ -64,7 +64,7 @@ class IPMonitor(async_process.AsyncProcess):
|
|||||||
m.start()
|
m.start()
|
||||||
for iterable in m:
|
for iterable in m:
|
||||||
event = IPMonitorEvent.from_text(iterable)
|
event = IPMonitorEvent.from_text(iterable)
|
||||||
print event, event.added, event.interface, event.cidr
|
print(event, event.added, event.interface, event.cidr)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
|
@ -45,6 +45,9 @@ class NeutronException(Exception):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return unicode(self.msg)
|
return unicode(self.msg)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.msg
|
||||||
|
|
||||||
def use_fatal_exceptions(self):
|
def use_fatal_exceptions(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ def _validate_dns_format(data, max_len=FQDN_MAX_LEN):
|
|||||||
raise TypeError(_("TLD '%s' must not be all numeric") % names[-1])
|
raise TypeError(_("TLD '%s' must not be all numeric") % names[-1])
|
||||||
except TypeError as e:
|
except TypeError as e:
|
||||||
msg = _("'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s") % {
|
msg = _("'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s") % {
|
||||||
'data': data, 'reason': e.message}
|
'data': data, 'reason': str(e)}
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
@ -1006,9 +1006,13 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin,
|
|||||||
# Leave part of the bridge name on for easier identification
|
# Leave part of the bridge name on for easier identification
|
||||||
hashlen = 6
|
hashlen = 6
|
||||||
namelen = n_const.DEVICE_NAME_MAX_LEN - len(prefix) - hashlen
|
namelen = n_const.DEVICE_NAME_MAX_LEN - len(prefix) - hashlen
|
||||||
|
if isinstance(name, six.text_type):
|
||||||
|
hashed_name = hashlib.sha1(name.encode('utf-8'))
|
||||||
|
else:
|
||||||
|
hashed_name = hashlib.sha1(name)
|
||||||
new_name = ('%(prefix)s%(truncated)s%(hash)s' %
|
new_name = ('%(prefix)s%(truncated)s%(hash)s' %
|
||||||
{'prefix': prefix, 'truncated': name[0:namelen],
|
{'prefix': prefix, 'truncated': name[0:namelen],
|
||||||
'hash': hashlib.sha1(name).hexdigest()[0:hashlen]})
|
'hash': hashed_name.hexdigest()[0:hashlen]})
|
||||||
LOG.warning(_LW("Creating an interface named %(name)s exceeds the "
|
LOG.warning(_LW("Creating an interface named %(name)s exceeds the "
|
||||||
"%(limit)d character limitation. It was shortened to "
|
"%(limit)d character limitation. It was shortened to "
|
||||||
"%(new_name)s to fit."),
|
"%(new_name)s to fit."),
|
||||||
|
@ -2236,9 +2236,9 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
|
|||||||
self.pd_update.append(prefix_update)
|
self.pd_update.append(prefix_update)
|
||||||
for intf in intfs:
|
for intf in intfs:
|
||||||
for subnet in intf['subnets']:
|
for subnet in intf['subnets']:
|
||||||
if subnet['id'] == prefix_update.keys()[0]:
|
if subnet['id'] in prefix_update:
|
||||||
# Update the prefix
|
# Update the prefix
|
||||||
subnet['cidr'] = prefix_update.values()[0]
|
subnet['cidr'] = prefix_update[subnet['id']]
|
||||||
|
|
||||||
# Process the router for removed interfaces
|
# Process the router for removed interfaces
|
||||||
agent.pd.notifier = pd_notifier
|
agent.pd.notifier = pd_notifier
|
||||||
@ -2266,7 +2266,7 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
|
|||||||
external_process call is followed with either an enable() or disable()
|
external_process call is followed with either an enable() or disable()
|
||||||
'''
|
'''
|
||||||
|
|
||||||
num_ext_calls = len(expected) / 2
|
num_ext_calls = len(expected) // 2
|
||||||
expected_ext_calls = []
|
expected_ext_calls = []
|
||||||
actual_ext_calls = []
|
actual_ext_calls = []
|
||||||
expected_action_calls = []
|
expected_action_calls = []
|
||||||
|
@ -65,26 +65,26 @@ class TestIpamSubnetManager(testlib_api.SqlTestCase):
|
|||||||
db_pools.append(db_pool)
|
db_pools.append(db_pool)
|
||||||
return db_pools
|
return db_pools
|
||||||
|
|
||||||
def _validate_ips(self, pool, db_pool):
|
def _validate_ips(self, pools, db_pool):
|
||||||
self.assertEqual(pool[0], db_pool.first_ip)
|
self.assertTrue(
|
||||||
self.assertEqual(pool[1], db_pool.last_ip)
|
any(pool == (db_pool.first_ip, db_pool.last_ip) for pool in pools))
|
||||||
|
|
||||||
def test_create_pool(self):
|
def test_create_pool(self):
|
||||||
db_pools = self._create_pools([self.single_pool])
|
db_pools = self._create_pools([self.single_pool])
|
||||||
|
|
||||||
ipam_pool = self.ctx.session.query(db_models.IpamAllocationPool).\
|
ipam_pool = self.ctx.session.query(db_models.IpamAllocationPool).\
|
||||||
filter_by(ipam_subnet_id=self.ipam_subnet_id).first()
|
filter_by(ipam_subnet_id=self.ipam_subnet_id).first()
|
||||||
self._validate_ips(self.single_pool, ipam_pool)
|
self._validate_ips([self.single_pool], ipam_pool)
|
||||||
|
|
||||||
range = self.ctx.session.query(db_models.IpamAvailabilityRange).\
|
range = self.ctx.session.query(db_models.IpamAvailabilityRange).\
|
||||||
filter_by(allocation_pool_id=db_pools[0].id).first()
|
filter_by(allocation_pool_id=db_pools[0].id).first()
|
||||||
self._validate_ips(self.single_pool, range)
|
self._validate_ips([self.single_pool], range)
|
||||||
|
|
||||||
def _test_get_first_range(self, locking):
|
def _test_get_first_range(self, locking):
|
||||||
self._create_pools(self.multi_pool)
|
self._create_pools(self.multi_pool)
|
||||||
range = self.subnet_manager.get_first_range(self.ctx.session,
|
range = self.subnet_manager.get_first_range(self.ctx.session,
|
||||||
locking=locking)
|
locking=locking)
|
||||||
self._validate_ips(self.multi_pool[0], range)
|
self._validate_ips(self.multi_pool, range)
|
||||||
|
|
||||||
def test_get_first_range(self):
|
def test_get_first_range(self):
|
||||||
self._test_get_first_range(False)
|
self._test_get_first_range(False)
|
||||||
@ -110,20 +110,20 @@ class TestIpamSubnetManager(testlib_api.SqlTestCase):
|
|||||||
db_pools[0].id).all()
|
db_pools[0].id).all()
|
||||||
self.assertEqual(1, len(db_ranges))
|
self.assertEqual(1, len(db_ranges))
|
||||||
self.assertEqual(db_models.IpamAvailabilityRange, type(db_ranges[0]))
|
self.assertEqual(db_models.IpamAvailabilityRange, type(db_ranges[0]))
|
||||||
self._validate_ips(self.single_pool, db_ranges[0])
|
self._validate_ips([self.single_pool], db_ranges[0])
|
||||||
|
|
||||||
def test_create_range(self):
|
def test_create_range(self):
|
||||||
self._create_pools([self.single_pool])
|
self._create_pools([self.single_pool])
|
||||||
pool = self.ctx.session.query(db_models.IpamAllocationPool).\
|
pool = self.ctx.session.query(db_models.IpamAllocationPool).\
|
||||||
filter_by(ipam_subnet_id=self.ipam_subnet_id).first()
|
filter_by(ipam_subnet_id=self.ipam_subnet_id).first()
|
||||||
self._validate_ips(self.single_pool, pool)
|
self._validate_ips([self.single_pool], pool)
|
||||||
allocation_pool_id = pool.id
|
allocation_pool_id = pool.id
|
||||||
|
|
||||||
# delete the range
|
# delete the range
|
||||||
db_range = self.subnet_manager.list_ranges_by_allocation_pool(
|
db_range = self.subnet_manager.list_ranges_by_allocation_pool(
|
||||||
self.ctx.session,
|
self.ctx.session,
|
||||||
pool.id).first()
|
pool.id).first()
|
||||||
self._validate_ips(self.single_pool, db_range)
|
self._validate_ips([self.single_pool], db_range)
|
||||||
self.ctx.session.delete(db_range)
|
self.ctx.session.delete(db_range)
|
||||||
|
|
||||||
# create a new range
|
# create a new range
|
||||||
|
@ -20,6 +20,7 @@ from oslo_versionedobjects import base as obj_base
|
|||||||
from oslo_versionedobjects import fields as obj_fields
|
from oslo_versionedobjects import fields as obj_fields
|
||||||
|
|
||||||
from neutron.common import exceptions as n_exc
|
from neutron.common import exceptions as n_exc
|
||||||
|
from neutron.common import utils as common_utils
|
||||||
from neutron import context
|
from neutron import context
|
||||||
from neutron.db import api as db_api
|
from neutron.db import api as db_api
|
||||||
from neutron.objects import base
|
from neutron.objects import base
|
||||||
@ -184,8 +185,10 @@ class BaseObjectIfaceTestCase(_BaseObjectTestCase, test_base.BaseTestCase):
|
|||||||
def _validate_objects(self, expected, observed):
|
def _validate_objects(self, expected, observed):
|
||||||
self.assertTrue(all(self._is_test_class(obj) for obj in observed))
|
self.assertTrue(all(self._is_test_class(obj) for obj in observed))
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
sorted(expected),
|
sorted(expected,
|
||||||
sorted(get_obj_db_fields(obj) for obj in observed))
|
key=common_utils.safe_sort_key),
|
||||||
|
sorted([get_obj_db_fields(obj) for obj in observed],
|
||||||
|
key=common_utils.safe_sort_key))
|
||||||
|
|
||||||
def _check_equal(self, obj, db_obj):
|
def _check_equal(self, obj, db_obj):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
@ -19,6 +19,7 @@ import ssl
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
import six
|
||||||
import six.moves.urllib.request as urlrequest
|
import six.moves.urllib.request as urlrequest
|
||||||
import testtools
|
import testtools
|
||||||
import webob
|
import webob
|
||||||
@ -170,7 +171,7 @@ class TestWSGIServer(base.BaseTestCase):
|
|||||||
|
|
||||||
response = open_no_proxy('http://127.0.0.1:%d/' % server.port)
|
response = open_no_proxy('http://127.0.0.1:%d/' % server.port)
|
||||||
|
|
||||||
self.assertEqual(greetings, response.read())
|
self.assertEqual(greetings.encode('utf-8'), response.read())
|
||||||
|
|
||||||
server.stop()
|
server.stop()
|
||||||
|
|
||||||
@ -495,6 +496,8 @@ class JSONDictSerializerTest(base.BaseTestCase):
|
|||||||
|
|
||||||
self.assertEqual(expected_json, result)
|
self.assertEqual(expected_json, result)
|
||||||
|
|
||||||
|
# TODO(cbrandily): support this test in py3K
|
||||||
|
@testtools.skipIf(six.PY3, "bug/1491824")
|
||||||
def test_json_with_utf8(self):
|
def test_json_with_utf8(self):
|
||||||
input_dict = dict(servers=dict(a=(2, '\xe7\xbd\x91\xe7\xbb\x9c')))
|
input_dict = dict(servers=dict(a=(2, '\xe7\xbd\x91\xe7\xbb\x9c')))
|
||||||
expected_json = b'{"servers":{"a":[2,"\\u7f51\\u7edc"]}}'
|
expected_json = b'{"servers":{"a":[2,"\\u7f51\\u7edc"]}}'
|
||||||
@ -555,14 +558,14 @@ class JSONDeserializerTest(base.BaseTestCase):
|
|||||||
exception.MalformedRequestBody, deserializer.default, data_string)
|
exception.MalformedRequestBody, deserializer.default, data_string)
|
||||||
|
|
||||||
def test_json_with_utf8(self):
|
def test_json_with_utf8(self):
|
||||||
data = '{"a": "\xe7\xbd\x91\xe7\xbb\x9c"}'
|
data = b'{"a": "\xe7\xbd\x91\xe7\xbb\x9c"}'
|
||||||
as_dict = {'body': {'a': u'\u7f51\u7edc'}}
|
as_dict = {'body': {'a': u'\u7f51\u7edc'}}
|
||||||
deserializer = wsgi.JSONDeserializer()
|
deserializer = wsgi.JSONDeserializer()
|
||||||
self.assertEqual(as_dict,
|
self.assertEqual(as_dict,
|
||||||
deserializer.deserialize(data))
|
deserializer.deserialize(data))
|
||||||
|
|
||||||
def test_json_with_unicode(self):
|
def test_json_with_unicode(self):
|
||||||
data = '{"a": "\u7f51\u7edc"}'
|
data = b'{"a": "\u7f51\u7edc"}'
|
||||||
as_dict = {'body': {'a': u'\u7f51\u7edc'}}
|
as_dict = {'body': {'a': u'\u7f51\u7edc'}}
|
||||||
deserializer = wsgi.JSONDeserializer()
|
deserializer = wsgi.JSONDeserializer()
|
||||||
self.assertEqual(as_dict,
|
self.assertEqual(as_dict,
|
||||||
@ -717,6 +720,11 @@ class FaultTest(base.BaseTestCase):
|
|||||||
class TestWSGIServerWithSSL(base.BaseTestCase):
|
class TestWSGIServerWithSSL(base.BaseTestCase):
|
||||||
"""WSGI server tests."""
|
"""WSGI server tests."""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestWSGIServerWithSSL, self).setUp()
|
||||||
|
if six.PY3:
|
||||||
|
self.skip("bug/1482633")
|
||||||
|
|
||||||
@mock.patch("exceptions.RuntimeError")
|
@mock.patch("exceptions.RuntimeError")
|
||||||
@mock.patch("os.path.exists")
|
@mock.patch("os.path.exists")
|
||||||
def test__check_ssl_settings(self, exists_mock, runtime_error_mock):
|
def test__check_ssl_settings(self, exists_mock, runtime_error_mock):
|
||||||
|
162
tox.ini
162
tox.ini
@ -102,168 +102,6 @@ commands = {posargs}
|
|||||||
[testenv:docs]
|
[testenv:docs]
|
||||||
commands = sphinx-build -W -b html doc/source doc/build/html
|
commands = sphinx-build -W -b html doc/source doc/build/html
|
||||||
|
|
||||||
[testenv:py34]
|
|
||||||
commands = python setup.py test --testr-args='{posargs: \
|
|
||||||
neutron.tests.unit.test_context \
|
|
||||||
neutron.tests.unit.services.metering.drivers.test_iptables \
|
|
||||||
neutron.tests.unit.services.metering.agents.test_metering_agent \
|
|
||||||
neutron.tests.unit.services.test_provider_configuration \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mech_sriov.agent.test_sriov_nic_agent \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mech_sriov.agent.test_eswitch_manager \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mech_sriov.agent.common.test_config \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mech_sriov.agent.test_pci_lib \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.openvswitch.agent.ovs_test_base \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.openvswitch.agent.openflow.ovs_ofctl.test_br_phys \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.openvswitch.agent.openflow.ovs_ofctl.test_br_int \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.openvswitch.agent.openflow.ovs_ofctl.test_br_tun \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.openvswitch.agent.test_ovs_tunnel \
|
|
||||||
neutron.tests.unit.plugins.brocade.test_brocade_db \
|
|
||||||
neutron.tests.unit.plugins.brocade.test_brocade_plugin \
|
|
||||||
neutron.tests.unit.plugins.brocade.test_brocade_vlan \
|
|
||||||
neutron.tests.unit.plugins.embrane.test_embrane_neutron_plugin \
|
|
||||||
neutron.tests.unit.plugins.oneconvergence.test_nvsd_agent \
|
|
||||||
neutron.tests.unit.plugins.oneconvergence.test_nvsd_plugin \
|
|
||||||
neutron.tests.unit.plugins.oneconvergence.test_plugin_helper \
|
|
||||||
neutron.tests.unit.plugins.oneconvergence.test_nvsdlib \
|
|
||||||
neutron.tests.unit.plugins.ibm.test_sdnve_agent \
|
|
||||||
neutron.tests.unit.plugins.ibm.test_sdnve_api \
|
|
||||||
neutron.tests.unit.plugins.ml2.test_db \
|
|
||||||
neutron.tests.unit.plugins.ml2.test_driver_context \
|
|
||||||
neutron.tests.unit.plugins.ml2.test_port_binding \
|
|
||||||
neutron.tests.unit.plugins.ml2.test_extension_driver_api \
|
|
||||||
neutron.tests.unit.plugins.ml2.test_rpc \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mlnx.test_mech_mlnx \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.openvswitch.mech_driver.test_mech_openvswitch \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.linuxbridge.mech_driver.test_mech_linuxbridge \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.linuxbridge.agent.test_linuxbridge_neutron_agent \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.base_type_tunnel \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.opendaylight.test_driver \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.ext_test \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mech_sriov.mech_driver.test_mech_sriov_nic_switch \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mech_fake_agent \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.test_type_vxlan \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.test_type_gre \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.test_helpers \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.test_type_local \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mechanism_logger \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.test_type_flat \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.test_type_vlan \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.mechanism_test \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.l2pop.rpc_manager.l2population_rpc_base \
|
|
||||||
neutron.tests.unit.plugins.ml2.extensions.fake_extension \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.l2pop.rpc_manager.test_l2population_rpc \
|
|
||||||
neutron.tests.unit.plugins.ml2.drivers.l2pop.test_mech_driver \
|
|
||||||
neutron.tests.unit.plugins.cisco.n1kv.test_n1kv_db \
|
|
||||||
neutron.tests.unit.plugins.cisco.n1kv.fake_client \
|
|
||||||
neutron.tests.unit.plugins.cisco.test_network_db \
|
|
||||||
neutron.tests.unit.quota.test_resource \
|
|
||||||
neutron.tests.unit.quota.test_resource_registry \
|
|
||||||
neutron.tests.unit.scheduler.test_l3_agent_scheduler \
|
|
||||||
neutron.tests.unit.scheduler.test_dhcp_agent_scheduler \
|
|
||||||
neutron.tests.unit.db.test_agentschedulers_db \
|
|
||||||
neutron.tests.unit.db.test_allowedaddresspairs_db \
|
|
||||||
neutron.tests.unit.db.test_db_base_plugin_v2 \
|
|
||||||
neutron.tests.unit.db.test_ipam_backend_mixin \
|
|
||||||
neutron.tests.unit.db.test_l3_dvr_db \
|
|
||||||
neutron.tests.unit.db.test_l3_hamode_db \
|
|
||||||
neutron.tests.unit.db.test_ipam_pluggable_backend \
|
|
||||||
neutron.tests.unit.db.test_migration \
|
|
||||||
neutron.tests.unit.db.test_agents_db \
|
|
||||||
neutron.tests.unit.db.quota.test_api \
|
|
||||||
neutron.tests.unit.db.quota.test_driver \
|
|
||||||
neutron.tests.unit.db.test_dvr_mac_db \
|
|
||||||
neutron.tests.unit.db.test_securitygroups_db \
|
|
||||||
neutron.tests.unit.debug.test_commands \
|
|
||||||
neutron.tests.unit.tests.test_post_mortem_debug \
|
|
||||||
neutron.tests.unit.tests.test_base \
|
|
||||||
neutron.tests.unit.database_stubs \
|
|
||||||
neutron.tests.unit.dummy_plugin \
|
|
||||||
neutron.tests.unit.extension_stubs \
|
|
||||||
neutron.tests.unit.testlib_api \
|
|
||||||
neutron.tests.unit.api.test_api_common \
|
|
||||||
neutron.tests.unit.api.rpc.handlers.test_dhcp_rpc \
|
|
||||||
neutron.tests.unit.api.rpc.handlers.test_securitygroups_rpc \
|
|
||||||
neutron.tests.unit.api.rpc.handlers.test_dvr_rpc \
|
|
||||||
neutron.tests.unit.api.rpc.agentnotifiers.test_dhcp_rpc_agent_api \
|
|
||||||
neutron.tests.unit.api.v2.test_attributes \
|
|
||||||
neutron.tests.unit.agent.metadata.test_agent \
|
|
||||||
neutron.tests.unit.agent.metadata.test_driver \
|
|
||||||
neutron.tests.unit.agent.metadata.test_namespace_proxy \
|
|
||||||
neutron.tests.unit.agent.test_rpc \
|
|
||||||
neutron.tests.unit.agent.test_securitygroups_rpc \
|
|
||||||
neutron.tests.unit.agent.l3.test_link_local_allocator \
|
|
||||||
neutron.tests.unit.agent.l3.test_dvr_local_router \
|
|
||||||
neutron.tests.unit.agent.l3.test_ha_router \
|
|
||||||
neutron.tests.unit.agent.l3.test_legacy_router \
|
|
||||||
neutron.tests.unit.agent.l3.test_router_info \
|
|
||||||
neutron.tests.unit.agent.l3.test_router_processing_queue \
|
|
||||||
neutron.tests.unit.agent.l3.test_namespace_manager \
|
|
||||||
neutron.tests.unit.agent.l3.test_dvr_fip_ns \
|
|
||||||
neutron.tests.unit.agent.ovsdb.native.test_helpers \
|
|
||||||
neutron.tests.unit.agent.common.test_config \
|
|
||||||
neutron.tests.unit.agent.common.test_ovs_lib \
|
|
||||||
neutron.tests.unit.agent.common.test_polling \
|
|
||||||
neutron.tests.unit.agent.common.test_utils \
|
|
||||||
neutron.tests.unit.agent.linux.test_ip_lib \
|
|
||||||
neutron.tests.unit.agent.linux.test_keepalived \
|
|
||||||
neutron.tests.unit.agent.linux.test_daemon \
|
|
||||||
neutron.tests.unit.agent.linux.test_ipset_manager \
|
|
||||||
neutron.tests.unit.agent.linux.test_iptables_firewall \
|
|
||||||
neutron.tests.unit.agent.linux.test_ebtables_manager \
|
|
||||||
neutron.tests.unit.agent.linux.test_iptables_firewall \
|
|
||||||
neutron.tests.unit.agent.linux.test_ebtables_driver \
|
|
||||||
neutron.tests.unit.agent.linux.test_polling \
|
|
||||||
neutron.tests.unit.agent.linux.test_ip_lib \
|
|
||||||
neutron.tests.unit.agent.linux.test_ip_monitor \
|
|
||||||
neutron.tests.unit.agent.linux.test_iptables_manager \
|
|
||||||
neutron.tests.unit.agent.linux.test_external_process \
|
|
||||||
neutron.tests.unit.agent.linux.test_dhcp \
|
|
||||||
neutron.tests.unit.agent.linux.test_async_process \
|
|
||||||
neutron.tests.unit.agent.linux.test_ovsdb_monitor \
|
|
||||||
neutron.tests.unit.agent.linux.test_bridge_lib \
|
|
||||||
neutron.tests.unit.agent.linux.test_ip_link_support \
|
|
||||||
neutron.tests.unit.agent.linux.test_interface \
|
|
||||||
neutron.tests.unit.agent.linux.test_utils \
|
|
||||||
neutron.tests.unit.agent.dhcp.test_agent \
|
|
||||||
neutron.tests.unit.test_manager \
|
|
||||||
neutron.tests.unit.test_service \
|
|
||||||
neutron.tests.unit.test_auth \
|
|
||||||
neutron.tests.unit.test_policy \
|
|
||||||
neutron.tests.unit.extensions.v2attributes \
|
|
||||||
neutron.tests.unit.extensions.test_address_scope \
|
|
||||||
neutron.tests.unit.extensions.test_agent \
|
|
||||||
neutron.tests.unit.extensions.test_external_net \
|
|
||||||
neutron.tests.unit.extensions.test_flavors \
|
|
||||||
neutron.tests.unit.extensions.test_l3_ext_gw_mode \
|
|
||||||
neutron.tests.unit.extensions.test_extra_dhcp_opt \
|
|
||||||
neutron.tests.unit.extensions.test_extraroute \
|
|
||||||
neutron.tests.unit.extensions.test_netmtu \
|
|
||||||
neutron.tests.unit.extensions.test_vlantransparent \
|
|
||||||
neutron.tests.unit.extensions.extendedattribute \
|
|
||||||
neutron.tests.unit.extensions.base \
|
|
||||||
neutron.tests.unit.extensions.foxinsocks \
|
|
||||||
neutron.tests.unit.extensions.extensionattribute \
|
|
||||||
neutron.tests.unit.extensions.test_servicetype \
|
|
||||||
neutron.tests.unit.extensions.test_portsecurity \
|
|
||||||
neutron.tests.unit.extensions.test_providernet \
|
|
||||||
neutron.tests.unit.callbacks.test_manager \
|
|
||||||
neutron.tests.unit.hacking.test_checks \
|
|
||||||
neutron.tests.unit.common.test_utils \
|
|
||||||
neutron.tests.unit.common.test_config \
|
|
||||||
neutron.tests.unit.common.test_rpc \
|
|
||||||
neutron.tests.unit.common.test_ipv6_utils \
|
|
||||||
neutron.tests.unit.cmd.test_ovs_cleanup \
|
|
||||||
neutron.tests.unit.cmd.test_netns_cleanup \
|
|
||||||
neutron.tests.unit.ipam.drivers.neutrondb_ipam.test_db_api \
|
|
||||||
neutron.tests.unit.ipam.drivers.neutrondb_ipam.test_driver \
|
|
||||||
neutron.tests.unit.ipam.test_subnet_alloc \
|
|
||||||
neutron.tests.unit.ipam.test_utils \
|
|
||||||
neutron.tests.unit.ipam.test_requests \
|
|
||||||
neutron.tests.unit.notifiers.test_nova \
|
|
||||||
neutron.tests.unit.notifiers.test_batch_notifier \
|
|
||||||
neutron.tests.unit.api.test_extensions \
|
|
||||||
neutron.tests.unit.db.test_db_base_plugin_common}'
|
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
# E125 continuation line does not distinguish itself from next logical line
|
# E125 continuation line does not distinguish itself from next logical line
|
||||||
# E126 continuation line over-indented for hanging indent
|
# E126 continuation line over-indented for hanging indent
|
||||||
|
Loading…
Reference in New Issue
Block a user