@@ -12,45 +12,58 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
1212 ));
1313static char const *accessKey;
1414static char const *secretKey;
15+ static char const *sessionToken;
1516
1617static GstElement *
1718setup_kinesisvideoproducersink (void )
1819{
1920 GstElement *kinesisvideoproducersink;
20- GST_DEBUG (" Setup kinesisvideoproducersink" );
21+ GST_DEBUG (" Setup kinesisvideoproducersink" );
2122 kinesisvideoproducersink = gst_check_setup_element (" kvssink" );
23+ fail_unless (kinesisvideoproducersink != nullptr , " Failed to create kvssink element (is GST_PLUGIN_PATH set?)" );
24+
2225 g_object_set (G_OBJECT (kinesisvideoproducersink),
2326 " access-key" , accessKey,
2427 " secret-key" , secretKey,
28+ " session-token" , sessionToken,
2529 NULL );
30+
31+ GstPad *sinkpad = gst_element_request_pad_simple (kinesisvideoproducersink, " video_0" );
32+ fail_unless (sinkpad != nullptr , " Failed to request video pad" );
33+ gst_object_unref (sinkpad);
34+
2635 return kinesisvideoproducersink;
2736}
2837
2938static void
3039cleanup_kinesisvideoproducersink (GstElement * kinesisvideoproducersink)
3140{
41+ GstPad *sinkpad = gst_element_get_static_pad (kinesisvideoproducersink, " video_0" );
42+ if (sinkpad) {
43+ gst_element_release_request_pad (kinesisvideoproducersink, sinkpad);
44+ gst_object_unref (sinkpad);
45+ }
3246
33- gst_check_teardown_src_pad (kinesisvideoproducersink);
3447 gst_check_teardown_element (kinesisvideoproducersink);
3548}
3649
37- GST_START_TEST (kvsproducersinktestplay )
50+ GST_START_TEST (kvsproducersinktestplayandstop )
3851 {
39- GstElement *pElement =
40- setup_kinesisvideoproducersink ();
41- fail_unless_equals_int (gst_element_set_state (pElement, GST_STATE_PLAYING), GST_STATE_CHANGE_ASYNC);
42- cleanup_kinesisvideoproducersink (pElement);
52+ GstElement *pElement = setup_kinesisvideoproducersink ();
4353
44- }
45- GST_END_TEST;
54+ // Set up source pad
55+ GstPad *srcpad = gst_check_setup_src_pad_by_name (pElement, &srctemplate, " video_0" );
56+ fail_unless (srcpad != nullptr , " Failed to setup source pad" );
57+ gst_pad_set_active (srcpad, TRUE );
4658
47- GST_START_TEST (kvsproducersinktestpause)
48- {
49- GstElement *pElement =
50- setup_kinesisvideoproducersink ();
51- fail_unless_equals_int (gst_element_set_state (pElement, GST_STATE_PAUSED), GST_STATE_CHANGE_ASYNC);
52- cleanup_kinesisvideoproducersink (pElement);
59+ // Set to PLAYING state (NULL -> PLAYING)
60+ fail_unless_equals_int (GST_STATE_CHANGE_SUCCESS, gst_element_set_state (pElement, GST_STATE_PLAYING));
61+
62+ // Set back to NULL state (PLAYING -> NULL)
63+ fail_unless_equals_int (GST_STATE_CHANGE_SUCCESS, gst_element_set_state (pElement, GST_STATE_NULL));
5364
65+ gst_pad_set_active (srcpad, FALSE );
66+ cleanup_kinesisvideoproducersink (pElement);
5467 }
5568GST_END_TEST;
5669
@@ -60,7 +73,7 @@ GST_START_TEST(kvsproducersinktestplaytopausetoplay)
6073 setup_kinesisvideoproducersink ();
6174 GstPad *srcpad;
6275
63- srcpad = gst_check_setup_src_pad_by_name (pElement, &srctemplate, " sink " );
76+ srcpad = gst_check_setup_src_pad_by_name (pElement, &srctemplate, " video_0 " );
6477
6578 gst_pad_set_active (srcpad, TRUE );
6679
@@ -206,7 +219,7 @@ GST_START_TEST(check_playing_to_paused_and_back_to_playing)
206219 setup_kinesisvideoproducersink ();
207220 GstPad *srcpad;
208221
209- srcpad = gst_check_setup_src_pad_by_name (pElement, &srctemplate, " sink " );
222+ srcpad = gst_check_setup_src_pad_by_name (pElement, &srctemplate, " video_0 " );
210223
211224 gst_pad_set_active (srcpad, TRUE );
212225
@@ -221,16 +234,37 @@ GST_START_TEST(check_playing_to_paused_and_back_to_playing)
221234 }
222235GST_END_TEST;
223236
237+ GST_START_TEST (test_check_credentials)
238+ {
239+ ck_abort_msg (" Required environment variables (ACCESS_KEY and/or SECRET_KEY) are not set" );
240+ }
241+ GST_END_TEST;
242+
224243// Verify all State change events and direct state set events.
225244
226245Suite *gst_kinesisvideoproducer_suite (void ) {
227246 Suite *s = suite_create (" GstKinesisVideoSinkPlugin" );
228247 TCase *tc = tcase_create (" AllStateChangeTests" );
229- accessKey = getenv (ACCESS_KEY_ENV_VAR);
230- secretKey = getenv (SECRET_KEY_ENV_VAR);
231248
232- tcase_add_test (tc, kvsproducersinktestplay);
233- tcase_add_test (tc, kvsproducersinktestpause);
249+ accessKey = GETENV (ACCESS_KEY_ENV_VAR);
250+ secretKey = GETENV (SECRET_KEY_ENV_VAR);
251+ sessionToken = GETENV (SESSION_TOKEN_ENV_VAR);
252+
253+ accessKey = accessKey ? accessKey : " " ;
254+ secretKey = secretKey ? secretKey : " " ;
255+ sessionToken = sessionToken ? sessionToken : " " ;
256+
257+ // Check if required environment variables are set
258+ if (accessKey[0 ] == ' \0 ' || secretKey[0 ] == ' \0 ' ) {
259+ TCase *tc_env = tcase_create (" Credentials check" );
260+ tcase_add_test_raise_signal (tc_env, test_check_credentials, SIGABRT);
261+ suite_add_tcase (s, tc_env);
262+
263+ // Return the suite with only this failing test
264+ return s;
265+ }
266+
267+ tcase_add_test (tc, kvsproducersinktestplayandstop);
234268 tcase_add_test (tc, kvsproducersinktestplaytopausetoplay);
235269 tcase_add_test (tc, kvsproducersinkteststop);
236270 tcase_add_test (tc, check_properties_are_passed_correctly);
0 commit comments