List of usage examples for org.apache.cassandra.config DatabaseDescriptor isAutoSnapshot
public static boolean isAutoSnapshot()
From source file:org.elassandra.SnapshotTests.java
License:Apache License
@Test //mvn test -Pdev -pl com.strapdata.elasticsearch:elasticsearch -Dtests.seed=622A2B0618CE4676 -Dtests.class=org.elassandra.SnapshotTests -Dtests.method="onDropSnapshotTest" -Des.logger.level=ERROR -Dtests.assertion.disabled=false -Dtests.security.manager=false -Dtests.heap.size=1024m -Dtests.locale=ro-RO -Dtests.timezone=America/Toronto public void onDropSnapshotTest() throws Exception { process(ConsistencyLevel.ONE,/*w ww . j a v a 2 s. co m*/ String.format(Locale.ROOT, "CREATE KEYSPACE ks WITH replication = {'class': 'NetworkTopologyStrategy', '%s': '1'}", DatabaseDescriptor.getLocalDataCenter())); process(ConsistencyLevel.ONE, "CREATE TABLE ks.t1 ( name text, age int, primary key (name))"); XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject("t1") .field("discover", ".*").endObject().endObject(); createIndex("ks", Settings.builder().put("index.snapshot_with_sstable", true).build(), "t1", mapping); ensureGreen("ks"); for (long i = 0; i < 1000; i++) process(ConsistencyLevel.ONE, String.format(Locale.ROOT, "INSERT INTO ks.t1 (name, age) VALUES ('name%d', %d)", i, i)); assertThat( client().prepareSearch().setIndices("ks").setTypes("t1") .setQuery(QueryBuilders.queryStringQuery("*:*")).get().getHits().getTotalHits(), equalTo(1000L)); UUID cfId = Schema.instance.getCFMetaData("ks", "t1").cfId; String id = cfId.toString().replaceAll("\\-", ""); if (!DatabaseDescriptor.isAutoSnapshot()) StorageService.instance.takeTableSnapshot("ks", "t1", Long.toString(new Date().getTime())); // drop index + keyspace (C* snapshot before drop => flush before snapshot => ES flush before delete) assertAcked(client().admin().indices().prepareDelete("ks").get()); // recreate schema and mapping process(ConsistencyLevel.ONE, String.format(Locale.ROOT, "CREATE KEYSPACE ks WITH replication = {'class': 'NetworkTopologyStrategy', '%s': '1'}", DatabaseDescriptor.getLocalDataCenter())); process(ConsistencyLevel.ONE, "CREATE TABLE ks.t1 ( name text, age int, primary key (name))"); createIndex("ks", Settings.builder().put("index.snapshot_with_sstable", true).build(), "t1", mapping); ensureGreen("ks"); assertThat( client().prepareSearch().setIndices("ks").setTypes("t1") .setQuery(QueryBuilders.queryStringQuery("*:*")).get().getHits().getTotalHits(), equalTo(0L)); // close index and restore SSTable+Lucene files assertAcked(client().admin().indices().prepareClose("ks").get()); String dataLocation = DatabaseDescriptor.getAllDataFileLocations()[0]; DirectoryStream<Path> stream = Files .newDirectoryStream(PathUtils.get(dataLocation + "/ks/t1-" + id + "/snapshots/")); Path snapshot = stream.iterator().next(); String snap = snapshot.getFileName().toString(); System.out.println("snapshot name=" + snap); stream.close(); restoreSSTable(dataLocation, "ks", "t1", cfId, snap); restoreLucenceFiles(dataLocation, "ks", snap); // refresh SSTables and repopen index StorageService.instance.loadNewSSTables("ks", "t1"); assertAcked(client().admin().indices().prepareOpen("ks").get()); ensureGreen("ks"); assertThat( client().prepareSearch().setIndices("ks").setTypes("t1") .setQuery(QueryBuilders.queryStringQuery("*:*")).get().getHits().getTotalHits(), equalTo(1000L)); }