Skip to content

Commit 8596f5b

Browse files
committed
Test improvements
1 parent b06359e commit 8596f5b

File tree

6 files changed

+96
-64
lines changed

6 files changed

+96
-64
lines changed

src/main/java/org/carlspring/strongbox/janusgraph/domain/ArtifactCoordinates.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
public class ArtifactCoordinates extends DomainEntity
77
{
88

9+
public static final String LABEL = "ArtifactCoordinates";
10+
911
private String path;
1012
private String version;
1113

src/main/java/org/carlspring/strongbox/janusgraph/domain/ArtifactDependency.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
public class ArtifactDependency extends DomainEntity
99
{
1010

11+
public static final String LABEL = "ArtifactDependency";
12+
1113
@StartNode
1214
private ArtifactEntry subject;
1315
@EndNode
14-
private ArtifactEntry dependency;
16+
private ArtifactCoordinates dependency;
1517

1618
public ArtifactEntry getSubject()
1719
{
@@ -23,12 +25,12 @@ public void setSubject(ArtifactEntry subject)
2325
this.subject = subject;
2426
}
2527

26-
public ArtifactEntry getDependency()
28+
public ArtifactCoordinates getDependency()
2729
{
2830
return dependency;
2931
}
3032

31-
public void setDependency(ArtifactEntry dependency)
33+
public void setDependency(ArtifactCoordinates dependency)
3234
{
3335
this.dependency = dependency;
3436
}

src/main/java/org/carlspring/strongbox/janusgraph/domain/ArtifactEntry.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
public class ArtifactEntry extends DomainEntity
1212
{
1313

14+
public static final String LABEL = "ArtifactEntry";
15+
1416
private String storageId;
1517
private String repositoryId;
1618
private Long sizeInBytes;
1719
@DateString("yyyy-MM-dd HH:mm:ss.SSSXXX")
1820
private Date created;
1921
private Set<String> tags;
20-
@Relationship(type = "ArtifactEntry#ArtifactCoordinates", direction = Relationship.OUTGOING)
22+
@Relationship(type = "ArtifactEntry_ArtifactCoordinates", direction = Relationship.OUTGOING)
2123
private ArtifactCoordinates artifactCoordinates;
2224

2325
public String getStorageId()

src/main/java/org/carlspring/strongbox/janusgraph/graph/schema/StrongboxSchema.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ protected Set<String> createIndexes(JanusGraph jg, JanusGraphManagement jgm) thr
116116
buildIndexIfNecessary(jgm, ArtifactCoordinates.class.getSimpleName() + ".path", Vertex.class, propertyKey,
117117
vertexLabel).ifPresent(result::add);
118118

119-
// EdgeLabel artifactEntryToArtifactCoordinates = jg.getEdgeLabel(ArtifactEntry.class.getSimpleName() + "#"
119+
// EdgeLabel artifactEntryToArtifactCoordinates = jg.getEdgeLabel(ArtifactEntry.class.getSimpleName() + "_"
120120
// + ArtifactCoordinates.class.getSimpleName());
121121
// jgm.buildEdgeIndex(artifactEntryToArtifactCoordinates, "battlesByTime", Direction.OUT);
122122

@@ -142,9 +142,9 @@ private void applySchemaChanges(JanusGraphManagement jgm)
142142
makeVertexLabelIfDoesNotExist(jgm, ArtifactCoordinates.class.getSimpleName());
143143

144144
// Edges
145-
makeEdgeLabelIfDoesNotExist(jgm, ArtifactEntry.class.getSimpleName() + "#" +
145+
makeEdgeLabelIfDoesNotExist(jgm, ArtifactEntry.class.getSimpleName() + "_" +
146146
ArtifactCoordinates.class.getSimpleName(), Multiplicity.MANY2ONE);
147-
makeEdgeLabelIfDoesNotExist(jgm, ArtifactDependency.class.getSimpleName(), Multiplicity.ONE2MANY);
147+
makeEdgeLabelIfDoesNotExist(jgm, ArtifactDependency.class.getSimpleName(), Multiplicity.MULTI);
148148
}
149149

150150
private Optional<String> buildIndexIfNecessary(final JanusGraphManagement jgm,

src/main/java/org/carlspring/strongbox/janusgraph/reposiotries/ArtifactEntryRepository.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
public interface ArtifactEntryRepository extends CrudRepository<ArtifactEntry, String>
1212
{
1313

14-
@Query("MATCH (ac:`ArtifactCoordinates`)<-[aeac:`ArtifactEntry#ArtifactCoordinates`]-(ae:`ArtifactEntry`) WHERE ac.path=$path RETURN ae, aeac, ac")
14+
@Query("MATCH (ac:`ArtifactCoordinates`)<-[aeac:`ArtifactEntry_ArtifactCoordinates`]-(ae:`ArtifactEntry`) WHERE ac.path=$path RETURN ae, aeac, ac")
1515
ArtifactEntry findByPath(String path);
1616

17-
@Query("MATCH (dependency:`ArtifactEntry` {uuid:$artifactEntryUuid})<-[:`ArtifactDependency`*]-(subject:`ArtifactEntry`) RETURN subject")
18-
List<ArtifactEntry> findAllDependentArtifactEntries(String artifactEntryUuid);
17+
@Query("MATCH (dependency:`ArtifactCoordinates`{uuid:$artifactCoordinatesUuid})<-[:`ArtifactDependency`*]-(subject:`ArtifactEntry`) RETURN subject")
18+
List<ArtifactEntry> findAllDependentArtifactEntries(String artifactCoordinatesUuid);
1919
}

src/test/java/org/carlspring/strongbox/janusgraph/reposiotries/ArtifactEntryRepositoryTest.java

Lines changed: 80 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import javax.inject.Inject;
1616

17+
import org.apache.tinkerpop.gremlin.process.traversal.P;
1718
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
1819
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
1920
import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -24,7 +25,6 @@
2425
import org.carlspring.strongbox.janusgraph.domain.ArtifactEntry;
2526
import org.janusgraph.core.JanusGraph;
2627
import org.junit.jupiter.api.Test;
27-
import org.neo4j.ogm.session.Session;
2828
import org.neo4j.ogm.session.SessionFactory;
2929
import org.slf4j.Logger;
3030
import org.slf4j.LoggerFactory;
@@ -39,12 +39,15 @@ public class ArtifactEntryRepositoryTest
3939
@Inject
4040
private ArtifactEntryRepository artifactEntryRepository;
4141

42+
@Inject
43+
private ArtifactCoordinatesRepository artifactCoordinatesRepository;
44+
4245
@Inject
4346
private JanusGraph janusGraph;
4447

4548
@Inject
4649
private SessionFactory sessionFactory;
47-
50+
4851
@Test
4952
public void crudShouldWork()
5053
{
@@ -66,6 +69,12 @@ public void crudShouldWork()
6669
ArtifactEntry artifactEntrySaved = artifactEntryRepository.save(artifactEntry);
6770
assertEquals(artifactEntrySaved.getUuid(), artifactEntry.getUuid());
6871

72+
ArtifactDependency artifactDependency = new ArtifactDependency();
73+
artifactDependency.setUuid(UUID.randomUUID().toString());
74+
artifactDependency.setSubject(artifactEntry);
75+
artifactDependency.setDependency(artifactCoordinates);
76+
sessionFactory.openSession().save(artifactDependency);
77+
6978
artifactEntrySaved = artifactEntryRepository.findByPath("org/carlspring/test-artifact-3.0.0.jar");
7079
assertNotNull(artifactEntrySaved);
7180
assertEquals(artifactEntrySaved.getUuid(), artifactEntry.getUuid());
@@ -81,26 +90,28 @@ public void crudShouldWork()
8190
@Test
8291
public void manyToOneRelationShouldWork()
8392
{
84-
String artifactCoordinatesUuid = UUID.randomUUID().toString();
85-
ArtifactCoordinates artifactCoordinates = new ArtifactCoordinates();
86-
artifactCoordinates.setPath("org/carlspring/test-artifact-4.0.0.jar");
87-
artifactCoordinates.setUuid(artifactCoordinatesUuid);
88-
artifactCoordinates.setVersion("4.0.0");
89-
9093
String artifactEntryUuid = UUID.randomUUID().toString();
91-
ArtifactEntry artifactEntry = new ArtifactEntry();
92-
artifactEntry.setUuid(artifactEntryUuid);
93-
artifactEntry.setStorageId("storage0");
94-
artifactEntry.setRepositoryId("releases");
95-
artifactEntry.setSizeInBytes(123L);
96-
artifactEntry.setTags(new HashSet<>(Arrays.asList("release", "stabile")));
97-
artifactEntry.setArtifactCoordinates(artifactCoordinates);
98-
artifactEntry.setCreated(new Date());
99-
100-
ArtifactEntry artifactEntrySaved = artifactEntryRepository.save(artifactEntry);
101-
assertEquals(artifactEntrySaved.getUuid(), artifactEntry.getUuid());
94+
String artifactCoordinatesUuid = UUID.randomUUID().toString();
10295

10396
GraphTraversalSource g = janusGraph.traversal();
97+
g.addV(ArtifactCoordinates.LABEL)
98+
.property("uuid", artifactCoordinatesUuid)
99+
.property("path",
100+
"org/carlspring/test-artifact-4.0.0.jar")
101+
.property("version",
102+
"4.0.0")
103+
.as("ac")
104+
.addV(ArtifactEntry.LABEL)
105+
.property("uuid", artifactEntryUuid)
106+
.property("storageId", "storage0")
107+
.property("repositoryId", "releases")
108+
.property("sizeInBytes", 123L)
109+
.property("tags", new HashSet<>(Arrays.asList("release", "stabile")))
110+
.property("created", new Date())
111+
.as("ae")
112+
.addE("ArtifactEntry_ArtifactCoordinates")
113+
.to("ac")
114+
.next();
104115

105116
// Relation should exists
106117
GraphTraversal<Vertex, Edge> edgeQuery = g.V()
@@ -110,7 +121,7 @@ public void manyToOneRelationShouldWork()
110121
assertTrue(edgeQuery.hasNext());
111122
Edge artifactEntry2ArtifactCoordinatesEdge = edgeQuery.next();
112123
logger.info(String.valueOf(artifactEntry2ArtifactCoordinatesEdge));
113-
assertEquals(ArtifactEntry.class.getSimpleName() + "#" + ArtifactCoordinates.class.getSimpleName(),
124+
assertEquals(ArtifactEntry.class.getSimpleName() + "_" + ArtifactCoordinates.class.getSimpleName(),
114125
artifactEntry2ArtifactCoordinatesEdge.label());
115126

116127
// ArtifactCoordinates should exists
@@ -136,43 +147,58 @@ public void manyToOneRelationShouldWork()
136147
Vertex artifactEntryAnotherVertex = vertexQuery.next();
137148
assertEquals(artifactCoordinatesUuid, artifactCoordinatesVertex.property("uuid").value());
138149
assertEquals(ArtifactEntry.class.getSimpleName(), artifactEntryAnotherVertex.label());
150+
151+
g.tx().rollback();
139152
}
140-
153+
141154
@Test
142-
public void artifactDependencyTreeShouldWork() {
143-
String subjectUuid = UUID.randomUUID().toString();
144-
145-
ArtifactEntry artifactEntrySubject = new ArtifactEntry();
146-
artifactEntrySubject.setUuid(subjectUuid);
147-
artifactEntrySubject.setStorageId("storage0");
148-
artifactEntrySubject.setRepositoryId("releases");
149-
artifactEntrySubject.setSizeInBytes(123L);
150-
artifactEntrySubject.setTags(new HashSet<>(Arrays.asList("release", "stabile")));
151-
//artifactEntry.setArtifactCoordinates(artifactCoordinates);
152-
artifactEntrySubject.setCreated(new Date());
153-
154-
String dependencyUuid = UUID.randomUUID().toString();
155-
ArtifactEntry artifactEntryDependency = new ArtifactEntry();
156-
artifactEntryDependency.setUuid(dependencyUuid);
157-
artifactEntryDependency.setStorageId("storage0");
158-
artifactEntryDependency.setRepositoryId("releases");
159-
artifactEntryDependency.setSizeInBytes(123L);
160-
artifactEntryDependency.setTags(new HashSet<>(Arrays.asList("release", "stabile")));
161-
//artifactEntry.setArtifactCoordinates(artifactCoordinates);
162-
artifactEntryDependency.setCreated(new Date());
163-
164-
ArtifactDependency artifactDependency = new ArtifactDependency();
165-
artifactDependency.setUuid(UUID.randomUUID().toString());
166-
artifactDependency.setSubject(artifactEntrySubject);
167-
artifactDependency.setDependency(artifactEntryDependency);
168-
169-
Session session = sessionFactory.openSession();
170-
session.save(artifactEntrySubject);
171-
session.save(artifactEntryDependency);
172-
session.save(artifactDependency);
155+
public void artifactDependencyTreeShouldWork()
156+
{
157+
GraphTraversalSource g = janusGraph.traversal();
173158

174-
List<ArtifactEntry> dependencies = artifactEntryRepository.findAllDependentArtifactEntries(dependencyUuid);
175-
assertEquals(1, dependencies.size());
159+
// ArtifactEntry->ArtifactDependency\
160+
// ..................................->ArtifactCoordinates
161+
// ArtifactEntry->ArtifactDependency/
162+
// .............\
163+
// ..............>ArtifactDependency->ArtifactCoordinates
164+
g.addV(ArtifactCoordinates.LABEL)
165+
.property("uuid", UUID.randomUUID().toString())
166+
.property("path",
167+
"org/carlspring/test/dependency.jar")
168+
.property("version",
169+
"777")
170+
.as("adc1")
171+
.addV(ArtifactEntry.LABEL)
172+
.property("uuid", UUID.randomUUID().toString())
173+
.property("storageId", "storage0")
174+
.property("repositoryId", "releases")
175+
.as("ae1")
176+
.addE(ArtifactDependency.LABEL)
177+
.to("adc1")
178+
.addV(ArtifactEntry.LABEL)
179+
.property("uuid", UUID.randomUUID().toString())
180+
.property("storageId", "storage0")
181+
.property("repositoryId", "releases")
182+
.as("ae2")
183+
.addE(ArtifactDependency.LABEL)
184+
.to("adc1")
185+
.addV(ArtifactCoordinates.LABEL)
186+
.property("uuid", UUID.randomUUID().toString())
187+
.property("path",
188+
"org/carlspring/test/another-dependency.jar")
189+
.property("version",
190+
"1.2.3")
191+
.as("adc2")
192+
.addE(ArtifactDependency.LABEL)
193+
.from("ae2")
194+
.to("adc2")
195+
.next();
196+
197+
g.tx().commit();
198+
199+
ArtifactCoordinates adc1 = artifactCoordinatesRepository.findByPath("org/carlspring/test/dependency.jar");
200+
List<ArtifactEntry> dependencies = artifactEntryRepository.findAllDependentArtifactEntries(adc1.getUuid());
201+
assertEquals(2, dependencies.size());
176202
}
177203

178204
}

0 commit comments

Comments
 (0)