Add tests for L3 conntrack helper
API tests for L3 Conntrack Helper plugin.
Related-Bug: #1823633
Depends-On: https://review.opendev.org/670837
Change-Id: Ie085100f508f7a1cdb0fd4efbcffa1e2b485fbba
diff --git a/neutron_tempest_plugin/api/base.py b/neutron_tempest_plugin/api/base.py
index 71a0e5e..4441dd1 100644
--- a/neutron_tempest_plugin/api/base.py
+++ b/neutron_tempest_plugin/api/base.py
@@ -137,6 +137,7 @@
cls.keypairs = []
cls.trunks = []
cls.network_segment_ranges = []
+ cls.conntrack_helpers = []
@classmethod
def resource_cleanup(cls):
@@ -153,6 +154,10 @@
for floating_ip in cls.floating_ips:
cls._try_delete_resource(cls.delete_floatingip, floating_ip)
+ # Clean up conntrack helpers
+ for cth in cls.conntrack_helpers:
+ cls._try_delete_resource(cls.delete_conntrack_helper, cth)
+
# Clean up routers
for router in cls.routers:
cls._try_delete_resource(cls.delete_router,
@@ -960,6 +965,55 @@
client.delete_trunk(trunk['id'])
+ @classmethod
+ def create_conntrack_helper(cls, router_id, helper, protocol, port,
+ client=None):
+ """Create a conntrack helper
+
+ Create a conntrack helper and schedule it for later deletion. If a
+ client is passed, then it is used for deleteing the CTH too.
+
+ :param router_id: The ID of the Neutron router associated to the
+ conntrack helper.
+
+ :param helper: The conntrack helper module alias
+
+ :param protocol: The conntrack helper IP protocol used in the conntrack
+ helper.
+
+ :param port: The conntrack helper IP protocol port number for the
+ conntrack helper.
+
+ :param client: network client to be used for creating and cleaning up
+ the conntrack helper.
+ """
+
+ client = client or cls.client
+
+ cth = client.create_conntrack_helper(router_id, helper, protocol,
+ port)['conntrack_helper']
+
+ # save ID of router associated with conntrack helper for final cleanup
+ cth['router_id'] = router_id
+
+ # save client to be used later in cls.delete_conntrack_helper for final
+ # cleanup
+ cth['client'] = client
+ cls.conntrack_helpers.append(cth)
+ return cth
+
+ @classmethod
+ def delete_conntrack_helper(cls, cth, client=None):
+ """Delete conntrack helper
+
+ :param client: Client to be used
+ If client is not given it will use the client used to create the
+ conntrack helper, or cls.client if unknown.
+ """
+
+ client = client or cth.get('client') or cls.client
+ client.delete_conntrack_helper(cth['router_id'], cth['id'])
+
class BaseAdminNetworkTest(BaseNetworkTest):