Source code for hveto.cli.tests.test_trace
# -*- coding: utf-8 -*-
# Copyright (C) Alex Urban (2020)
#
# This file is part of the hveto python package.
#
# hveto is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# hveto 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with hveto. If not, see <http://www.gnu.org/licenses/>.
"""Tests for :mod:`hveto.cli.trace`
"""
import os.path
import pytest
import shutil
from gwpy.segments import (
Segment,
SegmentList,
)
from .. import trace
__author__ = "Alex Urban <alexander.urban@ligo.org>"
# -- test configuration
VALID_RESULTS = """{
"rounds": [{
"files": {"VETO_SEGS": ["TEST-HVETO-SEGMENTS.txt"]},
"name": "L1:ASC-X_TR_A_NSUM_OUT_DQ",
"significance": 78.93832125380759,
"snr": 11.0,
"window": 0.4
}]
}"""
EMPTY_RESULTS = '{"rounds": [{"files": {"VETO_SEGS": []}}]}'
TEST_SEGMENTS = SegmentList([Segment(0, 8)])
# -- cli tests ----------------------------------------------------------------
[docs]def test_main(caplog, tmpdir):
indir = str(tmpdir)
summary_stats = os.path.join(indir, 'summary-stats.json')
print(VALID_RESULTS, file=open(summary_stats, 'w'))
TEST_SEGMENTS.write(os.path.join(indir, 'TEST-HVETO-SEGMENTS.txt'))
args = [
'--trigger-time', '4',
'--directory', indir,
'--verbose',
]
# test output
trace.main(args)
assert "Running in verbose mode" in caplog.text
assert "Search directory: {}".format(indir) in caplog.text
assert ("Trigger time 4.0 was vetoed in round 1 "
"by segment [0 ... 8)" in caplog.text)
assert "Round winner: L1:ASC-X_TR_A_NSUM_OUT_DQ" in caplog.text
assert "Significance: 78.93832125380759" in caplog.text
assert "SNR: 11.0" in caplog.text
assert "Window: 0.4" in caplog.text
# clean up
shutil.rmtree(indir, ignore_errors=True)
[docs]def test_main_no_input(caplog, tmpdir):
indir = str(tmpdir)
args = [
'--trigger-time', '0',
'--directory', indir,
]
# test output
with pytest.raises(IOError):
trace.main(args)
assert ("'summary-stats.json' was not found in the "
"input directory" in caplog.text)
# clean up
shutil.rmtree(indir, ignore_errors=True)
[docs]def test_main_empty_input(caplog, tmpdir):
indir = str(tmpdir)
summary_stats = os.path.join(indir, 'summary-stats.json')
print(EMPTY_RESULTS, file=open(summary_stats, 'w'))
args = [
'--trigger-time', '0',
'--directory', indir,
]
# test output
trace.main(args)
assert "Trigger time 0.0 was not vetoed" in caplog.text
# clean up
shutil.rmtree(indir, ignore_errors=True)