Skip to content
Snippets Groups Projects
test_metadata_insert_merge.liq 2.31 KiB
Newer Older
#!/usr/bin/env liquidsoap
#
# Aura Engine (https://gitlab.servus.at/aura/engine)
#
# Copyright (C) 2017-now() - The Aura Engine Team.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


%include "base_config.liq"
%include "../src/functions.liq"

# Test insert metadata on stream
url = "https://securestream.o94.at/live.mp3"
in_stream = input.http(id="in_stream", start=true, url)
in_stream = insert_metadata(id="in_stream", in_stream)
def on_metadata_notification(metadata) =
    print("Metadata Notification: \n#{metadata}")
end

# Save the callback
last_metadata = in_stream.last_metadata
imcb = in_stream.insert_metadata

# Handle event and stream output
in_stream = source.on_metadata(id="in_stream", in_stream, on_metadata_notification)
output.alsa(id="lineout", device="default", mksafe(in_stream))


# Test Case 1: Normal insert and merge
# Provide new metadata every 3 seconds
def case1() =
    print("Running Test Case 1 ...")
    meta = [("foo", "bar")]
    do_meta_insert(last_metadata, imcb, meta)
thread.run(delay=2., { case1() })
thread.run(delay=4., { case1() })
thread.run(delay=8., { case1() })
# Test Case 2: Insert metadata with new show
# Provide new metadata after 23 seconds
def case2() =
    print("Running Test Case 2 ...")
    meta = [("show_id", "333"), ("FooBar", "2000")]
    do_meta_insert(last_metadata, imcb, meta)
end
thread.run(delay=13., { case2() })
thread.run(delay=16., { case1() })

# Test Case 3: Insert metadata with new show
# Provide new show metadata after 42 seconds
def case3() =
    print("Running Test Case 3 ...")
    meta = [("show_id", "42"), ("Something", "...completely different")]
    do_meta_insert(last_metadata, imcb, meta)
thread.run(delay=23., { case3() })
thread.run(delay=42., { case1() })