作者回复: 是的,确实写错了,抱歉,我去修改下。多谢指正。
作者回复: 这是个好问题,我和你的感觉是一样的。我在自己的项目中都是用 no_shuffle,严格按照顺序来执行。
这是因为测试案例可能会依赖外部的持久化存储,比如 redis、memcached、postgres 等,那么这个时候随机运行测试就可能出错。
所以,我也不太理解为什么默认要用shuffle的方式运行。
我能想到的一个原因,可能是在把 TEST_NGINX_FORCE_RESTART_ON_TEST 设置为 0 的时候,也就是在配置文件不变化的时候不重启 nginx,这个时候随机就有意义了。
另外,如果TEST_NGINX_FORCE_RESTART_ON_TEST设置为 0, 并且 TEST_NGINX_BENCHMARK 设置为 1,那么就会在不重启和大压力的情况下去做随机测试。
test::nginx 有很多种组合的模式,我觉得有些设计的过于灵活和复杂了,个人见解,欢迎交流。
补充一句哈,还有 TEST_NGINX_USE_HUP 这个环境变量,可以保证测试案例间的 shared dict 不被清空。
作者回复: 不用自己加锁哈,shared dict 的操作都是原子性的,这种类似加锁的处理已经帮你考虑到了。
作者回复: lua_shared_dict dogs 10m 放在 nginx.conf 中是对的。你在代码中是如何引用 dogs 这个共享字典的呢?
作者回复: 是的