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__':