Better exception handling 72/115972/1
authorSylvain Desbureaux <sylvain.desbureaux@orange.com>
Tue, 1 Dec 2020 16:49:31 +0000 (17:49 +0100)
committerSylvain Desbureaux <sylvain.desbureaux@orange.com>
Tue, 1 Dec 2020 16:51:56 +0000 (17:51 +0100)
Instead of catching all exceptions that can occurs and miss one, let's
create a "parent" exception class for OnapTest and catch only this one.

In order to know what's the error, we also create a class attribute
(`error_message`) that gives us the reason for exception.

Issue-ID: INT-1796
Signed-off-by: Sylvain Desbureaux <sylvain.desbureaux@orange.com>
Change-Id: I798d8c6270c466b1d9be6511f52fd9441401c9c8

src/onaptests/scenario/basic_cnf.py
src/onaptests/scenario/basic_network.py
src/onaptests/scenario/basic_vm.py
src/onaptests/scenario/clearwater_ims.py
src/onaptests/utils/exceptions.py

index 30c3c3b..306205f 100644 (file)
@@ -5,6 +5,7 @@ import time
 
 from xtesting.core import testcase
 from onapsdk.configuration import settings
+
 import onaptests.utils.exceptions as onap_test_exceptions
 from onaptests.steps.instantiate.vf_module_ala_carte import YamlTemplateVfModuleAlaCarteInstantiateStep
 
@@ -41,33 +42,9 @@ class BasicCnf(testcase.TestCase):
             else:
                 self.__logger.info("No cleanup requested. Test completed.")
                 self.result = 100
-        except onap_test_exceptions.TestConfigurationException:
-            self.result = 0
-            self.__logger.error("Basic CNF configuration error")
-        except onap_test_exceptions.ServiceInstantiateException:
-            self.result = 0
-            self.__logger.error("Basic CNF service instantiation error")
-        except onap_test_exceptions.ServiceCleanupException:
-            self.result = 0
-            self.__logger.error("Basic CNF service instance cleanup error")
-        except onap_test_exceptions.VnfInstantiateException:
-            self.result = 0
-            self.__logger.error("Basic CNF Vnf instantiation error")
-        except onap_test_exceptions.VnfCleanupException:
-            self.result = 0
-            self.__logger.error("Basic CNF Vnf instance cleanup error")
-        except onap_test_exceptions.ProfileInformationException:
-            self.__logger.error("Missing k8s profile information")
-            self.result = 0
-        except onap_test_exceptions.ProfileCleanupException:
-            self.__logger.error("K8s profile deletion failed")
-            self.result = 0
-        except onap_test_exceptions.VfModuleInstantiateException:
-            self.result = 0
-            self.__logger.error("Basic CNF Module instantiation error")
-        except onap_test_exceptions.VfModuleCleanupException:
-            self.__logger.error("Basic CNF Module cleanup failed.")
+        except onap_test_exceptions.OnapTestException as exc:
             self.result = 0
+            self.__logger.error(exc.error_message)
         finally:
             self.stop_time = time.time()
 
index de465d3..8aafd32 100644 (file)
@@ -46,18 +46,9 @@ class BasicNetwork(testcase.TestCase):
             else:
                 self.__logger.info("No cleanup requested. Test completed.")
                 self.result = 100
-        except onap_test_exceptions.ServiceInstantiateException:
-            self.__logger.error("Basic network service instantiation failed.")
-            self.result = 0
-        except onap_test_exceptions.ServiceInstantiateException:
-            self.__logger.error("Basic network service cleanup failed.")
-            self.result = 0
-        except onap_test_exceptions.NetworkInstantiateException:
-            self.__logger.error("Basic network VL instantiation failed.")
-            self.result = 0
-        except onap_test_exceptions.NetworkCleanupException:
-            self.__logger.error("Basic network VL cleanup failed.")
+        except onap_test_exceptions.OnapTestException as exc:
             self.result = 0
+            self.__logger.error(exc.error_message)
         finally:
             self.stop_time = time.time()
 
index 35cedbc..cbf9b7c 100644 (file)
@@ -5,6 +5,7 @@ import time
 
 from xtesting.core import testcase
 from onapsdk.configuration import settings
+
 import onaptests.utils.exceptions as onap_test_exceptions
 from onaptests.steps.instantiate.vf_module_ala_carte import YamlTemplateVfModuleAlaCarteInstantiateStep
 
@@ -42,27 +43,9 @@ class BasicVm(testcase.TestCase):
             else:
                 self.__logger.info("No cleanup requested. Test completed.")
                 self.result = 100
-        except onap_test_exceptions.TestConfigurationException:
-            self.result = 0
-            self.__logger.error("Basic VM configuration error")
-        except onap_test_exceptions.ServiceInstantiateException:
-            self.result = 0
-            self.__logger.error("Basic VM instantiation error")
-        except onap_test_exceptions.ServiceCleanupException:
-            self.result = 0
-            self.__logger.error("Basic VM instance cleanup error")
-        except onap_test_exceptions.VnfInstantiateException:
-            self.result = 0
-            self.__logger.error("Basic VM Vnf instantiation error")
-        except onap_test_exceptions.VnfCleanupException:
-            self.result = 0
-            self.__logger.error("Basic VM Vnf instance cleanup error")
-        except onap_test_exceptions.VfModuleInstantiateException:
-            self.result = 0
-            self.__logger.error("Basic VM Module instantiation error")
-        except onap_test_exceptions.VfModuleCleanupException:
-            self.__logger.error("Basic VM Module cleanup failed.")
+        except onap_test_exceptions.OnapTestException as exc:
             self.result = 0
+            self.__logger.error(exc.error_message)
         finally:
             self.stop_time = time.time()
 
index 0177e02..8a68fa9 100644 (file)
@@ -5,6 +5,8 @@ import time
 
 from xtesting.core import testcase
 from onapsdk.configuration import settings
+
+import onaptests.utils.exceptions as onap_test_exceptions
 from onaptests.steps.instantiate.vf_module_ala_carte import YamlTemplateVfModuleAlaCarteInstantiateStep
 
 class ClearwaterIms(testcase.TestCase):
@@ -42,9 +44,10 @@ class ClearwaterIms(testcase.TestCase):
                 self.__logger.info("No cleanup requested. Test completed.")
                 self.result = 100
             self.stop_time = time.time()
-        except:
-            self.__logger.error("Clearwater IMS test case failed.")
+        except onap_test_exceptions.OnapTestException as exc:
             self.result = 0
+            self.__logger.error(exc.error_message)
+        finally:
             self.stop_time = time.time()
 
     def clean(self):
index daadc32..8b359c3 100644 (file)
@@ -1,6 +1,4 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2018 Orange and others.
+# Copyright (c) 2018-2020 Orange and others.
 #
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 
 __author__ = ("Morgan Richomme <morgan.richomme@orange.com>")
 
+class  OnapTestException(Exception):
+    """Parent Class for all Onap Test Exceptions."""
+    error_message='Generic OnapTest exception'
 
-class TestConfigurationException(Exception):
+class TestConfigurationException(OnapTestException):
     """Raise when configutation of the use cases is not complete or buggy."""
+    error_message='Configuration error'
 
-
-class ServiceDistributionException(Exception):
+class ServiceDistributionException(OnapTestException):
     """Service not properly distributed."""
+    error_message='Service not well distributed'
 
 
-class ServiceInstantiateException(Exception):
-    """Service cannot be instantiate."""
+class ServiceInstantiateException(OnapTestException):
+    """Service cannot be instantiated."""
+    error_message='Service instantiation error'
 
 
-class ServiceCleanupException(Exception):
+class ServiceCleanupException(OnapTestException):
     """Service cannot be cleaned."""
+    error_message='Service not well cleaned up'
 
 
-class VnfInstantiateException(Exception):
-    """VNF cannot be instantiate."""
+class VnfInstantiateException(OnapTestException):
+    """VNF cannot be instantiated."""
+    error_message='VNF instantiation error'
 
 
-class VnfCleanupException(Exception):
+class VnfCleanupException(OnapTestException):
     """VNF cannot be cleaned."""
+    error_message="VNF can't be cleaned"
 
 
-class VfModuleInstantiateException(Exception):
-    """VF Module cannot be instantiate."""
+class VfModuleInstantiateException(OnapTestException):
+    """VF Module cannot be instantiated."""
+    error_message='VF Module instantiation error'
 
 
-class VfModuleCleanupException(Exception):
-    """VF Module cannot be instantiate."""
+class VfModuleCleanupException(OnapTestException):
+    """VF Module cannot be cleaned."""
+    error_message="VF Module can't be cleaned"
 
 
-class NetworkInstantiateException(Exception):
+class NetworkInstantiateException(OnapTestException):
     """Network cannot be instantiate."""
+    error_message='Network instantiation error'
 
 
-class NetworkCleanupException(Exception):
+class NetworkCleanupException(OnapTestException):
     """Network cannot be cleaned."""
+    error_message="Network can't be cleaned"
 
-class ProfileInformationException(Exception):
+class ProfileInformationException(OnapTestException):
     """Missing k8s profile information."""
+    error_message='"Missing k8s profile information'
 
-class ProfileCleanupException(Exception):
+class ProfileCleanupException(OnapTestException):
     """K8s profile cannot be cleaned."""
+    error_message="Profile can't be cleaned"