use of com.datastax.oss.driver.internal.core.metadata.schema.refresh.SchemaRefresh in project java-driver by datastax.
the class GraphSchemaRefreshTest method should_detect_adding_and_renaming_and_removing_vertex_label.
@Test
public void should_detect_adding_and_renaming_and_removing_vertex_label() {
DefaultDseTableMetadata newTable = newTable(KS_WITH_ENGINE.getName(), CqlIdentifier.fromInternal("tbl"), new DefaultDseVertexMetadata(CqlIdentifier.fromInternal("someLabel")), null);
DefaultDseKeyspaceMetadata ks = newKeyspace(KS_WITH_ENGINE.getName(), "Core", ImmutableMap.of(CqlIdentifier.fromInternal("tbl"), newTable));
SchemaRefresh refresh = new SchemaRefresh(ImmutableMap.of(KS_WITH_ENGINE.getName(), ks, OLD_KS1.getName(), OLD_KS1));
MetadataRefresh.Result result = refresh.compute(oldMetadata, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(2);
assertThat(result.events).containsExactly(TableChangeEvent.updated(OLD_TABLE, newTable));
assertThat(result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName())).isNotNull();
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getVertex()).isNotNull();
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getVertex().get().getLabelName().asInternal()).isEqualTo("someLabel");
// now rename the vertex label
newTable = newTable(KS_WITH_ENGINE.getName(), CqlIdentifier.fromInternal("tbl"), new DefaultDseVertexMetadata(CqlIdentifier.fromInternal("someNewLabel")), null);
ks = newKeyspace(KS_WITH_ENGINE.getName(), "Core", ImmutableMap.of(CqlIdentifier.fromInternal("tbl"), newTable));
refresh = new SchemaRefresh(ImmutableMap.of(KS_WITH_ENGINE.getName(), ks, OLD_KS1.getName(), OLD_KS1));
result = refresh.compute(oldMetadata, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(2);
assertThat(result.events).containsExactly(TableChangeEvent.updated(OLD_TABLE, newTable));
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getVertex().get().getLabelName().asInternal()).isEqualTo("someNewLabel");
// now remove the vertex label from the table
DefaultMetadata metadataWithVertexLabel = result.newMetadata;
DefaultDseTableMetadata tableWithRemovedLabel = newTable(KS_WITH_ENGINE.getName(), CqlIdentifier.fromInternal("tbl"), null, null);
ks = newKeyspace(KS_WITH_ENGINE.getName(), "Core", ImmutableMap.of(CqlIdentifier.fromInternal("tbl"), tableWithRemovedLabel));
refresh = new SchemaRefresh(ImmutableMap.of(KS_WITH_ENGINE.getName(), ks, OLD_KS1.getName(), OLD_KS1));
result = refresh.compute(metadataWithVertexLabel, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(2);
assertThat(result.events).containsExactly(TableChangeEvent.updated(newTable, tableWithRemovedLabel));
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getVertex().isPresent()).isFalse();
}
use of com.datastax.oss.driver.internal.core.metadata.schema.refresh.SchemaRefresh in project java-driver by datastax.
the class GraphSchemaRefreshTest method should_detect_created_keyspace_with_graph_engine.
@Test
public void should_detect_created_keyspace_with_graph_engine() {
DefaultDseKeyspaceMetadata ks2 = newKeyspace("ks2", "Core");
SchemaRefresh refresh = new SchemaRefresh(ImmutableMap.of(OLD_KS1.getName(), OLD_KS1, KS_WITH_ENGINE.getName(), KS_WITH_ENGINE, ks2.getName(), ks2));
MetadataRefresh.Result result = refresh.compute(oldMetadata, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(3);
assertThat(result.events).containsExactly(KeyspaceChangeEvent.created(ks2));
}
use of com.datastax.oss.driver.internal.core.metadata.schema.refresh.SchemaRefresh in project java-driver by datastax.
the class GraphSchemaRefreshTest method should_detect_top_level_graph_engine_update_in_keyspace.
@Test
public void should_detect_top_level_graph_engine_update_in_keyspace() {
// Change only one top-level option (graph_engine)
DefaultDseKeyspaceMetadata newKs1 = newKeyspace("ks1", "Core");
SchemaRefresh refresh = new SchemaRefresh(ImmutableMap.of(KS_WITH_ENGINE.getName(), KS_WITH_ENGINE, OLD_KS1.getName(), newKs1));
MetadataRefresh.Result result = refresh.compute(oldMetadata, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(2);
assertThat(result.events).containsExactly(KeyspaceChangeEvent.updated(OLD_KS1, newKs1));
}
use of com.datastax.oss.driver.internal.core.metadata.schema.refresh.SchemaRefresh in project java-driver by datastax.
the class GraphSchemaRefreshTest method should_detect_adding_and_renaming_and_removing_edge_label.
@Test
public void should_detect_adding_and_renaming_and_removing_edge_label() {
DefaultDseTableMetadata newTable = newTable(KS_WITH_ENGINE.getName(), CqlIdentifier.fromInternal("tbl"), null, newEdgeMetadata(CqlIdentifier.fromInternal("created"), CqlIdentifier.fromInternal("person"), CqlIdentifier.fromInternal("software")));
DefaultDseKeyspaceMetadata ks = newKeyspace(KS_WITH_ENGINE.getName(), "Core", ImmutableMap.of(CqlIdentifier.fromInternal("tbl"), newTable));
SchemaRefresh refresh = new SchemaRefresh(ImmutableMap.of(KS_WITH_ENGINE.getName(), ks, OLD_KS1.getName(), OLD_KS1));
MetadataRefresh.Result result = refresh.compute(oldMetadata, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(2);
assertThat(result.events).containsExactly(TableChangeEvent.updated(OLD_TABLE, newTable));
assertThat(result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName())).isNotNull();
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getVertex()).isNotNull();
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getEdge().get().getLabelName().asInternal()).isEqualTo("created");
// now rename the edge label
newTable = newTable(KS_WITH_ENGINE.getName(), CqlIdentifier.fromInternal("tbl"), null, newEdgeMetadata(CqlIdentifier.fromInternal("CHANGED"), CqlIdentifier.fromInternal("person"), CqlIdentifier.fromInternal("software")));
ks = newKeyspace(KS_WITH_ENGINE.getName(), "Core", ImmutableMap.of(CqlIdentifier.fromInternal("tbl"), newTable));
refresh = new SchemaRefresh(ImmutableMap.of(KS_WITH_ENGINE.getName(), ks, OLD_KS1.getName(), OLD_KS1));
result = refresh.compute(oldMetadata, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(2);
assertThat(result.events).containsExactly(TableChangeEvent.updated(OLD_TABLE, newTable));
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getEdge().get().getLabelName().asInternal()).isEqualTo("CHANGED");
// now remove the edge label from the table
DefaultMetadata metadataWithEdgeLabel = result.newMetadata;
DefaultDseTableMetadata tableWithRemovedLabel = newTable(KS_WITH_ENGINE.getName(), CqlIdentifier.fromInternal("tbl"), null, null);
ks = newKeyspace(KS_WITH_ENGINE.getName(), "Core", ImmutableMap.of(CqlIdentifier.fromInternal("tbl"), tableWithRemovedLabel));
refresh = new SchemaRefresh(ImmutableMap.of(KS_WITH_ENGINE.getName(), ks, OLD_KS1.getName(), OLD_KS1));
result = refresh.compute(metadataWithEdgeLabel, false, context);
assertThat(result.newMetadata.getKeyspaces()).hasSize(2);
assertThat(result.events).containsExactly(TableChangeEvent.updated(newTable, tableWithRemovedLabel));
assertThat(((DseGraphTableMetadata) result.newMetadata.getKeyspaces().get(KS_WITH_ENGINE.getName()).getTable("tbl").get()).getEdge().isPresent()).isFalse();
}
use of com.datastax.oss.driver.internal.core.metadata.schema.refresh.SchemaRefresh in project java-driver by datastax.
the class SchemaParserTest method should_parse_modern_keyspace_row.
@Test
public void should_parse_modern_keyspace_row() {
SchemaRefresh refresh = (SchemaRefresh) parse(rows -> rows.withKeyspaces(ImmutableList.of(mockModernKeyspaceRow("ks"))));
assertThat(refresh.newKeyspaces).hasSize(1);
KeyspaceMetadata keyspace = refresh.newKeyspaces.values().iterator().next();
checkKeyspace(keyspace);
}
Aggregations