public function testBulkUpdateOneExistingAndTwoMissingDocs() { $this->createIndex(); $doc1 = array('name' => 'test1' . rand(100, 10000), 'value' => 'myTestVal' . rand(100, 10000)); $doc2 = array('name' => 'test2' . rand(100, 10000), 'value' => 'myTestVal' . rand(100, 10000)); $doc3 = array('name' => 'test3' . rand(100, 10000), 'value' => 'myTestVal' . rand(100, 10000)); $allDocs = [$doc1, $doc2, $doc3]; $bulkCreateRequest = new BulkCreateRequest(ES_INDEX, self::TYPE, $this->getSerializer()); $bulkCreateRequest->addDocument($doc1, 'doc1'); /** @var BulkResponse $response */ $response = $this->getClient()->send($bulkCreateRequest); $this->assertGreaterThanOrEqual(0, $response->took()); $bulkUpdateRequest = new BulkUpdateRequest(ES_INDEX, self::TYPE, $this->getSerializer()); $bulkUpdateRequest->addDocument($doc1, 'doc1'); $bulkUpdateRequest->addDocument($doc2, 'doc2'); $bulkUpdateRequest->addDocument($doc3, 'doc3'); /** @var BulkResponse $response */ $response = $this->getClient()->send($bulkUpdateRequest); $this->assertGreaterThanOrEqual(0, $response->took()); $items = $response->getItems(); $this->assertTrue(is_array($items)); $this->assertCount(3, $items); foreach ($items as $key => $item) { if (0 === $key) { $this->assertTrue($item[AbstractBulkUpdateRequest::BULK_ACTION]['ok']); $doc = $this->getDocument(ES_INDEX, self::TYPE, $item[AbstractBulkUpdateRequest::BULK_ACTION]['_id']); $this->assertEquals($allDocs[$key], $doc); } else { $this->assertContains('[' . $item[AbstractBulkUpdateRequest::BULK_ACTION]['_id'] . ']: document missing', $item[AbstractBulkUpdateRequest::BULK_ACTION]['error']); } $this->assertArrayHasKey(AbstractBulkUpdateRequest::BULK_ACTION, $item); $this->assertSame(ES_INDEX, $item[AbstractBulkUpdateRequest::BULK_ACTION]['_index']); $this->assertSame(self::TYPE, $item[AbstractBulkUpdateRequest::BULK_ACTION]['_type']); } }
public function testAddAction() { $id = 'my-id'; $doc = array('my' => 'doc'); $serializedDoc = 'my-doc'; $action = array(AbstractBulkCreateRequest::BULK_ACTION => array('_id' => $id, '_index' => self::INDEX, '_type' => self::TYPE)); $this->serializer->expects($this->once())->method('serialize')->with($doc, array())->willReturn($serializedDoc); $this->request->addDocument($doc, $id); $expected = json_encode($action) . AbstractBulkCreateRequest::LINE_BREAK . $serializedDoc . AbstractBulkCreateRequest::LINE_BREAK; $result = $this->request->getBody(); $this->assertSame($expected, $result); }
public function testBulkDeleteFirstExisting() { $this->createIndex(); $doc1 = array('name' => 'test1' . rand(100, 10000), 'value' => 'myTestVal' . rand(100, 10000)); $bulkCreateRequest = new BulkCreateRequest(ES_INDEX, self::TYPE, $this->getSerializer()); $bulkCreateRequest->addDocument($doc1, 'doc1'); $bulkDeleteRequest = new BulkDeleteRequest(ES_INDEX, self::TYPE, $this->getSerializer()); $bulkDeleteRequest->add(array('doc1', 'doc2', 'doc3')); /** @var BulkResponse $response */ $response = $this->getClient()->send($bulkCreateRequest); $this->assertGreaterThanOrEqual(0, $response->took()); $response = $this->getClient()->send($bulkDeleteRequest); $this->assertGreaterThanOrEqual(0, $response->took()); $items = $response->getItems(); $this->assertTrue(is_array($items)); $this->assertCount(3, $items); foreach ($items as $key => $item) { $this->assertArrayHasKey(AbstractBulkDeleteRequest::BULK_ACTION, $item); $this->assertSame(ES_INDEX, $item[AbstractBulkDeleteRequest::BULK_ACTION]['_index']); $this->assertSame(self::TYPE, $item[AbstractBulkDeleteRequest::BULK_ACTION]['_type']); if (0 === $key) { $this->assertSame(2, $item[AbstractBulkDeleteRequest::BULK_ACTION]['_version']); $this->assertTrue($item[AbstractBulkDeleteRequest::BULK_ACTION]['ok']); $docRequest = new GetDocumentRequest(ES_INDEX, self::TYPE, $this->getSerializer()); $docRequest->setId($item[AbstractBulkDeleteRequest::BULK_ACTION]['_id']); try { $this->getClient()->send($docRequest); $this->fail('document isn\'t deleted'); } catch (ClientException $exception) { $this->assertSame(404, $exception->getCode()); } } else { $this->assertSame(1, $item[AbstractBulkDeleteRequest::BULK_ACTION]['_version']); $this->assertFalse($item[AbstractBulkDeleteRequest::BULK_ACTION]['found']); } } }