From: Yongjoo Ahn Date: Wed, 9 Aug 2023 02:35:00 +0000 (+0900) Subject: [UTC][nnstreamer][ACR-1784] Add TCs for new APIs X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=00c7699fda880024529118ab77ca1df1cb656c17;p=test%2Ftct%2Fnative%2Fapi.git [UTC][nnstreamer][ACR-1784] Add TCs for new APIs - Add TCs testing newly added APIs: - ml_information_destroy - ml_information_list_destroy - ml_information_list_length - ml_information_list_get - ml_service_resource_add - ml_service_resource_get - ml_service_resource_delete Change-Id: Ic8d3b5a3491061714b9ee39d5c1c99d1b450aec2 Signed-off-by: Yongjoo Ahn --- diff --git a/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h b/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h index cebcf5b9b..1ab92b242 100755 --- a/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h +++ b/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h @@ -374,6 +374,18 @@ extern int utc_ml_service_model_get_all_n1 (void); extern int utc_ml_service_model_delete_n1 (void); extern int utc_ml_service_ml_option_get_n1 (void); extern int utc_ml_service_model_ml_information_get_n1 (void); +extern int utc_ml_service_model_ml_information_destroy_n1 (void); +extern int utc_ml_service_model_ml_information_list_destroy_n1 (void); +extern int utc_ml_service_model_ml_information_list_length_n1 (void); +extern int utc_ml_service_model_ml_information_list_get_n1 (void); + +extern int utc_ml_service_resource_add_n1 (void); +extern int utc_ml_service_resource_add_n2 (void); +extern int utc_ml_service_resource_add_n3 (void); +extern int utc_ml_service_resource_delete_n1 (void); +extern int utc_ml_service_resource_get_n1 (void); +extern int utc_ml_service_resource_get_n2 (void); +extern int utc_ml_service_resource_scenario_p1 (void); testcase tc_array[] = { {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup}, @@ -708,6 +720,18 @@ testcase tc_array[] = { {"utc_ml_service_model_delete_n1", utc_ml_service_model_delete_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {"utc_ml_service_ml_option_get_n1", utc_ml_service_ml_option_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {"utc_ml_service_model_ml_information_get_n1", utc_ml_service_model_ml_information_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_destroy_n1", utc_ml_service_model_ml_information_destroy_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_destroy_n1", utc_ml_service_model_ml_information_list_destroy_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_length_n1", utc_ml_service_model_ml_information_list_length_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_get_n1", utc_ml_service_model_ml_information_list_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + + {"utc_ml_service_resource_add_n1", utc_ml_service_resource_add_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_add_n2", utc_ml_service_resource_add_n2, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_add_n3", utc_ml_service_resource_add_n3, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_delete_n1", utc_ml_service_resource_delete_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_get_n1", utc_ml_service_resource_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_get_n2", utc_ml_service_resource_get_n2, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_scenario_p1", utc_ml_service_resource_scenario_p1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {NULL, NULL} }; diff --git a/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h b/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h index cebcf5b9b..1ab92b242 100755 --- a/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h +++ b/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h @@ -374,6 +374,18 @@ extern int utc_ml_service_model_get_all_n1 (void); extern int utc_ml_service_model_delete_n1 (void); extern int utc_ml_service_ml_option_get_n1 (void); extern int utc_ml_service_model_ml_information_get_n1 (void); +extern int utc_ml_service_model_ml_information_destroy_n1 (void); +extern int utc_ml_service_model_ml_information_list_destroy_n1 (void); +extern int utc_ml_service_model_ml_information_list_length_n1 (void); +extern int utc_ml_service_model_ml_information_list_get_n1 (void); + +extern int utc_ml_service_resource_add_n1 (void); +extern int utc_ml_service_resource_add_n2 (void); +extern int utc_ml_service_resource_add_n3 (void); +extern int utc_ml_service_resource_delete_n1 (void); +extern int utc_ml_service_resource_get_n1 (void); +extern int utc_ml_service_resource_get_n2 (void); +extern int utc_ml_service_resource_scenario_p1 (void); testcase tc_array[] = { {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup}, @@ -708,6 +720,18 @@ testcase tc_array[] = { {"utc_ml_service_model_delete_n1", utc_ml_service_model_delete_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {"utc_ml_service_ml_option_get_n1", utc_ml_service_ml_option_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {"utc_ml_service_model_ml_information_get_n1", utc_ml_service_model_ml_information_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_destroy_n1", utc_ml_service_model_ml_information_destroy_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_destroy_n1", utc_ml_service_model_ml_information_list_destroy_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_length_n1", utc_ml_service_model_ml_information_list_length_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_get_n1", utc_ml_service_model_ml_information_list_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + + {"utc_ml_service_resource_add_n1", utc_ml_service_resource_add_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_add_n2", utc_ml_service_resource_add_n2, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_add_n3", utc_ml_service_resource_add_n3, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_delete_n1", utc_ml_service_resource_delete_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_get_n1", utc_ml_service_resource_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_get_n2", utc_ml_service_resource_get_n2, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_scenario_p1", utc_ml_service_resource_scenario_p1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {NULL, NULL} }; diff --git a/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h b/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h index cebcf5b9b..1ab92b242 100755 --- a/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h +++ b/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h @@ -374,6 +374,18 @@ extern int utc_ml_service_model_get_all_n1 (void); extern int utc_ml_service_model_delete_n1 (void); extern int utc_ml_service_ml_option_get_n1 (void); extern int utc_ml_service_model_ml_information_get_n1 (void); +extern int utc_ml_service_model_ml_information_destroy_n1 (void); +extern int utc_ml_service_model_ml_information_list_destroy_n1 (void); +extern int utc_ml_service_model_ml_information_list_length_n1 (void); +extern int utc_ml_service_model_ml_information_list_get_n1 (void); + +extern int utc_ml_service_resource_add_n1 (void); +extern int utc_ml_service_resource_add_n2 (void); +extern int utc_ml_service_resource_add_n3 (void); +extern int utc_ml_service_resource_delete_n1 (void); +extern int utc_ml_service_resource_get_n1 (void); +extern int utc_ml_service_resource_get_n2 (void); +extern int utc_ml_service_resource_scenario_p1 (void); testcase tc_array[] = { {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup}, @@ -708,6 +720,18 @@ testcase tc_array[] = { {"utc_ml_service_model_delete_n1", utc_ml_service_model_delete_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {"utc_ml_service_ml_option_get_n1", utc_ml_service_ml_option_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {"utc_ml_service_model_ml_information_get_n1", utc_ml_service_model_ml_information_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_destroy_n1", utc_ml_service_model_ml_information_destroy_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_destroy_n1", utc_ml_service_model_ml_information_list_destroy_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_length_n1", utc_ml_service_model_ml_information_list_length_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_model_ml_information_list_get_n1", utc_ml_service_model_ml_information_list_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + + {"utc_ml_service_resource_add_n1", utc_ml_service_resource_add_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_add_n2", utc_ml_service_resource_add_n2, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_add_n3", utc_ml_service_resource_add_n3, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_delete_n1", utc_ml_service_resource_delete_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_get_n1", utc_ml_service_resource_get_n1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_get_n2", utc_ml_service_resource_get_n2, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, + {"utc_ml_service_resource_scenario_p1", utc_ml_service_resource_scenario_p1, utc_machine_learning_service_startup, utc_machine_learning_service_cleanup}, {NULL, NULL} }; diff --git a/src/utc/nnstreamer/utc-machine-learning-service.c b/src/utc/nnstreamer/utc-machine-learning-service.c index c304dd019..226b8000f 100644 --- a/src/utc/nnstreamer/utc-machine-learning-service.c +++ b/src/utc/nnstreamer/utc-machine-learning-service.c @@ -1100,3 +1100,287 @@ int utc_ml_service_model_ml_information_get_n1 (void) return 0; } + +/** + * @testcase utc_ml_service_model_ml_information_destroy_n1 + * @since_tizen 8.0 + * @description Negative test case of using ml_information_destroy with invalid parameter + */ +int utc_ml_service_model_ml_information_destroy_n1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + status = ml_information_destroy (NULL); + assert_eq (ML_ERROR_INVALID_PARAMETER, status); + + return 0; +} + +/** + * @testcase utc_ml_service_model_ml_information_list_destroy_n1 + * @since_tizen 8.0 + * @description Negative test case of using ml_information_list_destroy with invalid parameter + */ +int utc_ml_service_model_ml_information_list_destroy_n1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + status = ml_information_list_destroy (NULL); + assert_eq (ML_ERROR_INVALID_PARAMETER, status); + + return 0; +} + +/** + * @testcase utc_ml_service_model_ml_information_list_length_n1 + * @since_tizen 8.0 + * @description Negative test case of using ml_information_list_length with invalid parameter + */ +int utc_ml_service_model_ml_information_list_length_n1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + const gchar *model_name = "some_model_name"; + guint version, length; + + status = ml_service_model_delete (model_name, 0U); + assert (status == ML_ERROR_NONE || status == ML_ERROR_INVALID_PARAMETER); + + status = ml_service_model_register (model_name, test_model, true, NULL, &version); + assert_eq (ML_ERROR_NONE, status); + + ml_information_list_h info_list_h = NULL; + status = ml_service_model_get_all (model_name, &info_list_h); + assert_eq (ML_ERROR_NONE, status); + + /* invalid parameter for ml_information_list_length */ + status = ml_information_list_length (info_list_h, NULL); + assert_eq (ML_ERROR_INVALID_PARAMETER, status); + + /* invalid parameter for ml_information_list_length */ + status = ml_information_list_length (NULL, &length); + assert_eq (ML_ERROR_INVALID_PARAMETER, status); + + /* proper parameters for ml_information_list_length */ + status = ml_information_list_length (info_list_h, &length); + assert_eq (ML_ERROR_NONE, status); + assert_eq (1U, length); + + status = ml_information_list_destroy (info_list_h); + assert_eq (ML_ERROR_NONE, status); + + status = ml_service_model_delete (model_name, 0U); + assert_eq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_model_ml_information_list_get_n1 + * @since_tizen 8.0 + * @description Negative test case of using ml_information_list_get with invalid parameter + */ +int utc_ml_service_model_ml_information_list_get_n1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + const gchar *model_name = "some_model_name"; + guint version, length; + + status = ml_service_model_delete (model_name, 0U); + assert (status == ML_ERROR_NONE || status == ML_ERROR_INVALID_PARAMETER); + + status = ml_service_model_register (model_name, test_model, true, NULL, &version); + assert_eq (ML_ERROR_NONE, status); + + ml_information_list_h info_list_h = NULL; + status = ml_service_model_get_all (model_name, &info_list_h); + assert_eq (ML_ERROR_NONE, status); + + status = ml_information_list_length (info_list_h, &length); + assert_eq (ML_ERROR_NONE, status); + assert_eq (1U, length); + + ml_information_h info_h = NULL; + + /* invalid parameter for ml_information_list_get */ + status = ml_information_list_get (NULL, 0U, &info_h); + assert_eq (ML_ERROR_INVALID_PARAMETER, status); + + /* invalid parameter for ml_information_list_get */ + status = ml_information_list_get (info_list_h, 0U, NULL); + assert_eq (ML_ERROR_INVALID_PARAMETER, status); + + /* invalid parameter for ml_information_list_get */ + status = ml_information_list_get (info_list_h, 1U, &info_h); + assert_eq (ML_ERROR_INVALID_PARAMETER, status); + + /* proper parameters for ml_information_list_get */ + status = ml_information_list_get (info_list_h, 0U, &info_h); + assert_eq (ML_ERROR_NONE, status); + + status = ml_information_list_destroy (info_list_h); + assert_eq (ML_ERROR_NONE, status); + + status = ml_service_model_delete (model_name, 0U); + assert_eq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_resource_add_n1 + * @since_tizen 8.0 + * @description Negative test case of using ml_service_resource_add with invalid parameter + */ +int utc_ml_service_resource_add_n1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + status = ml_service_resource_add (NULL, test_model, "add-resource-invalid-key"); + assert_neq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_resource_add_n2 + * @since_tizen 8.0 + * @description Negative test case of using ml_service_resource_add with invalid parameter + */ +int utc_ml_service_resource_add_n2 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + status = ml_service_resource_add ("tct-utc-ml-svc-res", NULL, "add-resource-invalid-path"); + assert_neq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_resource_add_n3 + * @since_tizen 8.0 + * @description Negative test case of using ml_service_resource_add with invalid parameter + */ +int utc_ml_service_resource_add_n3 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + status = ml_service_resource_add ("tct-utc-ml-svc-res", "/some/invalid/path/non_exist.tflite", "add-resource-non-exist-path"); + assert_neq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_resource_delete_n1 + * @since_tizen 8.0 + * @description Negative test case of using ml_service_resource_delete with invalid parameter + */ +int utc_ml_service_resource_delete_n1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + status = ml_service_resource_delete (NULL); + assert_neq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_resource_get_n1 + * @since_tizen 8.0 + * @description Negative test case of using ml_service_resource_get with invalid parameter + */ +int utc_ml_service_resource_get_n1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + ml_information_h res = NULL; + + status = ml_service_resource_get (NULL, &res); + assert_neq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_resource_get_n2 + * @since_tizen 8.0 + * @description Negative test case of using ml_service_resource_get with invalid parameter + */ +int utc_ml_service_resource_get_n2 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + status = ml_service_resource_get ("tct-utc-ml-svc-res", NULL); + assert_neq (ML_ERROR_NONE, status); + + return 0; +} + +/** + * @testcase utc_ml_service_resource_scenario_p1 + * @since_tizen 8.0 + * @description Usage scenario test case of ml_service_resource_* API + */ +int utc_ml_service_resource_scenario_p1 (void) +{ + IS_SUPPORT_ML_SERVICE_FEATURE; + + const gchar *key = "utc-res-test"; + gchar *res_path[2]; + gchar *res_desc[2]; + guint length; + ml_information_list_h info_list = NULL; + ml_information_h info = NULL; + + /* delete all resources with the key before test */ + status = ml_service_resource_delete (key); + assert (ML_ERROR_NONE == status || ML_ERROR_INVALID_PARAMETER == status); + + res_path[0] = g_strdup (test_model); + res_desc[0] = g_strdup ("res1 description"); + res_path[1] = g_strdup (test_model_add); + res_desc[1] = g_strdup ("res2 description"); + + for (guint i = 0; i < 2; ++i) { + status = ml_service_resource_add (key, res_path[i], res_desc[i]); + assert_eq (ML_ERROR_NONE, status); + } + + status = ml_service_resource_get (key, &info_list); + assert_eq (ML_ERROR_NONE, status); + + status = ml_information_list_length (info_list, &length); + assert_eq (ML_ERROR_NONE, status); + assert_eq (2U, length); + + for (guint i = 0; i < length; ++i) { + gchar *path, *desc; + status = ml_information_list_get (info_list, i, &info); + assert_eq (ML_ERROR_NONE, status); + + status = ml_information_get (info, "path", (void **) &path); + assert_eq (ML_ERROR_NONE, status); + assert (0 == strcmp (res_path[i], path)); + + status = ml_information_get (info, "description", (void **) &desc); + assert_eq (ML_ERROR_NONE, status); + assert (0 == strcmp (res_desc[i], desc)); + } + + status = ml_information_list_destroy (info_list); + assert_eq (ML_ERROR_NONE, status); + + status = ml_service_resource_delete (key); + assert_eq (ML_ERROR_NONE, status); + + for (guint i = 0; i < 2; ++i) { + g_free (res_path[i]); + g_free (res_desc[i]); + } + + return 0; +}