10

GoogleAppEngineフレームワークを使用してPython2.7でアプリケーションを構築しています。私のアプリケーションをテストするために、nosegaeプラグインを使用してnosetestsを実行するいくつかのテストがあります。次のコマンドで実行します。

nosetests --with-gae --gae-lib-root=/usr/local/google_appengine/ -w . -w */test/ -v

アプリケーションのモデルレイヤーでは、同じトランザクション内の複数のエンティティグループに影響を与えるいくつかのデータベース操作を実行する必要があります。これを行うには、dbパッケージのrun_in_transaction_options関数を使用します: https ://developers.google.com/appengine/docs/python/datastore/functions#run_in_transaction

残念ながら、テストスイートを実行すると、そのようなトランザクションを実行しようとするテストケースで次のエラーが発生します。

BadRequestError:複数のエンティティグループでのトランザクションは、高レプリケーションデータストアでのみ許可されます

ノーズテストでHRDを有効にするフラグが見つかりません。

ノーズテストからHRDを実行することは可能かどうか疑問に思っています。可能であれば、どのように設定できますか?

4

1 に答える 1

16

グループ間トランザクションを使用できるdbからndbに切り替えることを強くお勧めします。

HRDをシミュレートするために、高レプリケーションデータストアテストsetUpの作成から、この部分をテストの機能に追加できます。

# Create a consistency policy that will simulate the High Replication consistency model.
self.policy = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0)

# Initialize the datastore stub with this policy.
self.testbed.init_datastore_v3_stub(consistency_policy=self.policy)
于 2012-10-02T18:43:41.120 に答える