CLOUDSTACK-8532: Modification in setupClass to skip testcases rather than throwing an exception on "Exceeding connection limit to Netscaler device"

Signed-off-by: Gaurav Aradhye <gaurav.aradhye@clogeny.com>
This closes #343
diff --git a/test/integration/component/test_netscaler_lb_algo.py b/test/integration/component/test_netscaler_lb_algo.py
index bafecd0..9e5001c 100644
--- a/test/integration/component/test_netscaler_lb_algo.py
+++ b/test/integration/component/test_netscaler_lb_algo.py
@@ -58,6 +58,8 @@
 
         cls._cleanup = []
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
 
@@ -76,8 +78,12 @@
                 cls.testdata["service_offering"]
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
         return
 
     @classmethod
@@ -90,6 +96,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.account = Account.create(
@@ -265,6 +274,8 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -285,8 +296,12 @@
             )
             cls._cleanup.append(cls.service_offering)
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
 
         return
 
@@ -300,6 +315,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.account = Account.create(
@@ -483,6 +501,9 @@
 
         cls._cleanup = []
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
+
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -502,8 +523,12 @@
             )
             cls._cleanup.append(cls.service_offering)
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
         return
 
     @classmethod
@@ -516,6 +541,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.account = Account.create(
@@ -692,6 +720,9 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
+
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -743,8 +774,12 @@
                 networkid=cls.network.id
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
         return
 
     @classmethod
@@ -757,6 +792,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
@@ -904,6 +942,8 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -955,8 +995,13 @@
                 networkid=cls.network.id
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
+
         return
 
     @classmethod
@@ -969,6 +1014,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
@@ -1112,6 +1160,8 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -1164,8 +1214,13 @@
                 networkid=cls.network.id
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
+
         return
 
     @classmethod
@@ -1178,6 +1233,8 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
@@ -1325,6 +1382,8 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -1378,8 +1437,12 @@
                 networkid=cls.network.id
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
         return
 
     @classmethod
@@ -1392,6 +1455,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
@@ -1539,6 +1605,9 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
+
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -1592,8 +1661,12 @@
                 networkid=cls.network.id
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg =e 
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
         return
 
     @classmethod
@@ -1606,6 +1679,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
@@ -1754,6 +1830,8 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
             cls.netscaler = add_netscaler(cls.api_client, cls.zone.id, cls.testdata["configurableData"]["netscaler"])
             cls._cleanup.append(cls.netscaler)
             cls.network_offering = NetworkOffering.create(
@@ -1806,8 +1884,12 @@
                 networkid=cls.network.id
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
         return
 
     @classmethod
@@ -1820,6 +1902,9 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
+
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
diff --git a/test/integration/component/test_netscaler_lb_sticky.py b/test/integration/component/test_netscaler_lb_sticky.py
index 3494eae..8ac85ab 100644
--- a/test/integration/component/test_netscaler_lb_sticky.py
+++ b/test/integration/component/test_netscaler_lb_sticky.py
@@ -57,6 +57,8 @@
         cls.testdata["configurableData"]["netscaler"]["lbdevicededicated"] = False
 
         try:
+            cls.exception_string = "Connection limit to CFE exceeded"
+            cls.skiptest = False
             cls.netscaler = add_netscaler(
                 cls.api_client,
                 cls.zone.id,
@@ -110,8 +112,12 @@
                 networkid=cls.network.id
             )
         except Exception as e:
-            cls.tearDownClass()
-            raise Exception("Warning: Exception in setUpClass: %s" % e)
+            if cls.exception_string.lower() in e.lower():
+                cls.skiptest = True
+                cls.exception_msg = e
+            else:
+                cls.tearDownClass()
+                raise Exception("Warning: Exception in setUpClass: %s" % e)
         return
 
     @classmethod
@@ -124,6 +130,8 @@
         return
 
     def setUp(self):
+        if self.skiptest:
+            self.skipTest(self.exception_msg)
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []