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

Class Method, % Branch, % Line, %
TestTopologyPropertyColumnRenameDistributed 100% (4/4) 30% (3/10) 95.9% (71/74)
TestTopologyPropertyColumnRenameDistributed$1 100% (1/1) 100% (2/2)
TestTopologyPropertyColumnRenameDistributed$2 100% (1/1) 100% (3/3)
Total 100% (6/6) 30% (3/10) 96.2% (76/79)


 package org.umlg.sqlg.test.topology;
 
 import com.google.common.base.Preconditions;
 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.Vertex;
 import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.umlg.sqlg.structure.PropertyDefinition;
 import org.umlg.sqlg.structure.PropertyType;
 import org.umlg.sqlg.structure.SqlgGraph;
 import org.umlg.sqlg.structure.topology.PropertyColumn;
 import org.umlg.sqlg.structure.topology.Topology;
 import org.umlg.sqlg.structure.topology.VertexLabel;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.net.URL;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Optional;
 
 public class TestTopologyPropertyColumnRenameDistributed extends BaseTest {
 
     @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);
         }
     }
 
     @Test
     public void testDistributedNameChange() throws InterruptedException {
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             sqlgGraph1.getTopology().getPublicSchema()
                     .ensureVertexLabelExist("A", new LinkedHashMap<>() {{
                         put("column1", PropertyDefinition.of(PropertyType.STRING));
                     }});
             sqlgGraph1.tx().commit();
             Optional<VertexLabel> aVertexLabelOptional = sqlgGraph1.getTopology().getPublicSchema().getVertexLabel("A");
             Preconditions.checkState(aVertexLabelOptional.isPresent());
             VertexLabel aVertexLabel = aVertexLabelOptional.get();
             Optional<PropertyColumn> column1Optional = aVertexLabel.getProperty("column1");
             Preconditions.checkState(column1Optional.isPresent());
             PropertyColumn column1 = column1Optional.get();
             column1.rename("column2");
             sqlgGraph1.tx().commit();
 
             Thread.sleep(1_000);
             Assert.assertEquals(this.sqlgGraph.getTopology(), sqlgGraph1.getTopology());
             List<String> propertyNames = this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_PROPERTY).<String>values(Topology.SQLG_SCHEMA_PROPERTY_NAME).toList();
             Assert.assertEquals(1, propertyNames.size());
             Assert.assertEquals("column2", propertyNames.get(0));
             Assert.assertTrue(this.sqlgGraph.getTopology().getPublicSchema().getVertexLabel("A").orElseThrow().getProperty("column2").isPresent());
         }
     }
 
     @Test
     public void testDistributedIdentifierChange() throws InterruptedException {
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             sqlgGraph1.getTopology().getPublicSchema()
                     .ensureVertexLabelExist("A", new LinkedHashMap<>() {{
                         put("column1", PropertyDefinition.of(PropertyType.STRING));
                         put("column2", PropertyDefinition.of(PropertyType.STRING));
                     }}, ListOrderedSet.listOrderedSet(List.of("column1")));
             sqlgGraph1.tx().commit();
 
             Optional<VertexLabel> aVertexLabelOptional = sqlgGraph1.getTopology().getPublicSchema().getVertexLabel("A");
             Preconditions.checkState(aVertexLabelOptional.isPresent());
             VertexLabel aVertexLabel = aVertexLabelOptional.get();
             Optional<PropertyColumn> column1Optional = aVertexLabel.getProperty("column1");
             Preconditions.checkState(column1Optional.isPresent());
             ListOrderedSet<String> identifiers = aVertexLabel.getIdentifiers();
             Assert.assertEquals(1, identifiers.size());
             Assert.assertEquals("column1", identifiers.get(0));
             PropertyColumn column1 = column1Optional.get();
             column1.rename("column1PK");
             sqlgGraph1.tx().commit();
 
             List<Vertex> identifierProperties = sqlgGraph1.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_VERTEX_LABEL)
                     .out(Topology.SQLG_SCHEMA_VERTEX_IDENTIFIER_EDGE)
                     .toList();
             Assert.assertEquals(1, identifierProperties.size());
             Assert.assertEquals("column1PK", identifierProperties.get(0).value(Topology.SQLG_SCHEMA_PROPERTY_NAME));
 
             aVertexLabelOptional = sqlgGraph1.getTopology().getPublicSchema().getVertexLabel("A");
             Preconditions.checkState(aVertexLabelOptional.isPresent());
             aVertexLabel = aVertexLabelOptional.get();
             column1Optional = aVertexLabel.getProperty("column1PK");
             Preconditions.checkState(column1Optional.isPresent());
             identifiers = aVertexLabel.getIdentifiers();
             Assert.assertEquals(1, identifiers.size());
             Assert.assertEquals("column1PK", identifiers.get(0));
 
             Thread.sleep(1_000);
             Assert.assertEquals(this.sqlgGraph.getTopology(), sqlgGraph1.getTopology());
             identifierProperties = this.sqlgGraph.topology().V().hasLabel(Topology.SQLG_SCHEMA + "." + Topology.SQLG_SCHEMA_VERTEX_LABEL)
                     .out(Topology.SQLG_SCHEMA_VERTEX_IDENTIFIER_EDGE)
                     .toList();
             Assert.assertEquals(1, identifierProperties.size());
             Assert.assertEquals("column1PK", identifierProperties.get(0).value(Topology.SQLG_SCHEMA_PROPERTY_NAME));
 
             aVertexLabelOptional = this.sqlgGraph.getTopology().getPublicSchema().getVertexLabel("A");
             Preconditions.checkState(aVertexLabelOptional.isPresent());
             aVertexLabel = aVertexLabelOptional.get();
             column1Optional = aVertexLabel.getProperty("column1PK");
             Preconditions.checkState(column1Optional.isPresent());
             identifiers = aVertexLabel.getIdentifiers();
             Assert.assertEquals(1, identifiers.size());
             Assert.assertEquals("column1PK", identifiers.get(0));
         }
     }
 }