Unit test for List_feature_group 87/11087/2
authorrajdeep11 <rajdeep.sin@samsung.com>
Fri, 12 May 2023 06:35:35 +0000 (12:05 +0530)
committerrajdeep11 <rajdeep.sin@samsung.com>
Fri, 12 May 2023 06:39:29 +0000 (12:09 +0530)
Issue-Id: AIMLFW-45

Change-Id: I0f8d80d212eb81a0a6ffcc7cd212ee19756fac1d
Signed-off-by: rajdeep11 <rajdeep.sin@samsung.com>
tests/test_common_db_fun.py
tests/test_tm_apis.py

index d5740cd..8a85388 100644 (file)
@@ -29,7 +29,7 @@ from trainingmgr.db.common_db_fun import get_data_extraction_in_progress_trainin
      get_all_versions_info_by_name, get_all_distinct_trainingjobs, \
      get_all_version_num_by_trainingjob_name, update_model_download_url, \
      add_update_trainingjob, get_all_jobs_latest_status_version, get_info_of_latest_version, \
-     add_featuregroup
+     add_featuregroup, get_feature_group_by_name_db, get_feature_groups_db
 
 mimic_db = {
             "usecase_name": "Tester",
@@ -529,4 +529,39 @@ class Test_Common_Db_Fun:
             assert False
         except Exception as err:
             fxn_name = "add_featuregroup"
+            assert str(err)=="Failed to execute query in {}DB Error".format(fxn_name)
+
+    def test_get_feature_groups_db(self):
+        checker=Check()
+        db_obj = db_helper_fg([['featureGroupName']], check_success_obj=checker)
+        out = get_feature_groups_db(db_obj)
+        assert out ==[['testing_hash']]
+    
+    def test_negative_get_feature_groups_db(self):
+        checker= Check()
+        try:
+            db_obj= db_helper_fg([[None]], raise_exception=True, check_success_obj=checker)
+            out = get_feature_groups_db(db_obj)
+            assert False
+        except Exception as err:
+            fxn_name="get_feature_groups"
+            assert str(err) == "Failed to execute query in {}DB Error".format(fxn_name)
+
+    
+    def test_get_feature_group_by_name_db(self):
+        checker=Check()
+        featuregroup_name='tester'
+        db_obj = db_helper_fg([['feature_list'], ['datalake_source']], check_success_obj=checker)
+        out = get_feature_group_by_name_db(db_obj, featuregroup_name)
+        assert out != None, 'get_feature_group_by_name_db FAILED'
+    
+    def test_negative_get_feature_group_by_name_db(self):
+        checker=Check()
+        featuregroup_name='tester'
+        try:
+            db_obj = db_helper_fg([['feature_list'], ['datalake_source']],raise_exception=True, check_success_obj=checker)
+            out = get_feature_group_by_name_db(db_obj, featuregroup_name)
+            assert False
+        except Exception as err:
+            fxn_name="get_feature_groups"
             assert str(err)=="Failed to execute query in {}DB Error".format(fxn_name)
\ No newline at end of file
index 802cc8f..0557210 100644 (file)
@@ -33,6 +33,7 @@ from threading import Lock
 from trainingmgr import trainingmgr_main 
 from trainingmgr.common.tmgr_logger import TMLogger
 from trainingmgr.common.trainingmgr_config import TrainingMgrConfig
+from trainingmgr.common.exceptions_utls import DBException
 trainingmgr_main.LOGGER = pytest.logger
 trainingmgr_main.LOCK = Lock()
 trainingmgr_main.DATAEXTRACTION_JOBS_CACHE = {}
@@ -904,3 +905,54 @@ class Test_create_featuregroup:
         trainingmgr_main.LOGGER.debug(response.data)
         assert response.data==expected_response
         assert response.status_code ==status.HTTP_500_INTERNAL_SERVER_ERROR, "Return status code not equal"  
+
+class Test_get_feature_group:
+    def setup_method(self):
+        self.client = trainingmgr_main.APP.test_client(self)
+        self.logger = trainingmgr_main.LOGGER
+
+    result=[('testing', '', 'InfluxSource', True, '21.0.0.21', '12345', '', '', '', '')]
+    @patch('trainingmgr.trainingmgr_main.get_feature_groups_db', return_value=result)
+    def test_get_feature_group(self,mock1):
+        expected_data=b'{"featuregroups": [{"featuregroup_name": "testing", "features": "", "datalake": "InfluxSource", "dme": true}]}'
+        response=self.client.get('/featureGroup')
+        assert response.status_code==200, "status code returned is not equal"
+        assert response.data==expected_data
+
+    @patch('trainingmgr.trainingmgr_main.get_feature_groups_db', side_effect=DBException('Failed to execute query in get_feature_groupsDB ERROR'))
+    def test_negative_get_feature_group(self, mock1):
+        expected_data=b'{"Exception": "Failed to execute query in get_feature_groupsDB ERROR"}'
+        response=self.client.get('/featureGroup')
+        assert response.status_code== status.HTTP_500_INTERNAL_SERVER_ERROR, "status code is not equal"
+        assert response.data == expected_data
+
+class Test_get_feature_group_by_name:
+    def setup_method(self):
+        self.client = trainingmgr_main.APP.test_client(self)
+        self.logger = trainingmgr_main.LOGGER
+
+    result=[('testing', '', 'InfluxSource', True, '21.0.0.21', '12345', '', '', '', '')]
+    @patch('trainingmgr.trainingmgr_main.get_feature_group_by_name_db', return_value=result)
+    def test_get_feature_group_by_name(self, mock1):
+        expected_data=b'{"featuregroup": [{"featuregroup_name": "testing", "features": [""], "datalake": "InfluxSource", "dme": true, "dme_host": "21.0.0.21", "dme_port": "12345", "bucket": "", "token": "", "source_name": "", "db_org": ""}]}'
+        fg_name='testing'
+        response=self.client.get('/featureGroup/{}'.format(fg_name))
+        assert response.status_code == 200 , "status code is not equal"
+        assert response.data == expected_data
+    
+    @patch('trainingmgr.trainingmgr_main.get_feature_group_by_name_db', return_value=None)
+    def test_negative_get_feature_group_by_name(self, mock1):
+        expected_data=b'{"Exception": "Failed to fetch feature group info from db"}'
+        fg_name='testing'
+        response=self.client.get('/featureGroup/{}'.format(fg_name))
+        print(response.data)
+        assert response.status_code == 404 , "status code is not equal"
+        assert response.data == expected_data
+    
+    @patch('trainingmgr.trainingmgr_main.get_feature_group_by_name_db', side_effect=DBException("Failed to execute query in get_feature_groupsDB ERROR"))
+    def test_negative_get_feature_group_by_name_2(self, mock1):
+        expected_data=b'{"Exception": "Failed to execute query in get_feature_groupsDB ERROR"}'
+        fg_name='testing'
+        response=self.client.get('/featureGroup/{}'.format(fg_name))
+        assert response.status_code == 500 , "status code is not equal"
+        assert response.data == expected_data
\ No newline at end of file