3 # This file is part of DisOrder.
4 # Copyright (C) 2008 Richard Kettlewell
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 import dtest,disorder,time,string
22 """Return the current time in whole seconds"""
23 return int(time.time())
26 print " waiting for track to play"
29 while p is None and waited < 10:
33 assert waited < 10, "track played in a reasonable time"
37 print " waiting for nothing to be playing"
40 while p is not None and waited < 20:
44 assert waited < 20, "idled in a reasonable time"
47 """Exercise schedule support"""
53 # Wait until there's no track playing
54 print " waiting for nothing to be playing"
55 while c.playing() is not None:
58 track = "%s/Joe Bloggs/First Album/05:Fifth track.ogg" % dtest.tracks
59 print " scheduling a track for the future"
61 c.schedule_add(when, "normal", "play", track)
62 print " disorder schedule-list output:"
63 print string.join(dtest.command(["disorder",
64 "--config", disorder._configfile,
65 "--no-per-user-config",
66 "schedule-list"]), ""),
68 assert p["track"] == track, "checking right track played"
69 assert int(p["when"]) >= when, "checking track played at right time"
70 assert c.schedule_list() == [], "checking schedule is empty"
72 print " scheduling an enable-random for the future"
73 c.schedule_add(now() + 3, "junk", "set-global", "random-play", "yes")
74 print " disorder schedule-list output:"
75 print string.join(dtest.command(["disorder",
76 "--config", disorder._configfile,
77 "--no-per-user-config",
78 "schedule-list"]), ""),
80 print " disabling random play"
83 print " scheduling track to play later via command line"
85 dtest.command(["disorder",
86 "--config", disorder._configfile,
87 "--no-per-user-config",
89 time.strftime("%Y-%m-%d %H:%M:%S",
90 time.localtime(when)),
93 print " disorder schedule-list output:"
94 print string.join(dtest.command(["disorder",
95 "--config", disorder._configfile,
96 "--no-per-user-config",
97 "schedule-list"]), ""),
99 assert p["track"] == track, "checking right track played"
100 assert p["when"] >= when, "checking track played at right time"
101 assert c.schedule_list() == [], "checking schedule is empty"
103 print " scheduling an enable-random for later via command line"
104 dtest.command(["disorder",
105 "--config", disorder._configfile,
106 "--no-per-user-config",
107 "schedule-set-global",
108 time.strftime("%Y-%m-%d %H:%M:%S",
109 time.localtime(now() + 3)),
113 print " disorder schedule-list output:"
114 print string.join(dtest.command(["disorder",
115 "--config", disorder._configfile,
116 "--no-per-user-config",
117 "schedule-list"]), ""),
119 print " disabling random play"
121 print " waiting for nothing to be playing"
122 while c.playing() is not None:
125 print " scheduling a track for the future"
126 c.schedule_add(now() + 3, "normal", "play", track)
127 print " schedule via python:"
128 s = c.schedule_list()
130 e = c.schedule_get(event)
131 print "item %s: %s" % (event, e)
132 print " deleting item %s" % s[0]
134 print " checking it's really gone"
135 s = c.schedule_list()
136 assert s == [], "checking schedule is empty"
139 while p is None and waited < 5:
144 assert p is None, "checking deleted scheduled event did not run"
145 print " checking you can't schedule events for the past"
147 c.schedule_add(now() - 4, "normal", "play", track)
148 assert False, "checking schedule_add failed"
149 except disorder.operationError:
151 print " checking scheduled events survive restarts"
153 c.schedule_add(when, "normal", "play", track)
155 print " dumping database"
156 dump = "%s/dumpfile" % dtest.testroot
157 print dtest.command(["disorder-dump", "--config", disorder._configfile,
159 print "restoring database"
160 print dtest.command(["disorder-dump", "--config", disorder._configfile,
163 c = disorder.client()
165 print " waiting for track to play"
166 assert p["track"] == track, "checking right track played"
167 assert p["when"] >= when, "checking track played at right time"
168 assert c.schedule_list() == [], "checking schedule is empty"
169 print " checking junk events do not survive restarts"
170 c.schedule_add(now() + 2, "junk", "play", track)
171 s = c.schedule_list()
176 c = disorder.client()
177 print " checking schedule is empty"
178 s = c.schedule_list()
180 assert s == [], "checking schedule is empty"
182 if __name__ == '__main__':