Commit a8e760f7 authored by Jan Kiene's avatar Jan Kiene
Browse files

add metadata BE comparison in test_param_file.py

parent c97ee0dc
Loading
Loading
Loading
Loading
+27 −4
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ Execute tests specified via a parameter file.
import os
import errno
import platform
import filecmp
from subprocess import run
import pytest
from cmp_pcm import cmp_pcm
@@ -268,7 +269,7 @@ def test_param_file_tests(
    # -> construct output filename
    output_file = f"{testv_base}_{tag_str}.dec.wav"

    decode(
    stdout = decode(
        dut_decoder_frontend,
        ref_decoder_path,
        reference_path,
@@ -282,13 +283,29 @@ def test_param_file_tests(
        tracefile_dec,
    )

    # get metadata file paths from decoder stdout
    md_out_files = list()
    for line in stdout.split("\n"):
        line_strip = line.strip()
        if line_strip.startswith("Output metadata file"):
            line_split = line_strip.split()
            md_file = os.path.basename(line_split[-1])
            md_out_files.append(md_file)

    if update_ref in [0, 2]:
        dut_file = f"{dut_base_path}/param_file/dec/{output_file}"
        ref_file = f"{reference_path}/param_file/dec/{output_file}"
        dut_output_file = f"{dut_base_path}/param_file/dec/{output_file}"
        ref_output_file = f"{reference_path}/param_file/dec/{output_file}"
        fs = int(sampling_rate) * 1000
        cmp_result, reason = cmp_pcm(dut_file, ref_file, output_config, fs)
        cmp_result, reason = cmp_pcm(dut_output_file, ref_output_file, output_config, fs)
        assert cmp_result == 0, reason

        for md_file in md_out_files:
            print(md_file)
            dut_metadata_file = f"{dut_base_path}/param_file/dec/{md_file}"
            ref_metadata_file = f"{reference_path}/param_file/dec/{md_file}"
            msg = "Metadata output files differ between reference and dut."
            assert filecmp.cmp(dut_metadata_file, ref_metadata_file), msg

        # remove DUT output files when test result is OK (to save disk space)
        if not keep_files:
            os.remove(f"{dut_base_path}/param_file/enc/{bitstream_file}")
@@ -450,6 +467,8 @@ def decode(
            add_option_list=add_option_list,
        )

        stdout = ref_decoder.stdout

    if update_ref in [0, 2]:
        check_and_makedir(dut_out_dir)
        add_option_list = dec_opts_list
@@ -466,3 +485,7 @@ def decode(
            dut_out_file,
            add_option_list=add_option_list,
        )

        stdout = decoder_frontend.stdout

    return stdout
 No newline at end of file