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

时间:2014-05-12 23:07:23

标签: google-app-engine go google-cloud-datastore consistency

我有一个用Go编写的AppEngine应用程序,我试图改进我的测试。

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

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

2 个答案:

答案 0 :(得分: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)

请注意默认值为time,您需要consistent

答案 1 :(得分:2)

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

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