@@ -17,8 +17,9 @@ static char const *sessionToken;
1717static GstElement *
1818setup_kinesisvideoproducersink (void )
1919{
20+ cout << " setup_kinesisvideoproducersink() start" << endl;
21+
2022 GstElement *kinesisvideoproducersink;
21- GST_DEBUG (" Setup kinesisvideoproducersink" );
2223 kinesisvideoproducersink = gst_check_setup_element (" kvssink" );
2324 fail_unless (kinesisvideoproducersink != nullptr , " Failed to create kvssink element (is GST_PLUGIN_PATH set?)" );
2425
@@ -30,23 +31,28 @@ setup_kinesisvideoproducersink(void)
3031
3132 // https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/91
3233 // Use gst_element_request_pad_simple in newer GStreamer versions
33- GstPad *sinkpad = gst_element_get_request_pad (kinesisvideoproducersink, " video_0 " );
34+ GstPad *sinkpad = gst_element_get_request_pad (kinesisvideoproducersink, " video_%u " );
3435 fail_unless (sinkpad != nullptr , " Failed to request video pad" );
3536 gst_object_unref (sinkpad);
3637
38+ cout << " setup_kinesisvideoproducersink() end" << endl;
3739 return kinesisvideoproducersink;
3840}
3941
4042static void
4143cleanup_kinesisvideoproducersink (GstElement * kinesisvideoproducersink)
4244{
45+ cout << " cleanup_kinesisvideoproducersink() start" << endl;
46+
4347 GstPad *sinkpad = gst_element_get_static_pad (kinesisvideoproducersink, " video_0" );
4448 if (sinkpad) {
4549 gst_element_release_request_pad (kinesisvideoproducersink, sinkpad);
4650 gst_object_unref (sinkpad);
4751 }
4852
4953 gst_check_teardown_element (kinesisvideoproducersink);
54+
55+ cout << " cleanup_kinesisvideoproducersink() end" << endl;
5056}
5157
5258GST_START_TEST (kvsproducersinktestplayandstop)
@@ -101,6 +107,49 @@ GST_START_TEST(kvsproducersinkteststop)
101107 }
102108GST_END_TEST;
103109
110+ GST_START_TEST (check_stream_name_null_handled)
111+ {
112+ GstElement *kinesisvideoproducersink;
113+
114+ // Setup
115+ kinesisvideoproducersink = gst_check_setup_element (" kvssink" );
116+ fail_unless (kinesisvideoproducersink != nullptr , " Failed to create kvssink element" );
117+
118+ g_object_set (G_OBJECT (kinesisvideoproducersink),
119+ " stream-name" , nullptr ,
120+ NULL );
121+
122+ // Test - Initialization of the client & stream occurs here
123+ fail_unless_equals_int (GST_STATE_CHANGE_FAILURE, gst_element_set_state (kinesisvideoproducersink, GST_STATE_PLAYING));
124+
125+ // Teardown
126+ fail_unless_equals_int (GST_STATE_CHANGE_SUCCESS, gst_element_set_state (kinesisvideoproducersink, GST_STATE_NULL));
127+ gst_check_teardown_element (kinesisvideoproducersink);
128+ }
129+ GST_END_TEST;
130+
131+ GST_START_TEST (check_no_pads_content_type_set_correctly)
132+ {
133+ GstElement *kinesisvideoproducersink;
134+
135+ // Setup
136+ kinesisvideoproducersink = gst_check_setup_element (" kvssink" );
137+ fail_unless (kinesisvideoproducersink != nullptr , " Failed to create kvssink element" );
138+
139+ g_object_set (G_OBJECT (kinesisvideoproducersink),
140+ " stream-name" , " test-stream" ,
141+ NULL );
142+
143+ // Test - Initialization of the client & stream occurs here
144+ // Expecting kvssink->content_type == nullptr since no pads attached
145+ fail_unless_equals_int (GST_STATE_CHANGE_FAILURE, gst_element_set_state (kinesisvideoproducersink, GST_STATE_PLAYING));
146+
147+ // Teardown
148+ fail_unless_equals_int (GST_STATE_CHANGE_SUCCESS, gst_element_set_state (kinesisvideoproducersink, GST_STATE_NULL));
149+ gst_check_teardown_element (kinesisvideoproducersink);
150+ }
151+ GST_END_TEST;
152+
104153GST_START_TEST (check_properties_are_passed_correctly)
105154 {
106155 GstElement *pElement =
@@ -266,6 +315,8 @@ Suite *gst_kinesisvideoproducer_suite(void) {
266315 return s;
267316 }
268317
318+ tcase_add_test (tc, check_stream_name_null_handled);
319+ tcase_add_test (tc, check_no_pads_content_type_set_correctly);
269320 tcase_add_test (tc, kvsproducersinktestplayandstop);
270321 tcase_add_test (tc, kvsproducersinktestplaytopausetoplay);
271322 tcase_add_test (tc, kvsproducersinkteststop);
0 commit comments