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

Class Method, % Branch, % Line, %
TestHashPartitioning 0% (0/12) 0% (0/100) 0% (0/253)
TestHashPartitioning$1 0% (0/1) 0% (0/4)
TestHashPartitioning$10 0% (0/1) 0% (0/4)
TestHashPartitioning$2 0% (0/1) 0% (0/4)
TestHashPartitioning$3 0% (0/1) 0% (0/4)
TestHashPartitioning$4 0% (0/1) 0% (0/4)
TestHashPartitioning$5 0% (0/1) 0% (0/3)
TestHashPartitioning$6 0% (0/1) 0% (0/4)
TestHashPartitioning$7 0% (0/1) 0% (0/4)
TestHashPartitioning$8 0% (0/1) 0% (0/4)
TestHashPartitioning$9 0% (0/1) 0% (0/4)
Total 0% (0/22) 0% (0/100) 0% (0/292)


 package org.umlg.sqlg.test.topology;
 
 import org.apache.commons.collections4.set.ListOrderedSet;
 import org.apache.commons.configuration2.builder.fluent.Configurations;
 import org.apache.commons.configuration2.ex.ConfigurationException;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.umlg.sqlg.structure.PropertyDefinition;
 import org.umlg.sqlg.structure.PropertyType;
 import org.umlg.sqlg.structure.SqlgGraph;
 import org.umlg.sqlg.structure.topology.EdgeLabel;
 import org.umlg.sqlg.structure.topology.Partition;
 import org.umlg.sqlg.structure.topology.PartitionType;
 import org.umlg.sqlg.structure.topology.VertexLabel;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.net.URL;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.*;
 
 /**
  * @author <a href="https://github.com/pietermartin">Pieter Martin</a>
  * Date: 2021/10/11
  */
 @SuppressWarnings("DuplicatedCode")
 public class TestHashPartitioning extends BaseTest {
 
  private static final Logger LOGGER = LoggerFactory.getLogger(TestHashPartitioning.class);
 
  @BeforeClass
  public static void beforeClass() {
  URL sqlProperties = Thread.currentThread().getContextClassLoader().getResource("sqlg.properties");
  try {
  Configurations configs = new Configurations();
  configuration = configs.properties(sqlProperties);
  Assume.assumeTrue(isPostgres());
  configuration.addProperty("distributed", true);
  if (!configuration.containsKey("jdbc.url"))
  throw new IllegalArgumentException(String.format("SqlGraph configuration requires that the %s be set", "jdbc.url"));
 
  } catch (ConfigurationException e) {
  throw new RuntimeException(e);
  }
  }
 
  @Before
  public void before() throws Exception {
  super.before();
  Assume.assumeTrue(this.sqlgGraph.getSqlDialect().supportsPartitioning());
  }
 
  @Test
  public void testHashPartitionTopologyLock() {
  VertexLabel vertexLabel = this.sqlgGraph.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  this.sqlgGraph.tx().commit();
  this.sqlgGraph.getTopology().lock();
  try {
  vertexLabel.ensureHashPartitionExists("hashPartition" + 0, 10, 0);
  Assert.fail("excepted failure");
  } catch (IllegalStateException e) {
  Assert.assertEquals("The topology is locked! Changes are not allowed, first unlock it. Either globally or for the transaction.\n" +
  "Change description: 'AbstractLabel 'public.A' ensureHashPartitionExists with 'hashPartition0', '10', '0''", e.getMessage());
  }
  this.sqlgGraph.tx().commit();
  }
 
  @Test
  public void testHashPartition() {
  VertexLabel vertexLabel = this.sqlgGraph.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  vertexLabel.ensureHashPartitionExists("hashPartition" + i, 10, i);
  }
  this.sqlgGraph.tx().commit();
  for (int i = 0; i < 1000; i++) {
  this.sqlgGraph.addVertex(T.label, "A", "uid1", i, "uid2", 1L, "uid3", "halo1");
  }
  this.sqlgGraph.tx().commit();
  Assert.assertEquals(1000, this.sqlgGraph.traversal().V().hasLabel("A").count().next(), 0);
  Connection connection = this.sqlgGraph.tx().getConnection();
  try (Statement s = connection.createStatement()) {
  ResultSet rs = s.executeQuery("select tableoid::regclass as partition_name, count(*) from \"V_A\" group by 1 order by 1;");
  int count = 0;
  Map<String, Long> partitionDistributionCount = new HashMap<>();
  while (rs.next()) {
  count++;
  partitionDistributionCount.put(rs.getString(1), rs.getLong(2));
  }
  Assert.assertEquals(10, count);
  Assert.assertEquals(10, partitionDistributionCount.size());
  for (int i = 0; i < 10; i++) {
  Assert.assertTrue(partitionDistributionCount.containsKey("\"hashPartition" + i + "\""));
  }
  Assert.assertEquals(100, partitionDistributionCount.get("\"hashPartition0\""), 0);
  Assert.assertEquals(92, partitionDistributionCount.get("\"hashPartition1\""), 0);
  Assert.assertEquals(103, partitionDistributionCount.get("\"hashPartition2\""), 0);
  Assert.assertEquals(88, partitionDistributionCount.get("\"hashPartition3\""), 0);
  Assert.assertEquals(113, partitionDistributionCount.get("\"hashPartition4\""), 0);
  Assert.assertEquals(90, partitionDistributionCount.get("\"hashPartition5\""), 0);
  Assert.assertEquals(119, partitionDistributionCount.get("\"hashPartition6\""), 0);
  Assert.assertEquals(92, partitionDistributionCount.get("\"hashPartition7\""), 0);
  Assert.assertEquals(100, partitionDistributionCount.get("\"hashPartition8\""), 0);
  Assert.assertEquals(103, partitionDistributionCount.get("\"hashPartition9\""), 0);
  } catch (SQLException throwables) {
  Assert.fail(throwables.getMessage());
  }
 
  try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
  VertexLabel a = sqlgGraph1.getTopology().getPublicSchema().getVertexLabel("A").orElseThrow();
  Assert.assertEquals("\"uid1\"", a.getPartitionExpression());
  Assert.assertEquals(PartitionType.HASH, a.getPartitionType());
 
  for (int i = 0; i < 10; i++) {
  Optional<Partition> part1 = a.getPartition("hashPartition" + i);
  Assert.assertTrue(part1.isPresent());
  Assert.assertNull(part1.get().getPartitionExpression());
  Assert.assertEquals(10, part1.get().getModulus(), 0);
  Assert.assertEquals(i, part1.get().getRemainder(), 0);
  }
  }
 
  //Delete the topology
  dropSqlgSchema(this.sqlgGraph);
 
  this.sqlgGraph.tx().commit();
  this.sqlgGraph.close();
 
  try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
  VertexLabel a = sqlgGraph1.getTopology().getPublicSchema().getVertexLabel("A").orElseThrow();
  //This is actually wrong, the quotes have been dropped.
  Assert.assertEquals("uid1", a.getPartitionExpression());
  Assert.assertEquals(PartitionType.HASH, a.getPartitionType());
 
  for (int i = 0; i < 10; i++) {
  Optional<Partition> part1 = a.getPartition("hashPartition" + i);
  Assert.assertTrue(part1.isPresent());
  Assert.assertNull(part1.get().getPartitionExpression());
  Assert.assertEquals(10, part1.get().getModulus(), 0);
  Assert.assertEquals(i, part1.get().getRemainder(), 0);
  }
  }
 
  }
 
  @Test
  public void testHashPartitionOnEdge() {
  VertexLabel aVertexLabel = this.sqlgGraph.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  aVertexLabel.ensureHashPartitionExists("aHashPartition" + i, 10, i);
  }
  VertexLabel bVertexLabel = this.sqlgGraph.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "B",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  bVertexLabel.ensureHashPartitionExists("bHashPartition" + i, 10, i);
  }
  EdgeLabel edgeLabel = aVertexLabel.ensurePartitionedEdgeLabelExist(
  "ab",
  bVertexLabel,
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  edgeLabel.ensureHashPartitionExists("eHashPartition" + i, 10, i);
  }
  this.sqlgGraph.tx().commit();
  for (int i = 0; i < 1000; i++) {
  Vertex a = this.sqlgGraph.addVertex(T.label, "A", "uid1", i, "uid2", 1L, "uid3", "halo1");
  Vertex b = this.sqlgGraph.addVertex(T.label, "B", "uid1", i, "uid2", 1L, "uid3", "halo1");
  a.addEdge("ab", b, "uid1", i, "uid2", "uid2" + i);
  }
  this.sqlgGraph.tx().commit();
  Assert.assertEquals(1000, this.sqlgGraph.traversal().V().hasLabel("A").count().next(), 0);
  Assert.assertEquals(1000, this.sqlgGraph.traversal().V().hasLabel("B").count().next(), 0);
  Assert.assertEquals(1000, this.sqlgGraph.traversal().E().hasLabel("ab").count().next(), 0);
  Connection connection = this.sqlgGraph.tx().getConnection();
  try (Statement s = connection.createStatement()) {
  ResultSet rs = s.executeQuery("select tableoid::regclass as partition_name, count(*) from \"E_ab\" group by 1 order by 1;");
  int count = 0;
  Map<String, Long> partitionDistributionCount = new HashMap<>();
  while (rs.next()) {
  count++;
  partitionDistributionCount.put(rs.getString(1), rs.getLong(2));
  }
  Assert.assertEquals(10, count);
  Assert.assertEquals(10, partitionDistributionCount.size());
  for (int i = 0; i < 10; i++) {
  Assert.assertTrue(partitionDistributionCount.containsKey("\"eHashPartition" + i + "\""));
  }
  Assert.assertEquals(100, partitionDistributionCount.get("\"eHashPartition0\""), 0);
  Assert.assertEquals(92, partitionDistributionCount.get("\"eHashPartition1\""), 0);
  Assert.assertEquals(103, partitionDistributionCount.get("\"eHashPartition2\""), 0);
  Assert.assertEquals(88, partitionDistributionCount.get("\"eHashPartition3\""), 0);
  Assert.assertEquals(113, partitionDistributionCount.get("\"eHashPartition4\""), 0);
  Assert.assertEquals(90, partitionDistributionCount.get("\"eHashPartition5\""), 0);
  Assert.assertEquals(119, partitionDistributionCount.get("\"eHashPartition6\""), 0);
  Assert.assertEquals(92, partitionDistributionCount.get("\"eHashPartition7\""), 0);
  Assert.assertEquals(100, partitionDistributionCount.get("\"eHashPartition8\""), 0);
  Assert.assertEquals(103, partitionDistributionCount.get("\"eHashPartition9\""), 0);
  } catch (SQLException throwables) {
  Assert.fail(throwables.getMessage());
  }
 
  try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
  EdgeLabel a = sqlgGraph1.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
  Assert.assertEquals("\"uid1\"", a.getPartitionExpression());
  Assert.assertEquals(PartitionType.HASH, a.getPartitionType());
 
  for (int i = 0; i < 10; i++) {
  Optional<Partition> part1 = a.getPartition("eHashPartition" + i);
  Assert.assertTrue(part1.isPresent());
  Assert.assertNull(part1.get().getPartitionExpression());
  Assert.assertEquals(10, part1.get().getModulus(), 0);
  Assert.assertEquals(i, part1.get().getRemainder(), 0);
  }
  }
 
  //Delete the topology
  dropSqlgSchema(this.sqlgGraph);
 
  this.sqlgGraph.tx().commit();
  this.sqlgGraph.close();
 
  try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
  VertexLabel a = sqlgGraph1.getTopology().getPublicSchema().getVertexLabel("A").orElseThrow();
  //This is actually wrong, the quotes have been dropped.
  Assert.assertEquals("uid1", a.getPartitionExpression());
  Assert.assertEquals(PartitionType.HASH, a.getPartitionType());
 
  for (int i = 0; i < 10; i++) {
  Optional<Partition> part1 = a.getPartition("aHashPartition" + i);
  Assert.assertTrue(part1.isPresent());
  Assert.assertNull(part1.get().getPartitionExpression());
  Assert.assertEquals(10, part1.get().getModulus(), 0);
  Assert.assertEquals(i, part1.get().getRemainder(), 0);
  }
  VertexLabel b = sqlgGraph1.getTopology().getPublicSchema().getVertexLabel("B").orElseThrow();
  //This is actually wrong, the quotes have been dropped.
  Assert.assertEquals("uid1", b.getPartitionExpression());
  Assert.assertEquals(PartitionType.HASH, b.getPartitionType());
 
  for (int i = 0; i < 10; i++) {
  Optional<Partition> part1 = b.getPartition("bHashPartition" + i);
  Assert.assertTrue(part1.isPresent());
  Assert.assertNull(part1.get().getPartitionExpression());
  Assert.assertEquals(10, part1.get().getModulus(), 0);
  Assert.assertEquals(i, part1.get().getRemainder(), 0);
  }
 
  EdgeLabel ab = sqlgGraph1.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
  //Reloading from information schema drops the quotes.
  Assert.assertEquals("uid1", ab.getPartitionExpression());
  Assert.assertEquals(PartitionType.HASH, ab.getPartitionType());
 
  for (int i = 0; i < 10; i++) {
  Optional<Partition> part1 = ab.getPartition("eHashPartition" + i);
  Assert.assertTrue(part1.isPresent());
  Assert.assertNull(part1.get().getPartitionExpression());
  Assert.assertEquals(10, part1.get().getModulus(), 0);
  Assert.assertEquals(i, part1.get().getRemainder(), 0);
  }
  }
 
  }
 
  @Test
  public void testHashPartitionCopyCommand() {
  VertexLabel vertexLabel = this.sqlgGraph.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  vertexLabel.ensureHashPartitionExists("hashPartition" + i, 10, i);
  }
  this.sqlgGraph.tx().commit();
  this.sqlgGraph.tx().streamingBatchModeOn();
  for (int i = 0; i < 1000; i++) {
  this.sqlgGraph.streamVertex(T.label, "A", "uid1", i, "uid2", 1L, "uid3", "halo1");
  }
  this.sqlgGraph.tx().commit();
  Assert.assertEquals(1000, this.sqlgGraph.traversal().V().hasLabel("A").count().next(), 0);
  Connection connection = this.sqlgGraph.tx().getConnection();
  try (Statement s = connection.createStatement()) {
  ResultSet rs = s.executeQuery("select tableoid::regclass as partition_name, count(*) from \"V_A\" group by 1 order by 1;");
  int count = 0;
  Map<String, Long> partitionDistributionCount = new HashMap<>();
  while (rs.next()) {
  count++;
  partitionDistributionCount.put(rs.getString(1), rs.getLong(2));
  }
  Assert.assertEquals(10, count);
  Assert.assertEquals(10, partitionDistributionCount.size());
  for (int i = 0; i < 10; i++) {
  Assert.assertTrue(partitionDistributionCount.containsKey("\"hashPartition" + i + "\""));
  }
  Assert.assertEquals(100, partitionDistributionCount.get("\"hashPartition0\""), 0);
  Assert.assertEquals(92, partitionDistributionCount.get("\"hashPartition1\""), 0);
  Assert.assertEquals(103, partitionDistributionCount.get("\"hashPartition2\""), 0);
  Assert.assertEquals(88, partitionDistributionCount.get("\"hashPartition3\""), 0);
  Assert.assertEquals(113, partitionDistributionCount.get("\"hashPartition4\""), 0);
  Assert.assertEquals(90, partitionDistributionCount.get("\"hashPartition5\""), 0);
  Assert.assertEquals(119, partitionDistributionCount.get("\"hashPartition6\""), 0);
  Assert.assertEquals(92, partitionDistributionCount.get("\"hashPartition7\""), 0);
  Assert.assertEquals(100, partitionDistributionCount.get("\"hashPartition8\""), 0);
  Assert.assertEquals(103, partitionDistributionCount.get("\"hashPartition9\""), 0);
  } catch (SQLException throwables) {
  Assert.fail(throwables.getMessage());
  }
  }
 
  @Test
  public void testHashSubPartition() {
  VertexLabel vertexLabel = this.sqlgGraph.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  Partition partition = vertexLabel.ensureHashPartitionWithSubPartitionExists("p" + i, 10, i, PartitionType.HASH, "uid2");
  for (int j = 0; j < 10; j++) {
  partition.ensureHashPartitionExists("p" + i + "_" + j, 10, j);
  }
  }
  this.sqlgGraph.tx().commit();
  for (int i = 0; i < 1000; i++) {
  this.sqlgGraph.addVertex(T.label, "A", "uid1", i, "uid2", 1L, "uid3", "halo1");
  }
  this.sqlgGraph.tx().commit();
  Assert.assertEquals(1000, this.sqlgGraph.traversal().V().hasLabel("A").count().next(), 0);
 
  }
 
  @Test
  public void testHashPartitionMultipleGraphs() throws InterruptedException {
  try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
  VertexLabel vertexLabel = sqlgGraph1.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  Partition partition = vertexLabel.ensureHashPartitionWithSubPartitionExists("p" + i, 10, i, PartitionType.HASH, "uid2");
  for (int j = 0; j < 10; j++) {
  partition.ensureHashPartitionExists("p" + i + "_" + j, 10, j);
  }
  }
  sqlgGraph1.tx().commit();
  Thread.sleep(1000);
 
  LOGGER.info(sqlgGraph1.getTopology().toString());
  LOGGER.info(this.sqlgGraph.getTopology().toString());
  Assert.assertEquals(sqlgGraph1.getTopology(), this.sqlgGraph.getTopology());
  }
 
  }
 
  @Test
  public void testHashSubPartitionMultipleGraphs() throws InterruptedException {
  try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
  VertexLabel vertexLabel = sqlgGraph1.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.LIST,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  Partition partition = vertexLabel.ensureListPartitionWithSubPartitionExists("p" + i, String.valueOf(i), PartitionType.HASH, "uid2");
  for (int j = 0; j < 10; j++) {
  partition.ensureHashPartitionExists("p" + i + "_" + j, 10, j);
  }
  }
  sqlgGraph1.tx().commit();
  Thread.sleep(1000);
 
  LOGGER.info(sqlgGraph1.getTopology().toString());
  LOGGER.info(this.sqlgGraph.getTopology().toString());
  Assert.assertEquals(sqlgGraph1.getTopology(), this.sqlgGraph.getTopology());
  }
 
  }
 
  @Test
  public void testHashSubPartition2MultipleGraphs() throws InterruptedException {
  try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
  VertexLabel vertexLabel = sqlgGraph1.getTopology().getPublicSchema().ensurePartitionedVertexLabelExist(
  "A",
  new LinkedHashMap<>() {{
  put("uid1", PropertyDefinition.of(PropertyType.INTEGER));
  put("uid2", PropertyDefinition.of(PropertyType.LONG));
  put("uid3", PropertyDefinition.of(PropertyType.STRING));
  }},
  ListOrderedSet.listOrderedSet(List.of("uid1", "uid2", "uid3")),
  PartitionType.HASH,
  "\"uid1\""
  );
  for (int i = 0; i < 10; i++) {
  Partition partition = vertexLabel.ensureHashPartitionWithSubPartitionExists("p" + i, 10, i, PartitionType.LIST, "uid2");
  for (int j = 0; j < 10; j++) {
  partition.ensureListPartitionExists("p" + i + "_" + j, String.valueOf(j));
  }
  }
  sqlgGraph1.tx().commit();
  Thread.sleep(1000);
 
  LOGGER.info(sqlgGraph1.getTopology().toString());
  LOGGER.info(this.sqlgGraph.getTopology().toString());
  Assert.assertEquals(sqlgGraph1.getTopology(), this.sqlgGraph.getTopology());
  }
 
  }
 }