/** * @group functional */ public function testSnapshotAndRestore() { $repositoryName = 'testrepo'; $location = $this->_snapshotPath . 'backup2'; // register the repository $response = $this->_snapshot->registerRepository($repositoryName, 'fs', array('location' => $location)); $this->assertTrue($response->isOk()); // create a snapshot of our test index $snapshotName = 'test_snapshot_1'; $response = $this->_snapshot->createSnapshot($repositoryName, $snapshotName, array('indices' => $this->_index->getName()), true); // ensure that the snapshot was created properly $this->assertTrue($response->isOk()); $this->assertArrayHasKey('snapshot', $response->getData()); $data = $response->getData(); $this->assertContains($this->_index->getName(), $data['snapshot']['indices']); $this->assertEquals(1, sizeof($data['snapshot']['indices'])); // only the specified index should be present $this->assertEquals($snapshotName, $data['snapshot']['snapshot']); // retrieve data regarding the snapshot $response = $this->_snapshot->getSnapshot($repositoryName, $snapshotName); $this->assertContains($this->_index->getName(), $response['indices']); // delete our test index $this->_index->delete(); // restore the index from our snapshot $response = $this->_snapshot->restoreSnapshot($repositoryName, $snapshotName, array(), true); $this->assertTrue($response->isOk()); $this->_index->refresh(); $this->_index->optimize(); // ensure that the index has been restored $count = $this->_index->getType('test')->count(); $this->assertEquals(sizeof($this->_docs), $count); // delete the snapshot $response = $this->_snapshot->deleteSnapshot($repositoryName, $snapshotName); $this->assertTrue($response->isOk()); // ensure that the snapshot has been deleted $this->setExpectedException('Elastica\\Exception\\NotFoundException'); $this->_snapshot->getSnapshot($repositoryName, $snapshotName); }
public function testSnapshotAndRestore() { $repositoryName = "test_repository"; $location = "/tmp/{$repositoryName}"; // register the repository $response = $this->_snapshot->registerRepository($repositoryName, "fs", array("location" => $location)); $this->assertTrue($response->isOk()); // create a snapshot of our test index $snapshotName = "test_snapshot_1"; $response = $this->_snapshot->createSnapshot($repositoryName, $snapshotName, array("indices" => $this->_index->getName()), true); // ensure that the snapshot was created properly $this->assertTrue($response->isOk()); $this->assertArrayHasKey("snapshot", $response->getData()); $data = $response->getData(); $this->assertContains($this->_index->getName(), $data["snapshot"]["indices"]); $this->assertEquals(1, sizeof($data["snapshot"]["indices"])); // only the specified index should be present $this->assertEquals($snapshotName, $data["snapshot"]["snapshot"]); // retrieve data regarding the snapshot $response = $this->_snapshot->getSnapshot($repositoryName, $snapshotName); $this->assertContains($this->_index->getName(), $response["indices"]); // delete our test index $this->_index->delete(); // restore the index from our snapshot $response = $this->_snapshot->restoreSnapshot($repositoryName, $snapshotName, array(), true); $this->assertTrue($response->isOk()); $this->_index->refresh(); $this->_index->optimize(); // ensure that the index has been restored $count = $this->_index->getType("test")->count(); $this->assertEquals(sizeof($this->_docs), $count); // delete the snapshot $response = $this->_snapshot->deleteSnapshot($repositoryName, $snapshotName); $this->assertTrue($response->isOk()); // ensure that the snapshot has been deleted $this->setExpectedException('Elastica\\Exception\\NotFoundException'); $this->_snapshot->getSnapshot($repositoryName, $snapshotName); }
public function optimize() { // Optimize the index so it'll be more compact for replication. Not required // but should be helpful. $this->outputIndented("\tOptimizing..."); try { // Reset the timeout just in case we lost it somewhere along the line $this->setConnectionTimeout(); $this->index->optimize(array('max_num_segments' => 5)); $this->output("Done\n"); } catch (HttpException $e) { if ($e->getMessage() === 'Operation timed out') { $this->output("Timed out...Continuing any way\n"); // To continue without blowing up we need to reset the connection. $this->destroyClients(); } else { throw $e; } } }
public function testMatchDoc() { $client = new Client(array('persistent' => false)); $index = $client->getIndex('elastica_test'); $index->create(array('index' => array('number_of_shards' => 1, 'number_of_replicas' => 0)), true); $percolator = new Percolator($index); $percolatorName = 'percotest'; $query = new Term(array('name' => 'ruflin')); $response = $percolator->registerQuery($percolatorName, $query); $this->assertTrue($response->isOk()); $this->assertFalse($response->hasError()); $doc1 = new Document(); $doc1->set('name', 'ruflin'); $doc2 = new Document(); $doc2->set('name', 'nicolas'); $index = new Index($index->getClient(), '_percolator'); $index->optimize(); $index->refresh(); $matches1 = $percolator->matchDoc($doc1); $this->assertTrue(in_array($percolatorName, $matches1)); $this->assertEquals(1, count($matches1)); $matches2 = $percolator->matchDoc($doc2); $this->assertEmpty($matches2); }