Fake Time
Go faketime
Unfortunatelly, libfaketime not usable with golang. But we can write alternative for that.
libfaketime
When changing date, libfaketime amazing to do that.
In debian image
dockerfile
RUN apt-get update && apt-get install --no-install-recommends -y \
libfaketimeAfter that just show that so file to LD_PRELOAD env and give the FAKETIME env to set the date.
sh
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1 FAKETIME="2000-01-01 00:00:00" dateDefault is seconds, FAKETIME="-120" is 2 minutes ago. But usable with "m", "h", "d" and "y" suffixes.
Use as start
sh
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1When we do that it is always show the same date. But if we add @ as prefix it will be start date.
sh
export FAKETIME="@2000-01-01 00:00:00"Now sub process run more than once date, than it will be increase the date.
sh
/bin/bash -c 'while [ $SECONDS -lt 5 ]; do date; sleep 1; done'
# Sat Jan 1 00:00:00 UTC 2000
# Sat Jan 1 00:00:01 UTC 2000
# Sat Jan 1 00:00:02 UTC 2000
# Sat Jan 1 00:00:03 UTC 2000
# Sat Jan 1 00:00:04 UTC 2000