Add test cases for checking names of training job and feature group 93/11193/2
authorTaewan Kim <t25.kim@samsung.com>
Tue, 23 May 2023 07:11:20 +0000 (16:11 +0900)
committerTaewan Kim <t25.kim@samsung.com>
Tue, 23 May 2023 07:25:29 +0000 (16:25 +0900)
Issue-ID: AIMLFW-13

Change-Id: I33d42463a08a0f0e03ee4aac2a00755da918b261
Signed-off-by: Taewan Kim <t25.kim@samsung.com>
tests/test_tm_apis.py
tests/test_trainingmgr_util.py

index e076146..6bfb8d0 100644 (file)
@@ -832,7 +832,7 @@ class Test_create_featuregroup:
     @patch('trainingmgr.trainingmgr_main.create_dme_filtered_data_job', return_value=the_response1)
     @patch('trainingmgr.trainingmgr_main.TRAININGMGR_CONFIG_OBJ', return_value = mocked_TRAININGMGR_CONFIG_OBJ)
     @patch('trainingmgr.trainingmgr_main.delete_feature_group_by_name')
-    def test_create_featuregroup_2(self, mock1, mock2, mock3,mock4,mock5, mock6):
+    def test_create_featuregroup_2(self, mock1, mock2, mock3, mock4, mock5, mock6):
         create_featuregroup_req={
                             "featureGroupName": "testing_hash",
                             "feature_list": "pdcpBytesDl,pdcpBytesUl",
@@ -864,7 +864,7 @@ class Test_create_featuregroup:
     @patch('trainingmgr.trainingmgr_main.create_dme_filtered_data_job', return_value=the_response2)
     @patch('trainingmgr.trainingmgr_main.TRAININGMGR_CONFIG_OBJ', return_value = mocked_TRAININGMGR_CONFIG_OBJ)
     @patch('trainingmgr.trainingmgr_main.delete_feature_group_by_name')
-    def test_negative_create_featuregroup_1(self, mock1, mock2, mock3,mock4,mock5, mock6):
+    def test_negative_create_featuregroup_1(self, mock1, mock2, mock3, mock4, mock5, mock6):
         create_featuregroup_req={
                             "featureGroupName": "testing_hash",
                             "feature_list": "pdcpBytesDl,pdcpBytesUl",
@@ -887,9 +887,10 @@ class Test_create_featuregroup:
 
     feature_group_data3=('testing_hash','pdcpBytesDl,pdcpBytesUl','InfluxSource',True,'127.0.0.1','31823','pm-bucket','','','')
     @patch('trainingmgr.trainingmgr_main.check_feature_group_data', return_value=feature_group_data3)
+    @patch('trainingmgr.trainingmgr_main.get_feature_group_by_name_db', return_value=False)
     @patch('trainingmgr.trainingmgr_main.add_featuregroup',side_effect = Exception('Mocked error'))
     @patch('trainingmgr.trainingmgr_main.delete_feature_group_by_name')
-    def test_neagtive_create_featuregroup_2(self, mock1, mock2, mock3):
+    def test_neagtive_create_featuregroup_2(self, mock1, mock2, mock3, mock4):
         create_featuregroup_req={
                             "featureGroupName": "testing_hash",
                             "feature_list": "pdcpBytesDl,pdcpBytesUl",
@@ -909,6 +910,29 @@ class Test_create_featuregroup:
         assert response.data==expected_response
         assert response.status_code ==status.HTTP_500_INTERNAL_SERVER_ERROR, "Return status code not equal"  
 
+    feature_group_data3=('testing_hash!@','pdcpBytesDl,pdcpBytesUl','InfluxSource',True,'127.0.0.1','31823','pm-bucket','','','')
+    @patch('trainingmgr.trainingmgr_main.check_feature_group_data', return_value=feature_group_data3)
+    @patch('trainingmgr.trainingmgr_main.get_feature_group_by_name_db', return_value=True)
+    def test_neagtive_create_featuregroup_3(self, mock1, mock2):
+        create_featuregroup_req={
+                            "featureGroupName": "testing_hash!@",
+                            "feature_list": "pdcpBytesDl,pdcpBytesUl",
+                            "datalake_source": "InfluxSource",
+                            "enable_Dme": False,
+                            "DmeHost": "",
+                            "DmePort": "",
+                            "bucket": "",
+                            "token": "",
+                            "source_name": "",
+                            "dbOrg": ""
+                                }
+        expected_response=b'{"Exception": "Failed to create the feature group since feature group not valid or already present"}'
+        response=self.client.post("/featureGroup", data=json.dumps(create_featuregroup_req),
+                                  content_type="application/json")
+        trainingmgr_main.LOGGER.debug(response.data)
+        assert response.data==expected_response
+        assert response.status_code==status.HTTP_400_BAD_REQUEST, "Return status code not equal"
+
 class Test_get_feature_group:
     def setup_method(self):
         self.client = trainingmgr_main.APP.test_client(self)
index 8b6335e..13675e7 100644 (file)
@@ -41,6 +41,7 @@ from trainingmgr.common.trainingmgr_util import response_for_training, check_key
 from requests.models import Response   
 from trainingmgr import trainingmgr_main
 from trainingmgr.common.tmgr_logger import TMLogger
+from trainingmgr.common.exceptions_utls import APIException,TMException,DBException
 trainingmgr_main.LOGGER = pytest.logger
 
 class Test_response_for_training:
@@ -617,28 +618,32 @@ class Test_validate_trainingjob_name:
         expected_data = True
         assert validate_trainingjob_name(trainingjob_name,ps_db_obj) == expected_data,"data not equal"
 
-    @patch('trainingmgr.common.trainingmgr_util.get_all_versions_info_by_name', return_value = Exception("Could not get info from db for "))
+    @patch('trainingmgr.common.trainingmgr_util.get_all_versions_info_by_name', side_effect = DBException)
     def test_validate_trainingjob_name_2(self,mock1):
         trainingjob_name = "usecase8"
         ps_db_obj = ()
-        expected_data = True
         try:
             validate_trainingjob_name(trainingjob_name,ps_db_obj)
-            assert validate_trainingjob_name(trainingjob_name,ps_db_obj) == expected_data,"data not equal"
-            assert False
-        except Exception:
-            assert True
+        except DBException as err:
+            assert 'Could not get info from db for ' + trainingjob_name in str(err)
     
     def test_negative_validate_trainingjob_name(self):
-        trainingjob_name = "usecase8"
+        short_name = "__"
+        long_name = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
+        not_allowed_symbol_name = "case@#"
         ps_db_obj = ()
-        expected_data = True
         try:
-            validate_trainingjob_name(trainingjob_name,ps_db_obj)
-            assert validate_trainingjob_name(trainingjob_name,ps_db_obj) == expected_data,"data not equal"
-            assert False
-        except Exception:
-            assert True
+            validate_trainingjob_name(short_name,ps_db_obj)
+        except TMException as err:
+            assert str(err) == "The name of training job is invalid."
+        try:
+            validate_trainingjob_name(long_name,ps_db_obj)
+        except TMException as err:
+            assert str(err) == "The name of training job is invalid."
+        try:
+            validate_trainingjob_name(not_allowed_symbol_name,ps_db_obj)
+        except TMException as err:
+            assert str(err) == "The name of training job is invalid."
 
 class Test_get_all_pipeline_names_svc:
     # testing the get_all_pipeline service
@@ -700,4 +705,4 @@ class Test_check_feature_group_data:
             assert check_feature_group_data(json_data)==expected_data, 'data not equal'
             assert False
         except:
-            assert True
\ No newline at end of file
+            assert True