From: hyeonseok lee Date: Wed, 25 Aug 2021 05:30:33 +0000 (+0900) Subject: [UCT][nntrainer][ACR-1644] UTC for added function ml_train_model_get_[input/output... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2db3b38c6c1d4c40bf3cbfa836c1f29b15bf7047;p=test%2Ftct%2Fnative%2Fapi.git [UCT][nntrainer][ACR-1644] UTC for added function ml_train_model_get_[input/output]_tensors_info - UTC for Added function ml_train_model_get_[input/output]_tensors_info Change-Id: I0c761644043d65a4ff9a6ef46c8e5a30f8452e62 Signed-off-by: hyeonseok lee --- diff --git a/src/utc/nntrainer/public.list b/src/utc/nntrainer/public.list index 4ad061591..60473d046 100644 --- a/src/utc/nntrainer/public.list +++ b/src/utc/nntrainer/public.list @@ -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 diff --git a/src/utc/nntrainer/tct-nntrainer-core_mobile.h b/src/utc/nntrainer/tct-nntrainer-core_mobile.h index 0222ea875..e9801eb02 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_mobile.h +++ b/src/utc/nntrainer/tct-nntrainer-core_mobile.h @@ -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}, }; diff --git a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h index 8f12b920d..6639b9105 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h @@ -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}, }; diff --git a/src/utc/nntrainer/tct-nntrainer-core_tv.h b/src/utc/nntrainer/tct-nntrainer-core_tv.h index 2b18cdc44..9b22327b6 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tv.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tv.h @@ -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}, }; diff --git a/src/utc/nntrainer/tct-nntrainer-core_wearable.h b/src/utc/nntrainer/tct-nntrainer-core_wearable.h index d7d41e1eb..a91e7a27a 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_wearable.h +++ b/src/utc/nntrainer/tct-nntrainer-core_wearable.h @@ -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}, }; diff --git a/src/utc/nntrainer/utc-nntrainer-model.c b/src/utc/nntrainer/utc-nntrainer-model.c index 2c3c7364e..e0dcda616 100644 --- a/src/utc/nntrainer/utc-nntrainer-model.c +++ b/src/utc/nntrainer/utc-nntrainer-model.c @@ -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; +}