Google\Cloud\Tests\Datastore\DatastoreSessionHandlerTest::testGcWithException PHP 메소드

testGcWithException() 공개 메소드

public testGcWithException ( )
    public function testGcWithException()
    {
        $key1 = new Key('projectid');
        $key1->pathElement(self::KIND, 'sessionid1');
        $key2 = new Key('projectid');
        $key2->pathElement(self::KIND, 'sessionid2');
        $entity1 = new Entity($key1);
        $entity2 = new Entity($key2);
        $query = $this->prophesize(Query::class);
        $query->kind(self::KIND)->shouldBeCalledTimes(1)->willReturn($query->reveal());
        $that = $this;
        $query->filter(Argument::type('string'), Argument::type('string'), Argument::type('int'))->shouldBeCalledTimes(1)->will(function ($args) use($that, $query) {
            $that->assertEquals('t', $args[0]);
            $that->assertEquals('<', $args[1]);
            $that->assertInternalType('int', $args[2]);
            $diff = time() - $args[2];
            // 2 seconds grace period should be enough
            $that->assertTrue($diff <= 102);
            $that->assertTrue($diff >= 100);
            return $query->reveal();
        });
        $query->order('t')->shouldBeCalledTimes(1)->willReturn($query->reveal());
        $query->keysOnly()->shouldBeCalledTimes(1)->willReturn($query->reveal());
        $query->limit(1000)->shouldBeCalledTimes(1)->willReturn($query->reveal());
        $this->datastore->transaction()->shouldBeCalledTimes(1)->willReturn($this->transaction->reveal());
        $this->datastore->query()->shouldBeCalledTimes(1)->willReturn($query->reveal());
        $this->datastore->runQuery(Argument::type(Query::class), Argument::type('array'))->shouldBeCalledTimes(1)->will(function ($args) use($that, $query, $entity1, $entity2) {
            $that->assertEquals($query->reveal(), $args[0]);
            $that->assertEquals(['namespaceId' => self::NAMESPACE_ID], $args[1]);
            return [$entity1, $entity2];
        });
        $this->datastore->deleteBatch([$key1, $key2])->shouldBeCalledTimes(1)->willThrow(new Exception());
        $datastoreSessionHandler = new DatastoreSessionHandler($this->datastore->reveal(), 1000);
        $datastoreSessionHandler->open(self::NAMESPACE_ID, self::KIND);
        $ret = $datastoreSessionHandler->gc(100);
        $this->assertEquals(false, $ret);
    }