Skip to content

Commit e83fd4e

Browse files
Add scc in compute facade
1 parent 7255445 commit e83fd4e

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

algorithms-compute-facade/src/main/java/org/neo4j/gds/community/CommunityComputeFacade.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.neo4j.gds.cliqueCounting.CliqueCounting;
3131
import org.neo4j.gds.cliqueCounting.CliqueCountingResult;
3232
import org.neo4j.gds.cliquecounting.CliqueCountingParameters;
33+
import org.neo4j.gds.collections.ha.HugeLongArray;
3334
import org.neo4j.gds.conductance.Conductance;
3435
import org.neo4j.gds.conductance.ConductanceParameters;
3536
import org.neo4j.gds.conductance.ConductanceResult;
@@ -64,6 +65,8 @@
6465
import org.neo4j.gds.modularityoptimization.ModularityOptimizationParameters;
6566
import org.neo4j.gds.modularityoptimization.ModularityOptimizationResult;
6667
import org.neo4j.gds.result.TimedAlgorithmResult;
68+
import org.neo4j.gds.scc.Scc;
69+
import org.neo4j.gds.scc.SccParameters;
6770
import org.neo4j.gds.termination.TerminationFlag;
6871
import org.neo4j.gds.triangle.LocalClusteringCoefficient;
6972
import org.neo4j.gds.triangle.LocalClusteringCoefficientParameters;
@@ -516,4 +519,34 @@ CompletableFuture<TimedAlgorithmResult<ModularityOptimizationResult>> modularity
516519
);
517520
}
518521

522+
CompletableFuture<TimedAlgorithmResult<HugeLongArray>> scc(
523+
Graph graph,
524+
SccParameters parameters,
525+
JobId jobId,
526+
boolean logProgress
527+
) {
528+
529+
if (graph.isEmpty()) {
530+
return CompletableFuture.completedFuture(TimedAlgorithmResult.empty(HugeLongArray.newArray(0)));
531+
}
532+
533+
var progressTracker = progressTrackerFactory.create(
534+
tasks.scc(graph),
535+
jobId,
536+
parameters.concurrency(),
537+
logProgress
538+
);
539+
540+
var algorithm = new Scc(
541+
graph,
542+
progressTracker,
543+
terminationFlag
544+
);
545+
546+
return algorithmCaller.run(
547+
algorithm::compute,
548+
jobId
549+
);
550+
}
551+
519552
}

algorithms-compute-facade/src/test/java/org/neo4j/gds/community/CommunityComputeFacadeEmptyGraphTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.neo4j.gds.modularity.ModularityResult;
5252
import org.neo4j.gds.modularityoptimization.ModularityOptimizationParameters;
5353
import org.neo4j.gds.modularityoptimization.ModularityOptimizationResult;
54+
import org.neo4j.gds.scc.SccParameters;
5455
import org.neo4j.gds.termination.TerminationFlag;
5556
import org.neo4j.gds.triangle.LocalClusteringCoefficientParameters;
5657
import org.neo4j.gds.triangle.LocalClusteringCoefficientResult;
@@ -305,4 +306,21 @@ void modularityOptimization(){
305306
verifyNoInteractions(progressTrackerFactoryMock);
306307
verifyNoInteractions(algorithmCallerMock);
307308
}
309+
310+
@Test
311+
void scc(){
312+
313+
var future = facade.scc(
314+
graph,
315+
mock(SccParameters.class),
316+
jobIdMock,
317+
false
318+
);
319+
320+
var results = future.join();
321+
322+
assertThat(results.result().toArray()).hasSize(0);
323+
verifyNoInteractions(progressTrackerFactoryMock);
324+
verifyNoInteractions(algorithmCallerMock);
325+
}
308326
}

algorithms-compute-facade/src/test/java/org/neo4j/gds/community/CommunityComputeFacadeTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import org.neo4j.gds.louvain.LouvainParameters;
5151
import org.neo4j.gds.modularity.ModularityParameters;
5252
import org.neo4j.gds.modularityoptimization.ModularityOptimizationParameters;
53+
import org.neo4j.gds.scc.SccParameters;
5354
import org.neo4j.gds.termination.TerminationFlag;
5455
import org.neo4j.gds.triangle.LocalClusteringCoefficientParameters;
5556

@@ -376,4 +377,21 @@ void modularityOptimization(){
376377
assertThat(results.computeMillis()).isNotNegative();
377378
}
378379

380+
@Test
381+
void scc(){
382+
var future = facade.scc(
383+
graph,
384+
new SccParameters(
385+
new Concurrency(4)
386+
),
387+
jobIdMock,
388+
false
389+
);
390+
391+
var results = future.join();
392+
393+
assertThat(results.result().toArray()).hasSize(3);
394+
assertThat(results.computeMillis()).isNotNegative();
395+
}
396+
379397
}

0 commit comments

Comments
 (0)