snprintf(when_str, sizeof when_str, "%lld", (long long)when);
va_start(ap, action);
if(!strcmp(action, "play"))
- rc = disorder_simple(c, 0, when_str, priority,
- action, va_arg(ap, char *));
- else if(!strcmp(action, "set-global"))
- rc = disorder_simple(c, 0, when_str, priority,
- action, va_arg(ap, char *), va_arg(ap, char *));
- else
+ rc = disorder_simple(c, 0, "schedule-add", when_str, priority,
+ action, va_arg(ap, char *),
+ (char *)0);
+ else if(!strcmp(action, "set-global")) {
+ const char *key = va_arg(ap, char *);
+ const char *value = va_arg(ap, char *);
+ rc = disorder_simple(c, 0,"schedule-add", when_str, priority,
+ action, key, value,
+ (char *)0);
+ } else
fatal(0, "unknown action '%s'", action);
va_end(ap);
return rc;
assert waited < 10, "checking track played within a reasonable period"
assert waited > 2, "checking track didn't play immediately"
assert p["track"] == track, "checking right track played"
+ assert c.schedule_list() == [], "checking schedule is empty"
print " waiting for nothing to be playing"
while c.playing() is not None:
time.sleep(1)
p = c.playing()
assert waited < 10, "checking a track played within a reasonable period"
assert waited > 2, "checking a track didn't play immediately"
+ print " disabling random play"
+ c.random_disable()
+ print " waiting for nothing to be playing"
+ while c.playing() is not None:
+ time.sleep(1)
+ print " scheduling track to play later via command line"
+ now = int(time.time())
+ dtest.command(["disorder",
+ "--config", disorder._configfile,
+ "--no-per-user-config",
+ "schedule-play",
+ str(now + 4),
+ "normal",
+ track])
+ print " disorder schedule-list output:"
+ print string.join(dtest.command(["disorder",
+ "--config", disorder._configfile,
+ "--no-per-user-config",
+ "schedule-list"]), ""),
+ print " waiting for it to play"
+ waited = 0
+ p = c.playing()
+ while p is None and waited < 10:
+ time.sleep(1)
+ waited += 1
+ p = c.playing()
+ assert waited < 10, "checking track played within a reasonable period"
+ assert waited > 2, "checking track didn't play immediately"
+ assert p["track"] == track, "checking right track played"
+ assert c.schedule_list() == [], "checking schedule is empty"
+ print " waiting for nothing to be playing"
+ while c.playing() is not None:
+ time.sleep(1)
+ print " scheduling an enable-random for later via command line"
+ now = int(time.time())
+ dtest.command(["disorder",
+ "--config", disorder._configfile,
+ "--no-per-user-config",
+ "schedule-set-global",
+ str(now + 4),
+ "normal",
+ "random-play",
+ "yes"])
+ print " disorder schedule-list output:"
+ print string.join(dtest.command(["disorder",
+ "--config", disorder._configfile,
+ "--no-per-user-config",
+ "schedule-list"]), ""),
+ print " waiting for it to take effect"
+ waited = 0
+ p = c.playing()
+ while p is None and waited < 10:
+ time.sleep(1)
+ waited += 1
+ p = c.playing()
+ assert waited < 10, "checking a track played within a reasonable period"
+ assert waited > 2, "checking a track didn't play immediately"
+ print " disabling random play"
+ c.random_disable()
+ print " waiting for nothing to be playing"
+ while c.playing() is not None:
+ time.sleep(1)
+ print " scheduling a track for the future"
+ now = int(time.time())
+ c.schedule_add(now + 4, "normal", "play", track)
+ print " schedule via python:"
+ s = c.schedule_list()
+ for event in s:
+ e = c.schedule_get(event)
+ print "item %s: %s" % (event, e)
+ print " deleting item %s" % s[0]
+ c.schedule_del(s[0])
+ print " checking it's really gone"
+ s = c.schedule_list()
+ assert s == [], "checking schedule is empty"
+ waited = 0
+ p = c.playing()
+ while p is None and waited < 10:
+ time.sleep(1)
+ waited += 1
+ p = c.playing()
+ assert p is None, "checking deleted scheduled event did not run"
+ print " checking you can't schedule events for the past"
+ try:
+ now = int(time.time())
+ c.schedule_add(now - 4, "normal", "play", track)
+ assert False, "checking schedule_add failed"
+ except disorder.operationError:
+ pass # good
+
if __name__ == '__main__':
dtest.run()