summaryrefslogtreecommitdiff
path: root/vendor/ruflin/elastica/test/lib/Elastica/Test/SnapshotTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ruflin/elastica/test/lib/Elastica/Test/SnapshotTest.php')
-rw-r--r--vendor/ruflin/elastica/test/lib/Elastica/Test/SnapshotTest.php112
1 files changed, 112 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/test/lib/Elastica/Test/SnapshotTest.php b/vendor/ruflin/elastica/test/lib/Elastica/Test/SnapshotTest.php
new file mode 100644
index 00000000..3ac5bfe2
--- /dev/null
+++ b/vendor/ruflin/elastica/test/lib/Elastica/Test/SnapshotTest.php
@@ -0,0 +1,112 @@
+<?php
+
+namespace Elastica\Test;
+
+
+use Elastica\Document;
+use Elastica\Index;
+use Elastica\Snapshot;
+
+class SnapshotTest extends Base
+{
+ /**
+ * @var Snapshot
+ */
+ protected $_snapshot;
+
+ /**
+ * @var Index
+ */
+ protected $_index;
+
+ /**
+ * @var Document[]
+ */
+ protected $_docs;
+
+ protected function setUp()
+ {
+ parent::setUp();
+ $this->_snapshot = new Snapshot($this->_getClient());
+
+ $this->_index = $this->_createIndex("test_snapshot");
+ $this->_docs = array(
+ new Document("1", array("city" => "San Diego")),
+ new Document("2", array("city" => "San Luis Obispo")),
+ new Document("3", array("city" => "San Francisco")),
+ );
+ $this->_index->getType("test")->addDocuments($this->_docs);
+ $this->_index->refresh();
+ }
+
+ protected function tearDown()
+ {
+ parent::tearDown();
+ $this->_index->delete();
+ }
+
+ public function testRegisterRepository()
+ {
+ $name = "test_register";
+ $location = "/tmp/test_register";
+
+ $response = $this->_snapshot->registerRepository($name, "fs", array("location" => $location));
+ $this->assertTrue($response->isOk());
+
+ $response = $this->_snapshot->getRepository($name);
+ $this->assertEquals($location, $response["settings"]["location"]);
+
+ // attempt to retrieve a repository which does not exist
+ $this->setExpectedException('Elastica\Exception\NotFoundException');
+ $this->_snapshot->getRepository("foobar");
+ }
+
+ 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);
+ }
+}
+ \ No newline at end of file