示例#1
0
 public function testSerialWithRetries()
 {
     $directory = new FooDirectory($this->getMongoDB());
     $model = $directory->createAndSave(['bar' => 'baz']);
     PHPUnit::assertEquals('baz', $model['bar']);
     $attempts = 0;
     $directory->updateWithSerialConstraint($model, function ($model, $update_vars, $attempt_offset) use(&$attempts) {
         if ($attempt_offset < 5) {
             $this->makeExternalModificationToModel($model, $attempt_offset);
         }
         ++$attempts;
         return array('goodMod' => 1);
     }, 10, 1000);
     PHPUnit::assertEquals(6, $attempts);
     $model = $directory->reload($model);
     PHPUnit::assertEquals(5, $model['badMod']);
     PHPUnit::assertEquals(1, $model['goodMod']);
 }