async def test_stream_open_fails(hass): """Test failure on stream open.""" stream = Stream(hass, STREAM_SOURCE) stream.add_provider(STREAM_OUTPUT_FORMAT) with patch("av.open") as av_open: av_open.side_effect = av.error.InvalidDataError(-2, "error") stream_worker(hass, stream, threading.Event()) await hass.async_block_till_done() av_open.assert_called_once()
async def test_stream_open_fails(hass): """Test failure on stream open.""" stream = Stream(hass, STREAM_SOURCE, {}) stream.add_provider(HLS_PROVIDER) with patch("av.open") as av_open: av_open.side_effect = av.error.InvalidDataError(-2, "error") segment_buffer = SegmentBuffer(hass, stream.outputs) stream_worker(STREAM_SOURCE, {}, segment_buffer, threading.Event()) await hass.async_block_till_done() av_open.assert_called_once()
def run_worker(hass, stream, stream_source, stream_settings=None): """Run the stream worker under test.""" stream_state = StreamState(hass, stream.outputs, stream._diagnostics) stream_worker( stream_source, {}, stream_settings or hass.data[DOMAIN][ATTR_SETTINGS], stream_state, KeyFrameConverter(hass), threading.Event(), )
async def test_worker_log(hass, caplog): """Test that the worker logs the url without username and password.""" stream = Stream(hass, "https://*****:*****@foo.bar", {}) stream.add_provider(HLS_PROVIDER) with patch("av.open") as av_open: av_open.side_effect = av.error.InvalidDataError(-2, "error") segment_buffer = SegmentBuffer(hass, stream.outputs) stream_worker("https://*****:*****@foo.bar", {}, segment_buffer, threading.Event()) await hass.async_block_till_done() assert "https://*****:*****@foo.bar" not in caplog.text assert "https://****:****@foo.bar" in caplog.text
async def async_decode_stream(hass, packets, py_av=None): """Start a stream worker that decodes incoming stream packets into output segments.""" stream = Stream(hass, STREAM_SOURCE) stream.add_provider(STREAM_OUTPUT_FORMAT) if not py_av: py_av = MockPyAv() py_av.container.packets = packets with patch("av.open", new=py_av.open), patch( "homeassistant.components.stream.core.StreamOutput.put", side_effect=py_av.capture_buffer.capture_output_segment, ): stream_worker(hass, stream, threading.Event()) await hass.async_block_till_done() return py_av.capture_buffer
async def async_decode_stream(hass, packets, py_av=None): """Start a stream worker that decodes incoming stream packets into output segments.""" stream = Stream(hass, STREAM_SOURCE, {}) stream.add_provider(HLS_PROVIDER) if not py_av: py_av = MockPyAv() py_av.container.packets = iter(packets) # Can't be rewound with patch("av.open", new=py_av.open), patch( "homeassistant.components.stream.core.StreamOutput.put", side_effect=py_av.capture_buffer.capture_output_segment, ): segment_buffer = SegmentBuffer(hass, stream.outputs) stream_worker(STREAM_SOURCE, {}, segment_buffer, threading.Event()) await hass.async_block_till_done() return py_av.capture_buffer
def run_worker(hass, stream, stream_source): """Run the stream worker under test.""" stream_state = StreamState(hass, stream.outputs, stream._diagnostics) stream_worker(stream_source, {}, stream_state, KeyFrameConverter(hass), threading.Event())
def run_worker(hass, stream, stream_source): """Run the stream worker under test.""" stream_state = StreamState(hass, stream.outputs) stream_worker(stream_source, {}, stream_state, threading.Event())