[UTC][nnstreamer][ACR-1784] Add TCs for new APIs 17/297017/2
authorYongjoo Ahn <yongjoo1.ahn@samsung.com>
Wed, 9 Aug 2023 02:35:00 +0000 (11:35 +0900)
committerYongjoo Ahn <yongjoo1.ahn@samsung.com>
Wed, 9 Aug 2023 03:52:34 +0000 (12:52 +0900)
- 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 <yongjoo1.ahn@samsung.com>
src/utc/nnstreamer/tct-nnstreamer-core_mobile.h
src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h
src/utc/nnstreamer/tct-nnstreamer-core_wearable.h
src/utc/nnstreamer/utc-machine-learning-service.c

index cebcf5b9b438ae6c9f3adc94e800c968e6d8fef1..1ab92b2428790ca7d4eaa6e09231e7d33e2dcbb3 100755 (executable)
@@ -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}
 };
index cebcf5b9b438ae6c9f3adc94e800c968e6d8fef1..1ab92b2428790ca7d4eaa6e09231e7d33e2dcbb3 100755 (executable)
@@ -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}
 };
index cebcf5b9b438ae6c9f3adc94e800c968e6d8fef1..1ab92b2428790ca7d4eaa6e09231e7d33e2dcbb3 100755 (executable)
@@ -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}
 };
index c304dd019bd0d2f5bf58b19b4bfbaf97165030b4..226b8000f4474805c0017079171ed4071781ae92 100644 (file)
@@ -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;
+}