在测试期间控制最终的AppEngine数据库一致性

Joh*_*nGB 6 google-app-engine consistency go google-cloud-datastore

我有一个用Go编写的AppEngine应用程序,我正在努力改进我的测试.

我需要运行的部分测试是对同一对象的一系列创建,更新,删除查询.但是,鉴于数据存储最终是一致的(这些不是子对象),我目前仍然使用a time.Sleep(time.Second * 5)来为SDK中的模拟数据存储提供足够的时间来传播一致性.

这导致测试需要很长时间才能运行.如何在不重写代码以使用祖先查询的情况下强制执行更强大的一致性测试?

Tim*_*man 5

看看dev_server参数.您将看到有一个用于设置一致性策略的选项.

 --datastore_consistency_policy {consistent,random,time}
                        the policy to apply when deciding whether a datastore
                        write should appear in global queries (default: time)
Run Code Online (Sandbox Code Playgroud)

请注意默认值是time,您想要的consistent

  • Go使用python开发服务器,因此您可以使用Tim指定的标志.https://developers.google.com/appengine/docs/go/tools/devserver (2认同)

Joh*_*nGB 2

已经有一段时间了,但我发现效果很好的方法是调用上下文,如下所示:

c, err := aetest.NewContext(&aetest.Options{StronglyConsistentDatastore: true})