diff --git a/neutron/agent/ovsdb/native/connection.py b/neutron/agent/ovsdb/native/connection.py index d7d1c33d887..013e2e70045 100644 --- a/neutron/agent/ovsdb/native/connection.py +++ b/neutron/agent/ovsdb/native/connection.py @@ -53,13 +53,14 @@ class TransactionQueue(Queue.Queue, object): class Connection(object): - def __init__(self, connection, timeout, schema_name): + def __init__(self, connection, timeout, schema_name, idl_class=None): self.idl = None self.connection = connection self.timeout = timeout self.txns = TransactionQueue(1) self.lock = threading.Lock() self.schema_name = schema_name + self.idl_class = idl_class or idl.Idl def start(self, table_name_list=None): """ @@ -93,7 +94,7 @@ class Connection(object): else: for table_name in table_name_list: helper.register_table(table_name) - self.idl = idl.Idl(self.connection, helper) + self.idl = self.idl_class(self.connection, helper) idlutils.wait_for_change(self.idl, self.timeout) self.poller = poller.Poller() self.thread = threading.Thread(target=self.run) diff --git a/neutron/tests/unit/agent/ovsdb/native/test_connection.py b/neutron/tests/unit/agent/ovsdb/native/test_connection.py index 1d460bdbc5a..217d8cf997b 100644 --- a/neutron/tests/unit/agent/ovsdb/native/test_connection.py +++ b/neutron/tests/unit/agent/ovsdb/native/test_connection.py @@ -57,3 +57,15 @@ class TestOVSNativeConnection(base.BaseTestCase): # a test to cover py34 failure during initialization (LP Bug #1580270) # make sure no ValueError: can't have unbuffered text I/O is raised connection.TransactionQueue() + + @mock.patch.object(connection, 'TransactionQueue') + @mock.patch.object(idlutils, 'get_schema_helper') + @mock.patch.object(idlutils, 'wait_for_change') + def test_start_with_idl_class(self, wait_for_change, get_schema_helper, + transaction_queue): + idl_class = mock.Mock() + self.connection = connection.Connection( + mock.sentinel, mock.sentinel, mock.sentinel, idl_class=idl_class) + idl_instance = idl_class.return_value + self.connection.start() + self.assertEqual(idl_instance, self.connection.idl)