Ejemplo n.º 1
0
    def create_valid_mock_source(self, bitrate=8, channels=1):
        self.mock_source = mock.MagicMock()
        self.mock_queue_source = self.mock_source._get_queue_source.return_value

        byte_rate = bitrate >> 3
        self.mock_data = [
            b'a' * 22050 * byte_rate * channels,
            b'b' * 22050 * byte_rate * channels,
            b'c' * 11025 * byte_rate * channels
        ]
        self.mock_data_length = sum(map(len, self.mock_data))
        self.mock_audio_data = b''.join(self.mock_data)

        def _get_audio_data(_):
            if not self.mock_data:
                return None
            data = self.mock_data.pop(0)
            return AudioData(data, len(data), 0.0, 1.0, ())

        self.mock_queue_source.get_audio_data.side_effect = _get_audio_data

        type(self.mock_queue_source).audio_format = mock.PropertyMock(
            return_value=AudioFormat(channels, bitrate, 11025))
        type(self.mock_queue_source).video_format = mock.PropertyMock(
            return_value=None)
Ejemplo n.º 2
0
def test_worker_refill_multiple_players_refill_multiple():
    worker = PlayerWorker()
    worker.start()

    try:
        player1 = mock.MagicMock()
        player1.get_write_size.return_value = 1024
        type(player1).min_buffer_size = mock.PropertyMock(return_value=512)
        worker.add(player1)

        player2 = mock.MagicMock()
        player2.get_write_size.return_value = 768
        type(player2).min_buffer_size = mock.PropertyMock(return_value=512)
        worker.add(player2)

        for _ in range(10):
            if player1.get_write_size.called and player2.get_write_size.called:
                break
            time.sleep(.1)

        player1.refill.assert_called_with(1024)
        player2.refill.assert_called_with(768)

    finally:
        worker.stop()
Ejemplo n.º 3
0
 def create_mock_player(self, has_audio=True):
     player = mock.MagicMock()
     if has_audio:
         audio_player = mock.PropertyMock(return_value=mock.MagicMock())
     else:
         audio_player = mock.PropertyMock(return_value=None)
     type(player)._audio_player = audio_player
     return player
Ejemplo n.º 4
0
 def create_mock_source(self, audio_format, video_format):
     mock_source = mock.MagicMock(spec=Source)
     type(mock_source).audio_format = mock.PropertyMock(return_value=audio_format)
     type(mock_source).video_format = mock.PropertyMock(return_value=video_format)
     type(mock_source._get_queue_source.return_value).audio_format = mock.PropertyMock(return_value=audio_format)
     type(mock_source._get_queue_source.return_value).video_format = mock.PropertyMock(return_value=video_format)
     if video_format:
         mock_source.video_format.frame_rate = 30
     return mock_source
Ejemplo n.º 5
0
 def create_mock_source(self, duration, audio_data=None, video_frame=None):
     mock_source = mock.MagicMock()
     m = mock_source._get_queue_source.return_value
     type(m).audio_format = mock.PropertyMock(return_value=self.audio_format)
     type(m).video_format = mock.PropertyMock(return_value=self.video_format)
     type(m).duration = mock.PropertyMock(return_value=duration)
     m.get_audio_data.return_value = self.create_audio_data(duration, audio_data)
     m.get_next_video_timestamp.return_value=0.1
     m.get_next_video_frame.return_value=video_frame
     return mock_source
Ejemplo n.º 6
0
 def create_mock_source(self, audio_format, video_format):
     mock_source = mock.MagicMock()
     type(mock_source).audio_format = mock.PropertyMock(
         return_value=audio_format)
     type(mock_source).video_format = mock.PropertyMock(
         return_value=video_format)
     type(mock_source._get_queue_source.return_value
          ).audio_format = mock.PropertyMock(return_value=audio_format)
     type(mock_source._get_queue_source.return_value
          ).video_format = mock.PropertyMock(return_value=video_format)
     return mock_source
Ejemplo n.º 7
0
    def test_empty_source(self):
        """Test that wrapping an empty source does not cause trouble."""
        self.mock_source = mock.MagicMock()
        self.mock_queue_source = self.mock_source._get_queue_source.return_value

        type(self.mock_queue_source).audio_format = mock.PropertyMock(return_value=None)
        type(self.mock_queue_source).video_format = mock.PropertyMock(return_value=None)

        static_source = StaticSource(self.mock_source)

        self.assertEqual(static_source.duration, 0.)
        self.assertIsNone(static_source._get_queue_source())
Ejemplo n.º 8
0
    def test_video_not_supported(self):
        self.create_valid_mock_source()
        type(self.mock_queue_source).video_format = mock.PropertyMock(
            return_value=VideoFormat(800, 600))

        with self.assertRaises(NotImplementedError):
            static_source = StaticSource(self.mock_source)
Ejemplo n.º 9
0
def test_worker_add_remove_players():
    worker = PlayerWorker()
    player1 = mock.MagicMock()
    player1.get_write_size.return_value = 0
    type(player1).min_buffer_size = mock.PropertyMock(return_value=512)
    player2 = mock.MagicMock()
    player2.get_write_size.return_value = 0
    type(player2).min_buffer_size = mock.PropertyMock(return_value=512)

    worker.start()
    try:
        worker.add(player1)
        worker.add(player2)
        worker.remove(player1)
        worker.remove(player2)
        worker.remove(player2)
    finally:
        worker.stop()
Ejemplo n.º 10
0
    def __init__(self, duration, timestamp=0.):
        self.mock = mock.MagicMock()
        type(self.mock).audio_format = mock.PropertyMock(
            return_value=self.audio_format)
        self.mock.get_audio_data.side_effect = self._get_audio_data

        self.timestamp = timestamp
        self.duration = duration

        self.seconds_buffered = 0.
        self.bytes_buffered = 0
Ejemplo n.º 11
0
    def test_data_uri(self, lib_mock):
        lib_mock.sp_image_format.return_value = int(spotify.ImageFormat.JPEG)
        sp_image = spotify.ffi.new('int *')

        prop_mock = mock.PropertyMock()
        with mock.patch.object(spotify.Image, 'data', prop_mock):
            image = spotify.Image(sp_image=sp_image)
            prop_mock.return_value = b'01234\x006789'

            result = image.data_uri

        self.assertEqual(result, 'data:image/jpeg;base64,MDEyMzQANjc4OQ==')
Ejemplo n.º 12
0
    def test_data_uri(self, lib_mock):
        lib_mock.sp_image_format.return_value = int(spotify.ImageFormat.JPEG)
        lib_mock.sp_image_add_load_callback.return_value = int(
            spotify.ErrorType.OK)
        sp_image = spotify.ffi.cast('sp_image *', 42)

        prop_mock = mock.PropertyMock()
        with mock.patch.object(spotify.Image, 'data', prop_mock):
            image = spotify.Image(self.session, sp_image=sp_image)
            prop_mock.return_value = b'01234\x006789'

            result = image.data_uri

        self.assertEqual(result, 'data:image/jpeg;base64,MDEyMzQANjc4OQ==')
Ejemplo n.º 13
0
def test_worker_do_not_refill_player():
    worker = PlayerWorker()
    worker.start()

    try:
        player = mock.MagicMock()
        player.get_write_size.return_value = 104
        type(player).min_buffer_size = mock.PropertyMock(return_value=512)
        worker.add(player)

        for _ in range(10):
            if player.get_write_size.called:
                break
            time.sleep(.1)

        worker.remove(player)
        assert not player.refill.called

    finally:
        worker.stop()
Ejemplo n.º 14
0
 def test_is_draining(self, osd_obj, draining, empty, expected):
     with mock.patch("cephadm.services.osd.OSD.is_empty", new_callable=mock.PropertyMock(return_value=empty)):
         osd_obj.draining = draining
         assert osd_obj.is_draining is expected