Permalink
Please sign in to comment.
Browse files
Add a timemachine tool script
- Wrapper around faketime - Provides an interface to run tests at specific points in time
- Loading branch information...
@@ -0,0 +1,46 @@ | |||
#!/bin/bash | |||
|
|||
# parse options/arguments | |||
until [[ -z "${1}" ]] ; do | |||
case "${1}" in | |||
--minute) | |||
shift | |||
minutes="${minutes} ${1}" | |||
;; | |||
--hour) | |||
shift | |||
hours="${hours} ${1}" | |||
;; | |||
--day) | |||
shift | |||
days="${days} ${1}" | |||
;; | |||
--fail-at-end) | |||
fail_at_end=1 | |||
;; | |||
-*) | |||
echo "Unknown option '${1}'" | |||
exit 1 | |||
;; | |||
*) | |||
tests="${tests} ${1}" | |||
;; | |||
esac | |||
shift | |||
done | |||
|
|||
for day in ${days-$(date --rfc-3339=date)} ; do | |||
for minute in ${minutes-$(echo "0$(rand -M 60)" | sed "s|.\+\(..\)\$|\1|g")} ; do | |||
for hour in ${hours-$(seq -w 0 23)} ; do | |||
date="${day}T${hour}:${minute}" | |||
for single_test in ${tests} ; do | |||
echo "Running test ${single_test} at ${date}" | |||
faketime "@${date}" "${single_test}" | |||
if [[ $? -ne 0 ]] ; then | |||
echo "Test ${single_test} broke at ${date}!" | |||
[[ ${fail_at_end-0} -ne 0 ]] || break 2 | |||
fi | |||
done | |||
done | |||
done | |||
done |
0 comments on commit
68549dc