在Docker搭建的测试环境中如何修改时间来测试不同的测试用例


各位好,我在一家在线游戏的开发公司供职。目前我正在尝试把公司内部的开发测试环境切换到自建的Docker云上。其他一切都还顺利,现在碰到一个问题。

游戏开发中,会有一些时间相关的脚本,例如开服n天后,发放某个礼品之类的。我们之前的操作模式是把虚拟机的时间调整到这个时间,然后看礼品发放是否正确执行。

但是现在Docker的话,容器内无法自行修改时间,在Docker主机上修改的话,又会影响这台主机上所有的容器的时间。

考虑的资源复用,我们可能也无法在一台主机上只跑这个测试相关的进程。

所以。。。。想问问大家,是否碰到过类似问题,大家都是怎么解决的?
已邀请:

wangzi19870227 - sina攻城狮,docker爱好者

赞同来自: 徐新坤


不用非得该系统时间吧,可以考虑EVN传时间差,曲线救国。

比如:
你想让container1中获取的系统时间是now-1m,可以docker run -e TIME_DIFF=-60 ...,container中calc脚本获取container系统当前时间为:${now}-${TIME_DIFF}

当然肯定还有其它办法。

徐新坤 - 京东商城-TIG-JDOS团队

赞同来自:


如果要改获取时间的脚本,可能你的改动量比较大。我的建议是:
在准备测试的时候,执行date强制把容器时间修改了(当然主机时间也被修改)
然后做测试,验证,验证完毕之后使用ntpdate或者date把时间更正回来。

这个过程可以用脚本完成,也可以用容器来做(就是把date命令作为容器的CMD)。

这个的弊端就是会影响到主机内的其他容器。不过既然是测试环境,应该不会有大问题(因为测试验证完又改回来了)。你可以自己评估下。

tony_lit

赞同来自:


哥们,找到好的方式解决了吗?

要回复问题请先登录注册