From b7aab827d6ada7ddd64f2d9271b3dd1c4f3ca591 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 13 Apr 2010 09:53:25 +0200 Subject: [PATCH 1/5] Add alternativ test files --- tests/data/blank.flac | Bin 0 -> 9034 bytes tests/data/blank.ogg | Bin 0 -> 58178 bytes tests/data/blank.wav | Bin 0 -> 845984 bytes tests/data/song1.flac | 1 + tests/data/song1.ogg | 1 + tests/data/song1.wav | 1 + tests/data/song2.flac | 1 + tests/data/song2.ogg | 1 + tests/data/song2.wav | 1 + tests/data/song3.flac | 1 + tests/data/song3.ogg | 1 + tests/data/song3.wav | 1 + 12 files changed, 9 insertions(+) create mode 100644 tests/data/blank.flac create mode 100644 tests/data/blank.ogg create mode 100644 tests/data/blank.wav create mode 120000 tests/data/song1.flac create mode 120000 tests/data/song1.ogg create mode 120000 tests/data/song1.wav create mode 120000 tests/data/song2.flac create mode 120000 tests/data/song2.ogg create mode 120000 tests/data/song2.wav create mode 120000 tests/data/song3.flac create mode 120000 tests/data/song3.ogg create mode 120000 tests/data/song3.wav diff --git a/tests/data/blank.flac b/tests/data/blank.flac new file mode 100644 index 0000000000000000000000000000000000000000..b838b98eb40ae951f722aa4df50475536882cb2d GIT binary patch literal 9034 zcmeI&&r8#B9LMpG+nj5fesx;Q-2A#)nbYZm(Upk+0bWdd^6Q`?S0*$vca0Lp2i_O(LG zk5KPQq1;C5^HnJC5Y?7~v^;7y4&^(jhJ2_XgX*{rx$M;YUr?covb}0^-k*T0jMNE?aF~XmDF$-d%AE8no zWlutSKUMP@D(j}734jDhF@GxY4r3U7p U&R literal 0 HcmV?d00001 diff --git a/tests/data/blank.ogg b/tests/data/blank.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3b1c57a1c68a11ba2a7c5e36a08a790252878d79 GIT binary patch literal 58178 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 literal 0 HcmV?d00001 diff --git a/tests/data/blank.wav b/tests/data/blank.wav new file mode 100644 index 0000000000000000000000000000000000000000..5217ec6f585a811771016dfef745fec3ac0a9876 GIT binary patch literal 845984 zcmeIup$&sj07cPPf Date: Wed, 14 Apr 2010 14:56:42 +0200 Subject: [PATCH 2/5] Convert callback test to threading.Event --- tests/backends/base.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/backends/base.py b/tests/backends/base.py index b0ceef79..8dfc6df3 100644 --- a/tests/backends/base.py +++ b/tests/backends/base.py @@ -1,5 +1,6 @@ import random import time +import threading from mopidy.mixers.dummy import DummyMixer from mopidy.models import Playlist, Track @@ -546,19 +547,21 @@ class BasePlaybackControllerTest(object): @populate_playlist def test_end_of_track_callback_gets_called(self): end_of_track_callback = self.playback.end_of_track_callback + event = threading.Event() def wrapper(): - wrapper.called = True - return end_of_track_callback() - wrapper.called = False + result = end_of_track_callback() + event.set() + return result self.playback.end_of_track_callback= wrapper self.playback.play() - self.playback.seek(self.tracks[0].length - 1) - time.sleep(0.5) + self.playback.seek(self.tracks[0].length - 10) - self.assert_(wrapper.called) + event.wait(5) + + self.assert_(event.is_set()) @populate_playlist def test_new_playlist_loaded_callback_when_playing(self): From 3ebad1cbac446052b0116fecc0cbf1d51987881c Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 14 Apr 2010 15:14:44 +0200 Subject: [PATCH 3/5] Make sure message thread is a deamon thread --- mopidy/backends/gstreamer.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mopidy/backends/gstreamer.py b/mopidy/backends/gstreamer.py index 1e84af57..41e7ccb7 100644 --- a/mopidy/backends/gstreamer.py +++ b/mopidy/backends/gstreamer.py @@ -17,8 +17,10 @@ logger = logging.getLogger(u'backends.gstreamer') class GStreamerMessages(threading.Thread): def run(self): gobject.MainLoop().run() -GStreamerMessages().start() +message_thread = GStreamerMessages() +message_thread.daemon = True +message_thread.start() class GStreamerBackend(BaseBackend): def __init__(self, *args, **kwargs): From e4ca6e3156b71fcbdc1cbcaf56223045c26c40f2 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 14 Apr 2010 16:04:29 +0200 Subject: [PATCH 4/5] Log when time_position in gstreamer fails --- mopidy/backends/gstreamer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mopidy/backends/gstreamer.py b/mopidy/backends/gstreamer.py index 41e7ccb7..00df58e9 100644 --- a/mopidy/backends/gstreamer.py +++ b/mopidy/backends/gstreamer.py @@ -84,7 +84,8 @@ class GStreamerPlaybackController(BasePlaybackController): def time_position(self): try: return self._bin.query_position(gst.FORMAT_TIME)[0] // gst.MSECOND - except gst.QueryError: + except gst.QueryError, e: + logger.error('time_position failed: %s',e ) return 0 def destroy(self): From 5bd6bf455bfcecaf0474b2d8c8f3484abf11b792 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 14 Apr 2010 16:05:08 +0200 Subject: [PATCH 5/5] Init time for backend varies, so longer sleep is required in test_time_position_when_playing --- tests/backends/base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/backends/base.py b/tests/backends/base.py index 8dfc6df3..0d62554d 100644 --- a/tests/backends/base.py +++ b/tests/backends/base.py @@ -740,9 +740,8 @@ class BasePlaybackControllerTest(object): @populate_playlist def test_time_position_when_playing(self): self.playback.play() - time.sleep(0.2) first = self.playback.time_position - time.sleep(0.2) + time.sleep(1) second = self.playback.time_position self.assert_(second > first, '%s - %s' % (first, second))