def test_is_not_alive(self, monkeypatch): """ Test that is_alive returns True when the underlying proc returns None on Poll """ serv = Server() serv.proc = Mock() monkeypatch.setattr(serv.proc, 'poll', Mock(return_value=123)) assert serv.is_alive() is False
def test_is_not_alive(self, monkeypatch): """ Test that is_alive returns True when the underlying proc returns None on Poll """ serv = Server() serv.proc = Mock() monkeypatch.setattr(serv.proc, "poll", Mock(return_value=123)) assert serv.is_alive() is False
class IntegrationTestbase(object): """Base class for integration tests.""" # Tests are not allowed to have an __init__ method def setup_method(self, _): """Set up called automatically before every test_XXXX method.""" self.log = logging.getLogger() self.log.setLevel(logging.DEBUG) logging.basicConfig( format="%(filename)s:%(lineno)d (%(funcName)s): %(message)s") self.serv = None self._sources = None self.controller = None def setup_server(self, record_file=False): """Set up a gst-switch server for testing.""" assert self.serv is None self.log.info("setting up Server") self.serv = Server(path=PATH, video_format="debug", record_file=record_file) self.log.info("running Server") self.serv.run() assert self.serv.is_alive() self.log.info("waiting for Server to open Controller-Port") self.serv.wait_for_output('tcp:host=::,port=5000') self.log.info("setting up TestSources") self._sources = TestSources(video_port=self.serv.video_port, audio_port=self.serv.audio_port) def setup_controller(self): """Create Controller object and call setup_controller.""" self.log.info("setting up Controller") self.controller = Controller() self.log.info("connecting Controller to Server") self.controller.establish_connection() self.serv.wait_for_output('registered: ') assert self.controller.connection is not None def new_test_video(self, pattern=None): """Start a new Video-Testsource and wait until it's ready""" self.serv.wait_for_output(':::3000') self._sources.new_test_video(pattern=pattern) def setup_video_sources(self, count): """ Starts some Test-Video streams and waits until they are ready """ self.log.info("starting 2 test-video sources") for _ in range(0, count): self.new_test_video() self.log.info("waiting for the test-video sources to come up") self.wait_for_sources(count) def new_test_audio(self, freq=110, wave=AudioSrc.WAVE_SINE): """Start a new Audio-Testsource and wait until it's ready""" self.serv.wait_for_output(':::4000') self._sources.new_test_audio(freq=freq, wave=wave) def setup_audio_sources(self, count): """ Starts some Test-Audio streams and waits until they are ready """ self.log.info("starting 2 test-audio sources") for _ in range(0, count): self.new_test_audio() self.log.info("waiting for the test-audio sources to come up") self.wait_for_sources(count) def wait_for_sources(self, count): """ Blocks until the Server has reported, that the right number of preview-ports are is started """ self.log.info("waiting for Server to start preview-port-outputs") self.serv.wait_for_output('tcpserversink name=sink', count=count) def teardown_method(self, _): """Tear down called automatically after every test_XXXX method.""" self.controller = None # Kill all the sources if self._sources is not None: self.log.info("terminating Video-TestSource") self._sources.terminate_video() self.log.info("terminating Audio-TestSource") self._sources.terminate_audio() self._sources = None if self.serv is not None: self.log.info("terminating Server") self.serv.terminate(cov=True) if self.serv.proc: poll = self.serv.proc.poll() if poll == -11: self.log.error("Server exited with Segmentation Fault") if poll != 0: self.log.error("Server exited Error Eode %s", poll) log = open('server.log') print(log.read()) self.serv = None
class IntegrationTestbase(object): """Base class for integration tests.""" # Tests are not allowed to have an __init__ method def setup_method(self, _): """Set up called automatically before every test_XXXX method.""" self.log = logging.getLogger() self.log.setLevel(logging.DEBUG) logging.basicConfig( format="%(filename)s:%(lineno)d (%(funcName)s): %(message)s") self.serv = None self._sources = None self.controller = None def setup_server(self, record_file=False): """Set up a gst-switch server for testing.""" assert self.serv is None self.log.info("setting up Server") self.serv = Server(path=PATH, video_format="debug", record_file=record_file) self.log.info("running Server") self.serv.run() assert self.serv.is_alive() self.log.info("waiting for Server to open Controller-Port") self.serv.wait_for_output('tcp:host=::,port=5000') self.log.info("setting up TestSources") self._sources = TestSources( video_port=self.serv.video_port, audio_port=self.serv.audio_port) def setup_controller(self): """Create Controller object and call setup_controller.""" self.log.info("setting up Controller") self.controller = Controller() self.log.info("connecting Controller to Server") self.controller.establish_connection() self.serv.wait_for_output('registered: ') assert self.controller.connection is not None def new_test_video(self, pattern=None): """Start a new Video-Testsource and wait until it's ready""" self.serv.wait_for_output(':::3000') self._sources.new_test_video(pattern=pattern) def setup_video_sources(self, count): """ Starts some Test-Video streams and waits until they are ready """ self.log.info("starting 2 test-video sources") for _ in range(0, count): self.new_test_video() self.log.info("waiting for the test-video sources to come up") self.wait_for_sources(count) def new_test_audio(self, freq=110, wave=AudioSrc.WAVE_SINE): """Start a new Audio-Testsource and wait until it's ready""" self.serv.wait_for_output(':::4000') self._sources.new_test_audio(freq=freq, wave=wave) def setup_audio_sources(self, count): """ Starts some Test-Audio streams and waits until they are ready """ self.log.info("starting 2 test-audio sources") for _ in range(0, count): self.new_test_audio() self.log.info("waiting for the test-audio sources to come up") self.wait_for_sources(count) def wait_for_sources(self, count): """ Blocks until the Server has reported, that the right number of preview-ports are is started """ self.log.info("waiting for Server to start preview-port-outputs") self.serv.wait_for_output('tcpserversink name=sink', count=count) def teardown_method(self, _): """Tear down called automatically after every test_XXXX method.""" self.controller = None # Kill all the sources if self._sources is not None: self.log.info("terminating Video-TestSource") self._sources.terminate_video() self.log.info("terminating Audio-TestSource") self._sources.terminate_audio() self._sources = None if self.serv is not None: self.log.info("terminating Server") self.serv.terminate(cov=True) if self.serv.proc: poll = self.serv.proc.poll() if poll == -11: self.log.error("Server exited with Segmentation Fault") if poll != 0: self.log.error("Server exited Error Eode %s", poll) log = open('server.log') print(log.read()) self.serv = None