[UCT][nntrainer][ACR-1644] UTC for added function ml_train_model_get_[input/output... 64/263264/4
authorhyeonseok lee <hs89.lee@samsung.com>
Wed, 25 Aug 2021 05:30:33 +0000 (14:30 +0900)
committerhyeonseok lee <hs89.lee@samsung.com>
Tue, 31 Aug 2021 06:54:28 +0000 (15:54 +0900)
 - UTC for Added function  ml_train_model_get_[input/output]_tensors_info

Change-Id: I0c761644043d65a4ff9a6ef46c8e5a30f8452e62
Signed-off-by: hyeonseok lee <hs89.lee@samsung.com>
src/utc/nntrainer/public.list
src/utc/nntrainer/tct-nntrainer-core_mobile.h
src/utc/nntrainer/tct-nntrainer-core_tizeniot.h
src/utc/nntrainer/tct-nntrainer-core_tv.h
src/utc/nntrainer/tct-nntrainer-core_wearable.h
src/utc/nntrainer/utc-nntrainer-model.c

index 4ad061591be7e8c064e3f1ef0621426b96a8c54d..60473d046a8979cc24b7dc70f9ec74d0db3bce84 100644 (file)
@@ -7,6 +7,8 @@ ml_train_model_get_summary
 ml_train_model_add_layer
 ml_train_model_set_optimizer
 ml_train_model_set_dataset
+ml_train_model_get_input_tensors_info
+ml_train_model_get_output_tensors_info
 ml_train_layer_create
 ml_train_layer_set_property
 ml_train_layer_destroy
index 0222ea875088eacc807bcb31280c191706999379..e9801eb02a67c89cf155beb7f09de778b637ec29 100644 (file)
@@ -92,6 +92,14 @@ extern int utc_nntrainer_layer_set_property_concat_p(void);
 extern int utc_nntrainer_layer_set_property_concat_n(void);
 extern int utc_nntrainer_layer_set_property_multiout_p(void);
 extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
 
 testcase tc_array[] = {
     // layer tcs
@@ -157,6 +165,14 @@ testcase tc_array[] = {
     {"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
 
     {NULL, NULL},
 };
index 8f12b920d378c6cfa7bca56facd4c0ff878ae076..6639b9105426b51ba043ab150b2a3d2b7f09c9f0 100644 (file)
@@ -93,6 +93,14 @@ extern int utc_nntrainer_layer_set_property_concat_p(void);
 extern int utc_nntrainer_layer_set_property_concat_n(void);
 extern int utc_nntrainer_layer_set_property_multiout_p(void);
 extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
 
 testcase tc_array[] = {
     // layer tcs
@@ -158,6 +166,14 @@ testcase tc_array[] = {
     {"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
 
     {NULL, NULL},
 };
index 2b18cdc4450367b3c9381e828cfadbcf1d6027cf..9b22327b6c2def092bf4f81506ce2778f338a046 100644 (file)
@@ -93,6 +93,14 @@ extern int utc_nntrainer_layer_set_property_concat_p(void);
 extern int utc_nntrainer_layer_set_property_concat_n(void);
 extern int utc_nntrainer_layer_set_property_multiout_p(void);
 extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
 
 testcase tc_array[] = {
     // layer tcs
@@ -158,6 +166,14 @@ testcase tc_array[] = {
     {"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
 
     {NULL, NULL},
 };
index d7d41e1ebd592c05a87f295d737d0dc3d080435b..a91e7a27a164ce3d3c4e0bb6960789cddf07fa40 100644 (file)
@@ -93,6 +93,14 @@ extern int utc_nntrainer_layer_set_property_concat_p(void);
 extern int utc_nntrainer_layer_set_property_concat_n(void);
 extern int utc_nntrainer_layer_set_property_multiout_p(void);
 extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
 
 testcase tc_array[] = {
     // layer tcs
@@ -158,6 +166,14 @@ testcase tc_array[] = {
     {"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
     {"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+    {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
 
     {NULL, NULL},
 };
index 2c3c7364ea9197a624ec30ba89315fda365bfadc..e0dcda616735c6946ddc809c6d0b1a28aba7b5cc 100644 (file)
@@ -21,6 +21,7 @@ static ml_train_model_h model;
 static ml_train_layer_h layers[2];
 static ml_train_optimizer_h adam;
 static ml_train_dataset_h dataset;
+static ml_tensors_info_h input_info, output_info;
 
 /**
  * @function utc_nntrainer_model_startup
@@ -632,3 +633,247 @@ int utc_nntrainer_model_run_n(void)
 
   return 0;
 }
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_p
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors
+ */
+int utc_nntrainer_model_get_input_tensors_info_p(void)
+{
+  unsigned int input_count;
+  unsigned int input_dim_expected[4] = {2, 1, 1, 1280};
+  unsigned int dim[4];
+
+  ml_train_model_construct_with_conf(conf_path, &model);
+  ml_train_model_compile(model, NULL);
+
+  status = ml_train_model_get_input_tensors_info(model, &input_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_NONE);
+  }
+
+  status = ml_tensors_info_get_count(input_info, &input_count);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_NONE);
+    assert_eq(input_count, 1ul);
+  }
+
+  status = ml_tensors_info_get_tensor_dimension(input_info, 0, dim);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_NONE);
+    for (unsigned int i = 0; i < 4; ++i) {
+      assert_eq(dim[i], input_dim_expected[i]);
+    }
+  }
+
+  ml_tensors_info_destroy(input_info);
+  ml_train_model_destroy(model);
+
+  return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_n1
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors without model
+ */
+int utc_nntrainer_model_get_input_tensors_info_n1(void)
+{
+  status = ml_train_model_get_input_tensors_info(NULL, &input_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_INVALID_PARAMETER);
+  }
+
+  return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_n2
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors without model compile
+ */
+int utc_nntrainer_model_get_input_tensors_info_n2(void)
+{
+  ml_train_model_construct_with_conf(conf_path, &model);
+
+  status = ml_train_model_get_input_tensors_info(model, &input_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_neq(status, ML_ERROR_NONE);
+  }
+
+  ml_train_model_destroy(model);
+
+  return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_n3
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors with destroyed model
+ */
+int utc_nntrainer_model_get_input_tensors_info_n3(void)
+{
+  ml_train_model_construct_with_conf(conf_path, &model);
+  ml_train_model_compile(model, NULL);
+  ml_train_model_destroy(model);
+
+  status = ml_train_model_get_input_tensors_info(model, &input_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_neq(status, ML_ERROR_NONE);
+  }
+
+  return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_p
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors
+ */
+int utc_nntrainer_model_get_output_tensors_info_p(void)
+{
+  unsigned int output_count;
+  unsigned int output_dim_expected[4] = {2, 1, 1, 10};
+  unsigned int dim[4];
+
+  ml_train_model_construct_with_conf(conf_path, &model);
+  ml_train_model_compile(model, NULL);
+
+  status = ml_train_model_get_output_tensors_info(model, &output_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_NONE);
+  }
+
+  status = ml_tensors_info_get_count(output_info, &output_count);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_NONE);
+    assert_eq(output_count, 1ul);
+  }
+
+  status = ml_tensors_info_get_tensor_dimension(output_info, 0, dim);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_NONE);
+    for (unsigned int i = 0; i < 4; ++i) {
+      assert_eq(dim[i], output_dim_expected[i]);
+    }
+  }
+
+  ml_tensors_info_destroy(output_info);
+  ml_train_model_destroy(model);
+
+  return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_n1
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors without model
+ */
+int utc_nntrainer_model_get_output_tensors_info_n1(void)
+{
+  status = ml_train_model_get_output_tensors_info(NULL, &output_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_eq(status, ML_ERROR_INVALID_PARAMETER);
+  }
+
+  return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_n2
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors without model compile
+ */
+int utc_nntrainer_model_get_output_tensors_info_n2(void)
+{
+  ml_train_model_construct_with_conf(conf_path, &model);
+
+  status = ml_train_model_get_output_tensors_info(model, &output_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_neq(status, ML_ERROR_NONE);
+  }
+
+  ml_train_model_destroy(model);
+
+  return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_n3
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors with destroyed model
+ */
+int utc_nntrainer_model_get_output_tensors_info_n3(void)
+{
+  ml_train_model_construct_with_conf(conf_path, &model);
+  ml_train_model_compile(model, NULL);
+  ml_train_model_destroy(model);
+
+  status = ml_train_model_get_output_tensors_info(model, &output_info);
+  if (train_supported == false)
+  {
+    assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+  }
+  else
+  {
+    assert_neq(status, ML_ERROR_NONE);
+  }
+
+  return 0;
+}