Coverage Summary for Class: TestPartitionRemove (org.umlg.sqlg.test.topology)

Class Method, % Branch, % Line, %
TestPartitionRemove 0% (0/3) 0% (0/8) 0% (0/70)
TestPartitionRemove$1 0% (0/1) 0% (0/6)
TestPartitionRemove$2 0% (0/1) 0% (0/6)
Total 0% (0/5) 0% (0/8) 0% (0/82)


 package org.umlg.sqlg.test.topology;
 
 import org.apache.commons.collections4.set.ListOrderedSet;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.junit.Assert;
 import org.junit.Test;
 import org.umlg.sqlg.structure.PropertyDefinition;
 import org.umlg.sqlg.structure.PropertyType;
 import org.umlg.sqlg.structure.topology.*;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.LinkedHashMap;
 import java.util.List;
 
 public class TestPartitionRemove extends BaseTest {
 
  @Test
  public void testRemovePartitionViaVertexLabelRemove() {
  Schema aSchema = this.sqlgGraph.getTopology().ensureSchemaExist("A");
  VertexLabel aVertexLabel = aSchema.ensurePartitionedVertexLabelExist("A",
  new LinkedHashMap<>() {{
  put("name", PropertyDefinition.of(PropertyType.STRING));
  put("part1", PropertyDefinition.of(PropertyType.INTEGER));
  put("part2", PropertyDefinition.of(PropertyType.INTEGER));
  put("part3", PropertyDefinition.of(PropertyType.INTEGER));
  put("other", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("name", "part1", "part2", "part3")),
  PartitionType.LIST,
  "\"part1\""
  );
  VertexLabel bVertexLabel = this.sqlgGraph.getTopology().getPublicSchema().ensureVertexLabelExist("B");
  aVertexLabel.ensureEdgeLabelExist("ab", bVertexLabel);
 
  Partition part1_1 = aVertexLabel.ensureListPartitionWithSubPartitionExists("part1_1", "'1'", PartitionType.LIST, "\"part2\"");
  Partition part1_2 = aVertexLabel.ensureListPartitionWithSubPartitionExists("part1_2", "'2'", PartitionType.LIST, "\"part2\"");
 
  Partition part1_1_1 = part1_1.ensureListPartitionWithSubPartitionExists("part1_1_1", "1", PartitionType.LIST, "\"part3\"");
  part1_1_1.ensureListPartitionExists("part1_1_1_1", "1");
  part1_1_1.ensureListPartitionExists("part1_1_1_2", "2");
  Partition part1_1_2 = part1_1.ensureListPartitionWithSubPartitionExists("part1_1_2", "2", PartitionType.LIST, "\"part3\"");
  part1_1_2.ensureListPartitionExists("part1_1_2_1", "1");
  part1_1_2.ensureListPartitionExists("part1_1_2_2", "2");
 
 
  Partition part1_2_1 = part1_2.ensureListPartitionWithSubPartitionExists("part1_2_1", "1", PartitionType.LIST, "\"part3\"");
  Partition part1_2_2 = part1_2.ensureListPartitionWithSubPartitionExists("part1_2_2", "2", PartitionType.LIST, "\"part3\"");
  part1_2_1.ensureListPartitionExists("part1_2_1_1", "1");
  part1_2_2.ensureListPartitionExists("part1_2_2_1", "1");
  this.sqlgGraph.tx().commit();
 
  aVertexLabel.remove();
  this.sqlgGraph.tx().commit();
 
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_VERTEX_LABEL)
  .has(Topology.SQLG_SCHEMA_VERTEX_LABEL_NAME, P.eq("A"))
  .hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_EDGE_LABEL).hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_PROPERTY).hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_INDEX).hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_PARTITION)
  .has(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_PARTITION_ABSTRACT_LABEL_NAME, P.eq("A"))
  .hasNext());
 
  Connection connection = this.sqlgGraph.tx().getConnection();
  try (Statement statement = connection.createStatement()) {
  ResultSet rs = statement.executeQuery("select * from " + Topology.SQLG_SCHEMA + "." + sqlgGraph.getSqlDialect().maybeWrapInQoutes(Topology.VERTEX_PREFIX + Topology.SQLG_SCHEMA_PARTITION));
  Assert.assertFalse(rs.next());
  } catch (SQLException e) {
  Assert.fail(e.getMessage());
  }
  }
 
  @Test
  public void testRemovePartitionViaSchemaRemove() {
  Schema aSchema = this.sqlgGraph.getTopology().ensureSchemaExist("A");
  VertexLabel aVertexLabel = aSchema.ensurePartitionedVertexLabelExist("A",
  new LinkedHashMap<>() {{
  put("name", PropertyDefinition.of(PropertyType.STRING));
  put("part1", PropertyDefinition.of(PropertyType.INTEGER));
  put("part2", PropertyDefinition.of(PropertyType.INTEGER));
  put("part3", PropertyDefinition.of(PropertyType.INTEGER));
  put("other", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("name", "part1", "part2", "part3")),
  PartitionType.LIST,
  "\"part1\""
  );
  VertexLabel bVertexLabel = aSchema.ensureVertexLabelExist("B");
  aVertexLabel.ensureEdgeLabelExist("ab", bVertexLabel);
 
  Partition part1_1 = aVertexLabel.ensureListPartitionWithSubPartitionExists("part1_1", "'1'", PartitionType.LIST, "\"part2\"");
  Partition part1_2 = aVertexLabel.ensureListPartitionWithSubPartitionExists("part1_2", "'2'", PartitionType.LIST, "\"part2\"");
 
  Partition part1_1_1 = part1_1.ensureListPartitionWithSubPartitionExists("part1_1_1", "1", PartitionType.LIST, "\"part3\"");
  part1_1_1.ensureListPartitionExists("part1_1_1_1", "1");
  part1_1_1.ensureListPartitionExists("part1_1_1_2", "2");
  Partition part1_1_2 = part1_1.ensureListPartitionWithSubPartitionExists("part1_1_2", "2", PartitionType.LIST, "\"part3\"");
  part1_1_2.ensureListPartitionExists("part1_1_2_1", "1");
  part1_1_2.ensureListPartitionExists("part1_1_2_2", "2");
 
 
  Partition part1_2_1 = part1_2.ensureListPartitionWithSubPartitionExists("part1_2_1", "1", PartitionType.LIST, "\"part3\"");
  Partition part1_2_2 = part1_2.ensureListPartitionWithSubPartitionExists("part1_2_2", "2", PartitionType.LIST, "\"part3\"");
  part1_2_1.ensureListPartitionExists("part1_2_1_1", "1");
  part1_2_2.ensureListPartitionExists("part1_2_2_1", "1");
  this.sqlgGraph.tx().commit();
 
  aSchema.remove();
  this.sqlgGraph.tx().commit();
 
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_SCHEMA)
  .has(Topology.SQLG_SCHEMA_SCHEMA_NAME, P.neq(sqlgGraph.getSqlDialect().getPublicSchema()))
  .hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_VERTEX_LABEL).hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_EDGE_LABEL).hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_PROPERTY).hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_INDEX).hasNext());
  Assert.assertFalse(this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_PARTITION).hasNext());
 
  Connection connection = this.sqlgGraph.tx().getConnection();
  try (Statement statement = connection.createStatement()) {
  ResultSet rs = statement.executeQuery("select * from " + Topology.SQLG_SCHEMA + "." + sqlgGraph.getSqlDialect().maybeWrapInQoutes(Topology.VERTEX_PREFIX + Topology.SQLG_SCHEMA_PARTITION));
  Assert.assertFalse(rs.next());
  } catch (SQLException e) {
  Assert.fail(e.getMessage());
  }
  }
 }