diff options
Diffstat (limited to 'tests/test_stream.c')
-rw-r--r-- | tests/test_stream.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/test_stream.c b/tests/test_stream.c index 8c887048c..50f0ccbfd 100644 --- a/tests/test_stream.c +++ b/tests/test_stream.c @@ -38,6 +38,7 @@ #include "asterisk/format_cap.h" #include "asterisk/format_cache.h" #include "asterisk/channel.h" +#include "asterisk/uuid.h" AST_TEST_DEFINE(stream_create) { @@ -224,6 +225,70 @@ AST_TEST_DEFINE(stream_set_state) return AST_TEST_PASS; } +AST_TEST_DEFINE(stream_metadata) +{ + RAII_VAR(struct ast_stream *, stream, NULL, ast_stream_free); + char track_label[AST_UUID_STR_LEN + 1]; + const char *stream_track_label; + int rc; + + switch (cmd) { + case TEST_INIT: + info->name = "stream_metadata"; + info->category = "/main/stream/"; + info->summary = "stream metadata unit test"; + info->description = + "Test that metadata operations on a stream works"; + return AST_TEST_NOT_RUN; + case TEST_EXECUTE: + break; + } + + stream = ast_stream_alloc("test", AST_MEDIA_TYPE_AUDIO); + if (!stream) { + ast_test_status_update(test, "Failed to create media stream given proper arguments\n"); + return AST_TEST_FAIL; + } + + stream_track_label = ast_stream_get_metadata(stream, "AST_STREAM_METADATA_TRACK_LABEL"); + if (stream_track_label) { + ast_test_status_update(test, "New stream HAD a track label\n"); + return AST_TEST_FAIL; + } + + ast_uuid_generate_str(track_label, sizeof(track_label)); + rc = ast_stream_set_metadata(stream, "AST_STREAM_METADATA_TRACK_LABEL", track_label); + if (rc != 0) { + ast_test_status_update(test, "Failed to add track label\n"); + return AST_TEST_FAIL; + } + + stream_track_label = ast_stream_get_metadata(stream, "AST_STREAM_METADATA_TRACK_LABEL"); + if (!stream_track_label) { + ast_test_status_update(test, "Changed stream does not have a track label\n"); + return AST_TEST_FAIL; + } + + if (strcmp(stream_track_label, track_label) != 0) { + ast_test_status_update(test, "Changed stream did not return same track label\n"); + return AST_TEST_FAIL; + } + + rc = ast_stream_set_metadata(stream, "AST_STREAM_METADATA_TRACK_LABEL", NULL); + if (rc != 0) { + ast_test_status_update(test, "Failed to remove track label\n"); + return AST_TEST_FAIL; + } + + stream_track_label = ast_stream_get_metadata(stream, "AST_STREAM_METADATA_TRACK_LABEL"); + if (stream_track_label) { + ast_test_status_update(test, "Changed stream still had a track label after we removed it\n"); + return AST_TEST_FAIL; + } + + return AST_TEST_PASS; +} + AST_TEST_DEFINE(stream_topology_create) { RAII_VAR(struct ast_stream_topology *, topology, NULL, ast_stream_topology_free); @@ -254,6 +319,11 @@ AST_TEST_DEFINE(stream_topology_clone) RAII_VAR(struct ast_stream_topology *, topology, NULL, ast_stream_topology_free); RAII_VAR(struct ast_stream_topology *, cloned, NULL, ast_stream_topology_free); struct ast_stream *audio_stream, *video_stream; + char audio_track_label[AST_UUID_STR_LEN + 1]; + char video_track_label[AST_UUID_STR_LEN + 1]; + const char *original_track_label; + const char *cloned_track_label; + int rc; switch (cmd) { case TEST_INIT: @@ -279,6 +349,13 @@ AST_TEST_DEFINE(stream_topology_clone) return AST_TEST_FAIL; } + ast_uuid_generate_str(audio_track_label, sizeof(audio_track_label)); + rc = ast_stream_set_metadata(audio_stream, "AST_STREAM_METADATA_TRACK_LABEL", audio_track_label); + if (rc != 0) { + ast_test_status_update(test, "Failed to add track label\n"); + return AST_TEST_FAIL; + } + if (ast_stream_topology_append_stream(topology, audio_stream) == -1) { ast_test_status_update(test, "Failed to append valid audio stream to stream topology\n"); ast_stream_free(audio_stream); @@ -291,6 +368,13 @@ AST_TEST_DEFINE(stream_topology_clone) return AST_TEST_FAIL; } + ast_uuid_generate_str(video_track_label, sizeof(video_track_label)); + rc = ast_stream_set_metadata(video_stream, "AST_STREAM_METADATA_TRACK_LABEL", video_track_label); + if (rc != 0) { + ast_test_status_update(test, "Failed to add track label\n"); + return AST_TEST_FAIL; + } + if (ast_stream_topology_append_stream(topology, video_stream) == -1) { ast_test_status_update(test, "Failed to append valid video stream to stream topology\n"); ast_stream_free(video_stream); @@ -313,11 +397,45 @@ AST_TEST_DEFINE(stream_topology_clone) return AST_TEST_FAIL; } + original_track_label = ast_stream_get_metadata(ast_stream_topology_get_stream(topology, 0), + "AST_STREAM_METADATA_TRACK_LABEL"); + if (!original_track_label) { + ast_test_status_update(test, "Original topology stream 0 does not contain metadata\n"); + return AST_TEST_FAIL; + } + cloned_track_label = ast_stream_get_metadata(ast_stream_topology_get_stream(cloned, 0), + "AST_STREAM_METADATA_TRACK_LABEL"); + if (!cloned_track_label) { + ast_test_status_update(test, "Cloned topology stream 0 does not contain metadata\n"); + return AST_TEST_FAIL; + } + if (strcmp(original_track_label, cloned_track_label) != 0) { + ast_test_status_update(test, "Cloned topology stream 0 track label was not the same as the original\n"); + return AST_TEST_FAIL; + } + if (ast_stream_get_type(ast_stream_topology_get_stream(cloned, 1)) != ast_stream_get_type(ast_stream_topology_get_stream(topology, 1))) { ast_test_status_update(test, "Cloned video stream does not contain same type as original\n"); return AST_TEST_FAIL; } + original_track_label = ast_stream_get_metadata(ast_stream_topology_get_stream(topology, 1), + "AST_STREAM_METADATA_TRACK_LABEL"); + if (!original_track_label) { + ast_test_status_update(test, "Original topology stream 1 does not contain metadata\n"); + return AST_TEST_FAIL; + } + cloned_track_label = ast_stream_get_metadata(ast_stream_topology_get_stream(cloned, 1), + "AST_STREAM_METADATA_TRACK_LABEL"); + if (!cloned_track_label) { + ast_test_status_update(test, "Cloned topology stream 1 does not contain metadata\n"); + return AST_TEST_FAIL; + } + if (strcmp(original_track_label, cloned_track_label) != 0) { + ast_test_status_update(test, "Cloned topology stream 1 track label was not the same as the original\n"); + return AST_TEST_FAIL; + } + return AST_TEST_PASS; } @@ -2139,6 +2257,7 @@ static int unload_module(void) AST_TEST_UNREGISTER(stream_set_type); AST_TEST_UNREGISTER(stream_set_formats); AST_TEST_UNREGISTER(stream_set_state); + AST_TEST_UNREGISTER(stream_metadata); AST_TEST_UNREGISTER(stream_topology_create); AST_TEST_UNREGISTER(stream_topology_clone); AST_TEST_UNREGISTER(stream_topology_clone); @@ -2169,6 +2288,7 @@ static int load_module(void) AST_TEST_REGISTER(stream_set_type); AST_TEST_REGISTER(stream_set_formats); AST_TEST_REGISTER(stream_set_state); + AST_TEST_REGISTER(stream_metadata); AST_TEST_REGISTER(stream_topology_create); AST_TEST_REGISTER(stream_topology_clone); AST_TEST_REGISTER(stream_topology_append_stream); |