extern int utc_ml_tensors_info_get_tensor_size_n (void);
extern int utc_ml_tensors_info_create_extended_p (void);
extern int utc_ml_tensors_info_create_extended_n (void);
-extern int utc_ml_tensors_data_create_p (void);
+extern int utc_ml_tensors_info_set_count_max_n (void);
+extern int utc_ml_tensors_data_create_p (void);
extern int utc_ml_tensors_data_create_n (void);
extern int utc_ml_tensors_data_destroy_p (void);
extern int utc_ml_tensors_data_destroy_n (void);
extern int utc_ml_single_invoke_with_ml_option_p (void);
extern int utc_ml_single_invoke_with_ml_option_n (void);
extern int utc_ml_single_invoke_with_extended_p (void);
+extern int utc_ml_single_invoke_with_many_inout_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
{"utc_ml_tensors_info_get_tensor_size_n", utc_ml_tensors_info_get_tensor_size_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_p", utc_ml_tensors_info_create_extended_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_n", utc_ml_tensors_info_create_extended_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
- {"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+ {"utc_ml_tensors_info_set_count_max_n", utc_ml_tensors_info_set_count_max_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+ {"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_create_n", utc_ml_tensors_data_create_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_destroy_p", utc_ml_tensors_data_destroy_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_destroy_n", utc_ml_tensors_data_destroy_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_single_invoke_with_ml_option_p", utc_ml_single_invoke_with_ml_option_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_ml_single_invoke_with_ml_option_n", utc_ml_single_invoke_with_ml_option_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_ml_single_invoke_with_extended_p", utc_ml_single_invoke_with_extended_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+ {"utc_ml_single_invoke_with_many_inout_p", utc_ml_single_invoke_with_many_inout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
{"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_pipeline_p2", utc_nnstreamer_scenario_construct_destruct_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
extern int utc_ml_tensors_info_get_tensor_size_n (void);
extern int utc_ml_tensors_info_create_extended_p (void);
extern int utc_ml_tensors_info_create_extended_n (void);
-extern int utc_ml_tensors_data_create_p (void);
+extern int utc_ml_tensors_info_set_count_max_n (void);
+extern int utc_ml_tensors_data_create_p (void);
extern int utc_ml_tensors_data_create_n (void);
extern int utc_ml_tensors_data_destroy_p (void);
extern int utc_ml_tensors_data_destroy_n (void);
extern int utc_ml_single_invoke_with_ml_option_p (void);
extern int utc_ml_single_invoke_with_ml_option_n (void);
extern int utc_ml_single_invoke_with_extended_p (void);
+extern int utc_ml_single_invoke_with_many_inout_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
{"utc_ml_tensors_info_get_tensor_size_n", utc_ml_tensors_info_get_tensor_size_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_p", utc_ml_tensors_info_create_extended_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_n", utc_ml_tensors_info_create_extended_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
- {"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+ {"utc_ml_tensors_info_set_count_max_n", utc_ml_tensors_info_set_count_max_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+ {"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_create_n", utc_ml_tensors_data_create_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_destroy_p", utc_ml_tensors_data_destroy_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_destroy_n", utc_ml_tensors_data_destroy_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_single_invoke_with_ml_option_p", utc_ml_single_invoke_with_ml_option_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_ml_single_invoke_with_ml_option_n", utc_ml_single_invoke_with_ml_option_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_ml_single_invoke_with_extended_p", utc_ml_single_invoke_with_extended_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+ {"utc_ml_single_invoke_with_many_inout_p", utc_ml_single_invoke_with_many_inout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
{"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_pipeline_p2", utc_nnstreamer_scenario_construct_destruct_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
extern int utc_ml_tensors_info_get_tensor_size_n (void);
extern int utc_ml_tensors_info_create_extended_p (void);
extern int utc_ml_tensors_info_create_extended_n (void);
-extern int utc_ml_tensors_data_create_p (void);
+extern int utc_ml_tensors_info_set_count_max_n (void);
+extern int utc_ml_tensors_data_create_p (void);
extern int utc_ml_tensors_data_create_n (void);
extern int utc_ml_tensors_data_destroy_p (void);
extern int utc_ml_tensors_data_destroy_n (void);
extern int utc_ml_single_invoke_with_ml_option_p (void);
extern int utc_ml_single_invoke_with_ml_option_n (void);
extern int utc_ml_single_invoke_with_extended_p (void);
+extern int utc_ml_single_invoke_with_many_inout_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
{"utc_ml_tensors_info_get_tensor_size_n", utc_ml_tensors_info_get_tensor_size_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_p", utc_ml_tensors_info_create_extended_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_n", utc_ml_tensors_info_create_extended_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+ {"utc_ml_tensors_info_set_count_max_n", utc_ml_tensors_info_set_count_max_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+
{"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_create_n", utc_ml_tensors_data_create_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_destroy_p", utc_ml_tensors_data_destroy_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_single_invoke_with_ml_option_p", utc_ml_single_invoke_with_ml_option_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_ml_single_invoke_with_ml_option_n", utc_ml_single_invoke_with_ml_option_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_ml_single_invoke_with_extended_p", utc_ml_single_invoke_with_extended_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+ {"utc_ml_single_invoke_with_many_inout_p", utc_ml_single_invoke_with_many_inout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
{"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_pipeline_p2", utc_nnstreamer_scenario_construct_destruct_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_construct_pipeline_error_case_n1", utc_nnstreamer_scenario_construct_pipeline_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
extern int utc_ml_tensors_info_get_tensor_size_n (void);
extern int utc_ml_tensors_info_create_extended_p (void);
extern int utc_ml_tensors_info_create_extended_n (void);
-extern int utc_ml_tensors_data_create_p (void);
+extern int utc_ml_tensors_info_set_count_max_n (void);
+extern int utc_ml_tensors_data_create_p (void);
extern int utc_ml_tensors_data_create_n (void);
extern int utc_ml_tensors_data_destroy_p (void);
extern int utc_ml_tensors_data_destroy_n (void);
extern int utc_ml_single_invoke_with_ml_option_p (void);
extern int utc_ml_single_invoke_with_ml_option_n (void);
extern int utc_ml_single_invoke_with_extended_p (void);
+extern int utc_ml_single_invoke_with_many_inout_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
{"utc_ml_tensors_info_get_tensor_size_n", utc_ml_tensors_info_get_tensor_size_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_p", utc_ml_tensors_info_create_extended_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
{"utc_ml_tensors_info_create_extended_n", utc_ml_tensors_info_create_extended_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
- {"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+ {"utc_ml_tensors_info_set_count_max_n", utc_ml_tensors_info_set_count_max_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+ {"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_create_n", utc_ml_tensors_data_create_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_destroy_p", utc_ml_tensors_data_destroy_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_tensors_data_destroy_n", utc_ml_tensors_data_destroy_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
{"utc_ml_single_invoke_with_ml_option_p", utc_ml_single_invoke_with_ml_option_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_ml_single_invoke_with_ml_option_n", utc_ml_single_invoke_with_ml_option_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
-
{"utc_ml_single_invoke_with_extended_p", utc_ml_single_invoke_with_extended_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+ {"utc_ml_single_invoke_with_many_inout_p", utc_ml_single_invoke_with_many_inout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
return 0;
}
+
+/**
+ * @testcase utc_ml_tensors_info_set_count_max_n
+ * @since_tizen 8.0
+ * @description Test NNStreamer set tensor info count, Failure case
+ */
+int utc_ml_tensors_info_set_count_max_n (void)
+{
+ IS_SUPPORT_FEATURE;
+ status = ml_tensors_info_create (&info);
+ assert_eq (status, ML_ERROR_NONE);
+
+ status = ml_tensors_info_set_count (info, ML_TENSOR_SIZE_LIMIT);
+ assert_eq (status, ML_ERROR_NONE);
+
+ status = ml_tensors_info_set_count (info, ML_TENSOR_SIZE_LIMIT + 1);
+ assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+ status = ml_tensors_info_destroy (info);
+ assert_eq (status, ML_ERROR_NONE);
+
+ return 0;
+}
return 0;
}
+
+/**
+ * @testcase utc_ml_single_invoke_with_many_inout_p
+ * @since_tizen 8.0
+ * @description Test NNStreamer invoke tflite model with 32 intput / 32 output tensors.
+ */
+int utc_ml_single_invoke_with_many_inout_p (void)
+{
+ IS_SUPPORT_FEATURE;
+ ml_tensors_info_h in_info, out_info;
+ ml_tensors_data_h input, output;
+ size_t data_size;
+
+ unsigned int tmp_count;
+ ml_tensor_type_e tmp_type = ML_TENSOR_TYPE_UNKNOWN;
+ ml_tensor_dimension tmp_dim;
+
+ gchar *test_model;
+
+ char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+ char *model_file = "simple_32_in_32_out.tflite";
+ char *model_file_path = NULL;
+
+ if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+ {
+ int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+ model_file_path = (char*)malloc(model_path_len);
+ CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_invoke_with_many_inout_p");
+ snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+ }
+
+ test_model = model_file_path;
+ assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+ status = ml_single_open (&single, test_model, NULL, NULL,
+ ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+ assert_eq (status, ML_ERROR_NONE);
+
+ status = ml_single_get_input_info (single, &in_info);
+ assert_eq (status, ML_ERROR_NONE);
+ ml_tensors_info_get_count (in_info, &tmp_count);
+ assert_eq (tmp_count, 32U);
+
+ status = ml_single_get_output_info (single, &out_info);
+ assert_eq (status, ML_ERROR_NONE);
+ ml_tensors_info_get_count (out_info, &tmp_count);
+ assert_eq (tmp_count, 32U);
+
+ status = ml_tensors_data_create (in_info, &input);
+ assert_eq (status, ML_ERROR_NONE);
+
+ for (int j = 0; j < 5; j++) {
+ float tmp_input[] = { 16.0f };
+ float *output_buf;
+
+ for (int i = 0; i < 32; i++) {
+ status = ml_tensors_data_set_tensor_data (input, i, tmp_input, 1 * sizeof (float));
+
+ ml_tensors_info_get_tensor_type (in_info, i, &tmp_type);
+ ml_tensors_info_get_tensor_dimension (in_info, i, tmp_dim);
+
+ assert_eq (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ assert_eq (tmp_dim[0], 1U);
+ assert_eq (tmp_dim[1], 1U);
+ assert_eq (tmp_dim[2], 1U);
+ assert_eq (tmp_dim[3], 1U);
+ }
+
+ status = ml_single_invoke (single, input, &output);
+ assert_eq (status, ML_ERROR_NONE);
+
+ for (int i = 0; i < 32; i++) {
+ ml_tensors_data_get_tensor_data (output, i, (void **) &output_buf, &data_size);
+ assert_eq (output_buf[0], 17.0f);
+ assert_eq (data_size, sizeof (float));
+
+ ml_tensors_info_get_tensor_type (out_info, i, &tmp_type);
+ ml_tensors_info_get_tensor_dimension (out_info, i, tmp_dim);
+
+ assert_eq (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ assert_eq (tmp_dim[0], 1U);
+ assert_eq (tmp_dim[1], 1U);
+ assert_eq (tmp_dim[2], 1U);
+ assert_eq (tmp_dim[3], 1U);
+ }
+
+ ml_tensors_data_destroy (output);
+ }
+
+ ml_tensors_data_destroy (input);
+ ml_tensors_info_destroy (in_info);
+ ml_tensors_info_destroy (out_info);
+
+ status = ml_single_close (single);
+ assert_eq (status, ML_ERROR_NONE);
+
+ return 0;
+}