[UTC][nnstreamer][Non-ACR] Add tensor_src_tizensensor TCs 10/239510/3
authorYongjoo Ahn <yongjoo1.ahn@samsung.com>
Mon, 27 Jul 2020 07:59:14 +0000 (16:59 +0900)
committerYongjoo Ahn <yongjoo1.ahn@samsung.com>
Mon, 27 Jul 2020 09:25:31 +0000 (18:25 +0900)
- Add 1 positive, 4 negative TCs for four profiles (mobile, wearable, tv, iot)

Change-Id: If8334f9deda0ff6e553851b6e22f1f8dd110b744
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_tv.h
src/utc/nnstreamer/tct-nnstreamer-core_wearable.h
src/utc/nnstreamer/utc-nnstreamer-scenario.c

index 437677a8b1978c6cfdd63471c9f7b39d60b624c0..e41fe9e0d1eecb20f369fbc1de9a3a7e5b490c03 100755 (executable)
@@ -191,6 +191,12 @@ extern int utc_nnstreamer_scenario_protobuf_n2 (void);
 extern int utc_nnstreamer_scenario_protobuf_n3 (void);
 extern int utc_nnstreamer_scenario_protobuf_n4 (void);
 extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
 
 testcase tc_array[] = {
   {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
@@ -346,6 +352,13 @@ testcase tc_array[] = {
   {"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {NULL, NULL}
 };
 
index 437677a8b1978c6cfdd63471c9f7b39d60b624c0..e41fe9e0d1eecb20f369fbc1de9a3a7e5b490c03 100755 (executable)
@@ -191,6 +191,12 @@ extern int utc_nnstreamer_scenario_protobuf_n2 (void);
 extern int utc_nnstreamer_scenario_protobuf_n3 (void);
 extern int utc_nnstreamer_scenario_protobuf_n4 (void);
 extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
 
 testcase tc_array[] = {
   {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
@@ -346,6 +352,13 @@ testcase tc_array[] = {
   {"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {NULL, NULL}
 };
 
index 437677a8b1978c6cfdd63471c9f7b39d60b624c0..e41fe9e0d1eecb20f369fbc1de9a3a7e5b490c03 100755 (executable)
@@ -191,6 +191,12 @@ extern int utc_nnstreamer_scenario_protobuf_n2 (void);
 extern int utc_nnstreamer_scenario_protobuf_n3 (void);
 extern int utc_nnstreamer_scenario_protobuf_n4 (void);
 extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
 
 testcase tc_array[] = {
   {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
@@ -346,6 +352,13 @@ testcase tc_array[] = {
   {"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {NULL, NULL}
 };
 
index 437677a8b1978c6cfdd63471c9f7b39d60b624c0..e41fe9e0d1eecb20f369fbc1de9a3a7e5b490c03 100755 (executable)
@@ -191,6 +191,12 @@ extern int utc_nnstreamer_scenario_protobuf_n2 (void);
 extern int utc_nnstreamer_scenario_protobuf_n3 (void);
 extern int utc_nnstreamer_scenario_protobuf_n4 (void);
 extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
 
 testcase tc_array[] = {
   {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
@@ -346,6 +352,13 @@ testcase tc_array[] = {
   {"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {NULL, NULL}
 };
 
index 5a9a22aad6ff459437b420a5e2d3e7e70dc2f2b7..84b157fcb079df3087c76305f3830a3f3d16d48a 100644 (file)
@@ -1832,3 +1832,223 @@ int utc_nnstreamer_scenario_protobuf_n5 (void)
 
   return 0;
 }
+
+/**
+ * @testcase           utc_nnstreamer_scenario_tizensensor_p
+ * @since_tizen                6.0
+ * @description                Test the tensor_src_tizensensor (accelerometer sensor) to work
+ */
+int utc_nnstreamer_scenario_tizensensor_p (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_pipeline_h handle;
+  ml_pipeline_state_e state;
+  int status;
+
+  bool accelerometer_is_supported = false;
+  int ret = system_info_get_platform_bool (
+      "http://tizen.org/feature/sensor.accelerometer",
+      &accelerometer_is_supported);
+  if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+    FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+    return 0;
+  }
+
+  gchar * pipeline = g_strdup_printf (
+      "tensor_src_tizensensor type=accelerometer ! tensor_sink sync=true");
+
+  status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_pipeline_start (handle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_pipeline_get_state (handle, &state);
+  assert_eq (status, ML_ERROR_NONE); /* At this moment, it can be READY, PAUSED, or PLAYING */
+  assert_neq (state, ML_PIPELINE_STATE_UNKNOWN);
+  assert_neq (state, ML_PIPELINE_STATE_NULL);
+
+  g_usleep (SLEEP_TIME); /* SLEEP_TIME is good for general systems, but not enough for emulators to start gst pipeline. Let a few frames flow. */
+
+  wait_for_start (handle, state, status);
+
+  assert_eq (state, ML_PIPELINE_STATE_PLAYING);
+
+  status = ml_pipeline_stop (handle);
+  assert_eq (status, ML_ERROR_NONE);
+  g_usleep (SLEEP_TIME); /* Let a few frames flow. */
+
+  status = ml_pipeline_get_state (handle, &state);
+  assert_eq (status, ML_ERROR_NONE);
+  assert_eq (state, ML_PIPELINE_STATE_PAUSED);
+
+  status = ml_pipeline_destroy (handle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (pipeline);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_nnstreamer_scenario_tizensensor_n1
+ * @since_tizen                6.0
+ * @description                Negative test case to construct pipeline with invalid sensor type
+ */
+int utc_nnstreamer_scenario_tizensensor_n1 (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_pipeline_h handle;
+  ml_pipeline_state_e state;
+  int status;
+
+  /* there is no sensor type named "invalid_sensor" */
+  gchar * pipeline = g_strdup_printf (
+      "tensor_src_tizensensor type=invalid_sensor ! tensor_sink sync=true");
+
+  status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+  assert_eq (status, ML_ERROR_STREAMS_PIPE);
+
+  g_free (pipeline);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_nnstreamer_scenario_tizensensor_n2
+ * @since_tizen                6.0
+ * @description                Negative test case to use pipeline with invalid tensor type
+ */
+int utc_nnstreamer_scenario_tizensensor_n2 (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_pipeline_h handle;
+  ml_pipeline_state_e state;
+  int status;
+
+  bool accelerometer_is_supported = false;
+  int ret = system_info_get_platform_bool (
+      "http://tizen.org/feature/sensor.accelerometer",
+      &accelerometer_is_supported);
+  if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+    FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+    return 0;
+  }
+
+  /* accelerometer produces float32 data but the capsfilter set to uint8 */
+  gchar * pipeline = g_strdup_printf (
+      "tensor_src_tizensensor type=accelerometer ! "
+      "other/tensor,dimension=(string)3:1:1:1,type=(string)uint8 ! "
+      "tensor_sink sync=true");
+
+  /*
+   * Because the source is a live-source, the pipeline construction
+   * and start success. Negotiation failure occurs after the start of pipeline
+   */
+  status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  wait_for_start (handle, state, status);
+
+  g_usleep (SLEEP_TIME);
+
+  status = ml_pipeline_get_state (handle, &state);
+  assert_eq (status, ML_ERROR_STREAMS_PIPE); /* negotiation failed */
+
+  g_free (pipeline);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_nnstreamer_scenario_tizensensor_n3
+ * @since_tizen                6.0
+ * @description                Negative test case to use pipeline with invalid tensor dimension
+ */
+int utc_nnstreamer_scenario_tizensensor_n3 (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_pipeline_h handle;
+  ml_pipeline_state_e state;
+  int status;
+
+  bool accelerometer_is_supported = false;
+  int ret = system_info_get_platform_bool (
+      "http://tizen.org/feature/sensor.accelerometer",
+      &accelerometer_is_supported);
+  if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+    FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+    return 0;
+  }
+
+  /* accelerometer produces 3:1:1:1 data but the capsfilter set to 1:1:1:1 */
+  gchar * pipeline = g_strdup_printf (
+      "tensor_src_tizensensor type=accelerometer ! "
+      "other/tensor,dimension=(string)1:1:1:1,type=(string)float32 ! "
+      "tensor_sink sync=true");
+
+
+  /*
+   * Because the source is a live-source, the pipeline construction
+   * and start success. Negotiation failure occurs after the start of pipeline
+   */
+  status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+  assert_eq (status, ML_ERROR_NONE); /* The pipeline does not preroll because the source is a live-source */
+
+  wait_for_start (handle, state, status);
+
+  g_usleep (SLEEP_TIME);
+
+  status = ml_pipeline_get_state (handle, &state);
+  assert_eq (status, ML_ERROR_STREAMS_PIPE); /* negotiation failed */
+
+  g_free (pipeline);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_nnstreamer_scenario_tizensensor_n4
+ * @since_tizen                6.0
+ * @description                Negative test case to use pipeline with invalid framerate
+ */
+int utc_nnstreamer_scenario_tizensensor_n4 (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_pipeline_h handle;
+  ml_pipeline_state_e state;
+  int status;
+
+  bool accelerometer_is_supported = false;
+  int ret = system_info_get_platform_bool (
+      "http://tizen.org/feature/sensor.accelerometer",
+      &accelerometer_is_supported);
+  if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+    FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+    return 0;
+  }
+
+  /* accelerometer produces @ 10/1 framerate but the capsfilter set to 1/1 framerate */
+  gchar * pipeline = g_strdup_printf (
+      "tensor_src_tizensensor type=accelerometer framerate=10/1 ! "
+      "other/tensor,dimension=(string)3:1:1:1,type=(string)float32,framerate=1/1 ! "
+      "tensor_sink sync=true");
+
+  /*
+   * Because the source is a live-source, the pipeline construction
+   * and start success. Negotiation failure occurs after the start of pipeline
+   */
+  status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+  assert_eq (status, ML_ERROR_NONE); /* The pipeline does not preroll because the source is a live-source */
+
+  wait_for_start (handle, state, status);
+
+  g_usleep (SLEEP_TIME);
+
+  status = ml_pipeline_get_state (handle, &state);
+  assert_eq (status, ML_ERROR_STREAMS_PIPE); /* negotiation failed */
+
+  g_free (pipeline);
+
+  return 0;
+}
\ No newline at end of file