summaryrefslogtreecommitdiff
path: root/tests/test_stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_stream.c')
-rw-r--r--tests/test_stream.c120
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);