Coverage Summary for Class: TestEdgeMultiplicityDistributed (org.umlg.sqlg.test.topology.edgeMultiplicity)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
TestEdgeMultiplicityDistributed |
100%
(1/1)
|
100%
(4/4)
|
30%
(3/10)
|
96.9%
(94/97)
|
package org.umlg.sqlg.test.topology.edgeMultiplicity;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.Test;
import org.umlg.sqlg.structure.Multiplicity;
import org.umlg.sqlg.structure.SqlgGraph;
import org.umlg.sqlg.structure.topology.EdgeDefinition;
import org.umlg.sqlg.structure.topology.EdgeLabel;
import org.umlg.sqlg.structure.topology.EdgeRole;
import org.umlg.sqlg.structure.topology.VertexLabel;
import org.umlg.sqlg.test.BaseTest;
import java.net.URL;
public class TestEdgeMultiplicityDistributed 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 testMultiplicityRemoveInEdgeRole() throws InterruptedException {
try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
VertexLabel aVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist("A");
VertexLabel bVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist("B");
VertexLabel cVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist("C");
aVertexLabel.ensureEdgeLabelExist("ab", bVertexLabel, EdgeDefinition.of(Multiplicity.of(2, 2), Multiplicity.of(3, 3)));
aVertexLabel.ensureEdgeLabelExist("ab", cVertexLabel, EdgeDefinition.of(Multiplicity.of(2, 2), Multiplicity.of(1, 1)));
this.sqlgGraph.tx().commit();
EdgeLabel edgeLabel = this.sqlgGraph.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
EdgeRole outEdgeRole = edgeLabel.getOutEdgeRoles(aVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(2, 2), outEdgeRole.getMultiplicity());
EdgeRole inEdgeRole = edgeLabel.getInEdgeRoles(bVertexLabel);
Assert.assertNotNull(inEdgeRole);
Assert.assertEquals(Multiplicity.of(3, 3), inEdgeRole.getMultiplicity());
inEdgeRole = edgeLabel.getInEdgeRoles(cVertexLabel);
Assert.assertNotNull(inEdgeRole);
Assert.assertEquals(Multiplicity.of(1, 1), inEdgeRole.getMultiplicity());
Thread.sleep(1_000);
edgeLabel = sqlgGraph1.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
outEdgeRole = edgeLabel.getOutEdgeRoles(aVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(2, 2), outEdgeRole.getMultiplicity());
inEdgeRole = edgeLabel.getInEdgeRoles(bVertexLabel);
Assert.assertNotNull(inEdgeRole);
Assert.assertEquals(Multiplicity.of(3, 3), inEdgeRole.getMultiplicity());
inEdgeRole = edgeLabel.getInEdgeRoles(cVertexLabel);
Assert.assertNotNull(inEdgeRole);
Assert.assertEquals(Multiplicity.of(1, 1), inEdgeRole.getMultiplicity());
edgeLabel = this.sqlgGraph.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
inEdgeRole = edgeLabel.getInEdgeRoles(bVertexLabel);
EdgeRole bInEdgeRole = inEdgeRole;
bInEdgeRole.remove();
this.sqlgGraph.tx().commit();
edgeLabel = this.sqlgGraph.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
outEdgeRole = edgeLabel.getOutEdgeRoles(aVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(2, 2), outEdgeRole.getMultiplicity());
inEdgeRole = edgeLabel.getInEdgeRoles(bVertexLabel);
Assert.assertNull(inEdgeRole);
inEdgeRole = edgeLabel.getInEdgeRoles(cVertexLabel);
Assert.assertNotNull(inEdgeRole);
Assert.assertEquals(Multiplicity.of(1, 1), inEdgeRole.getMultiplicity());
Thread.sleep(1_000);
edgeLabel = sqlgGraph1.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
outEdgeRole = edgeLabel.getOutEdgeRoles(aVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(2, 2), outEdgeRole.getMultiplicity());
inEdgeRole = edgeLabel.getInEdgeRoles(bVertexLabel);
Assert.assertNull(inEdgeRole);
inEdgeRole = edgeLabel.getInEdgeRoles(cVertexLabel);
Assert.assertNotNull(inEdgeRole);
Assert.assertEquals(Multiplicity.of(1, 1), inEdgeRole.getMultiplicity());
}
}
@Test
public void testMultiplicityRemoveOutEdgeRole() throws InterruptedException {
try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
VertexLabel aVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist("A");
VertexLabel bVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist("B");
VertexLabel cVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist("C");
bVertexLabel.ensureEdgeLabelExist("ab", aVertexLabel, EdgeDefinition.of(Multiplicity.of(2, 2), Multiplicity.of(4, 5)));
cVertexLabel.ensureEdgeLabelExist("ab", aVertexLabel, EdgeDefinition.of(Multiplicity.of(3, 3), Multiplicity.of(4, 5)));
this.sqlgGraph.tx().commit();
EdgeLabel edgeLabel = this.sqlgGraph.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
EdgeRole outEdgeRole = edgeLabel.getOutEdgeRoles(bVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(2, 2), outEdgeRole.getMultiplicity());
outEdgeRole = edgeLabel.getOutEdgeRoles(cVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(3, 3), outEdgeRole.getMultiplicity());
EdgeRole inEdgeRole = edgeLabel.getInEdgeRoles(aVertexLabel);
Assert.assertNotNull(inEdgeRole);
Assert.assertEquals(Multiplicity.of(4, 5), inEdgeRole.getMultiplicity());
Thread.sleep(1_000);
edgeLabel = sqlgGraph1.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
outEdgeRole = edgeLabel.getOutEdgeRoles(bVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(2, 2), outEdgeRole.getMultiplicity());
outEdgeRole = edgeLabel.getOutEdgeRoles(cVertexLabel);
Assert.assertNotNull(outEdgeRole);
Assert.assertEquals(Multiplicity.of(3, 3), outEdgeRole.getMultiplicity());
edgeLabel = this.sqlgGraph.getTopology().getPublicSchema().getEdgeLabel("ab").orElseThrow();
inEdgeRole = edgeLabel.getInEdgeRoles(aVertexLabel);
Assert.assertNotNull(inEdgeRole);
inEdgeRole.remove();
this.sqlgGraph.tx().commit();
Assert.assertFalse(this.sqlgGraph.getTopology().getPublicSchema().getEdgeLabel("ab").isPresent());
Thread.sleep(1_000);
Assert.assertFalse(sqlgGraph1.getTopology().getPublicSchema().getEdgeLabel("ab").isPresent());
}
}
}