Skip to content

Commit 33dbf48

Browse files
Refactor metric logic to avoid duplication
Co-authored-by: Veselin Nikolov <veselin.nikolov@neotechnology.com>
1 parent f4e558c commit 33dbf48

File tree

35 files changed

+108
-226
lines changed

35 files changed

+108
-226
lines changed

algo/src/main/java/org/neo4j/gds/algorithms/community/BasicAlgorithmRunner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.neo4j.gds.algorithms.AlgorithmComputationResult;
2626
import org.neo4j.gds.algorithms.AlgorithmMemoryEstimation;
2727
import org.neo4j.gds.algorithms.AlgorithmMemoryValidationService;
28-
import org.neo4j.gds.algorithms.metrics.AlgorithmMetricsService;
2928
import org.neo4j.gds.api.DatabaseId;
3029
import org.neo4j.gds.api.GraphName;
3130
import org.neo4j.gds.api.User;
@@ -35,6 +34,7 @@
3534
import org.neo4j.gds.core.utils.progress.TaskRegistryFactory;
3635
import org.neo4j.gds.core.utils.warnings.UserLogRegistryFactory;
3736
import org.neo4j.gds.logging.Log;
37+
import org.neo4j.gds.metrics.algorithms.AlgorithmMetricsService;
3838

3939
import java.util.Optional;
4040

algo/src/test/java/org/neo4j/gds/algorithms/community/BasicAlgorithmRunnerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121

2222
import org.junit.jupiter.api.Test;
2323
import org.neo4j.gds.Algorithm;
24-
import org.neo4j.gds.algorithms.metrics.AlgorithmMetric;
25-
import org.neo4j.gds.algorithms.metrics.AlgorithmMetricsService;
2624
import org.neo4j.gds.compat.Neo4jProxy;
2725
import org.neo4j.gds.logging.Log;
26+
import org.neo4j.gds.metrics.ExecutionMetric;
27+
import org.neo4j.gds.metrics.algorithms.AlgorithmMetricsService;
2828

2929
import static org.assertj.core.api.Assertions.assertThatException;
3030
import static org.mockito.ArgumentMatchers.anyString;
@@ -39,7 +39,7 @@ class BasicAlgorithmRunnerTest {
3939

4040
@Test
4141
void shouldRegisterAlgorithmMetricCountForSuccess() {
42-
var algorithmMetricMock = mock(AlgorithmMetric.class);
42+
var algorithmMetricMock = mock(ExecutionMetric.class);
4343
var algorithmMetricsServiceMock = mock(AlgorithmMetricsService.class);
4444
when(algorithmMetricsServiceMock.create(anyString())).thenReturn(algorithmMetricMock);
4545

@@ -71,7 +71,7 @@ void shouldRegisterAlgorithmMetricCountForSuccess() {
7171

7272
@Test
7373
void shouldRegisterAlgorithmMetricCountForFailure() {
74-
var algorithmMetricMock = mock(AlgorithmMetric.class);
74+
var algorithmMetricMock = mock(ExecutionMetric.class);
7575
var algorithmMetricsServiceMock = mock(AlgorithmMetricsService.class);
7676
when(algorithmMetricsServiceMock.create(anyString())).thenReturn(algorithmMetricMock);
7777

executor/src/main/java/org/neo4j/gds/executor/ExecutionContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121

2222
import org.jetbrains.annotations.Nullable;
2323
import org.neo4j.common.DependencyResolver;
24-
import org.neo4j.gds.algorithms.metrics.AlgorithmMetricsService;
25-
import org.neo4j.gds.algorithms.metrics.PassthroughAlgorithmMetricRegistrar;
2624
import org.neo4j.gds.annotation.ValueClass;
2725
import org.neo4j.gds.api.AlgorithmMetaDataSetter;
2826
import org.neo4j.gds.api.CloseableResourceRegistry;
@@ -39,6 +37,8 @@
3937
import org.neo4j.gds.core.write.NodePropertyExporterBuilder;
4038
import org.neo4j.gds.core.write.RelationshipExporterBuilder;
4139
import org.neo4j.gds.core.write.RelationshipStreamExporterBuilder;
40+
import org.neo4j.gds.metrics.algorithms.AlgorithmMetricsService;
41+
import org.neo4j.gds.metrics.PassthroughExecutionMetricRegistrar;
4242
import org.neo4j.logging.Log;
4343
import org.neo4j.logging.NullLog;
4444

@@ -179,7 +179,7 @@ public boolean isGdsAdmin() {
179179

180180
@Override
181181
public AlgorithmMetricsService algorithmMetricsService() {
182-
return new AlgorithmMetricsService(new PassthroughAlgorithmMetricRegistrar());
182+
return new AlgorithmMetricsService(new PassthroughExecutionMetricRegistrar());
183183
}
184184

185185
@Override

executor/src/main/java/org/neo4j/gds/executor/ProcedureExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
import org.neo4j.gds.AlgorithmFactory;
2424
import org.neo4j.gds.GraphAlgorithmFactory;
2525
import org.neo4j.gds.GraphStoreAlgorithmFactory;
26-
import org.neo4j.gds.algorithms.metrics.AlgorithmMetricsService;
2726
import org.neo4j.gds.api.Graph;
2827
import org.neo4j.gds.api.GraphStore;
2928
import org.neo4j.gds.config.AlgoBaseConfig;
3029
import org.neo4j.gds.core.utils.ProgressTimer;
3130
import org.neo4j.gds.core.utils.TerminationFlag;
31+
import org.neo4j.gds.metrics.algorithms.AlgorithmMetricsService;
3232

3333
import java.util.Map;
3434
import java.util.Optional;

executor/src/test/java/org/neo4j/gds/executor/MemoryEstimationExecutorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
import org.neo4j.gds.NodeProjections;
2828
import org.neo4j.gds.ProcedureCallContextReturnColumns;
2929
import org.neo4j.gds.RelationshipProjections;
30-
import org.neo4j.gds.algorithms.metrics.AlgorithmMetricsService;
31-
import org.neo4j.gds.algorithms.metrics.PassthroughAlgorithmMetricRegistrar;
3230
import org.neo4j.gds.api.AlgorithmMetaDataSetter;
3331
import org.neo4j.gds.api.CloseableResourceRegistry;
3432
import org.neo4j.gds.api.DatabaseId;
@@ -44,6 +42,8 @@
4442
import org.neo4j.gds.core.utils.progress.EmptyTaskRegistryFactory;
4543
import org.neo4j.gds.core.utils.warnings.EmptyUserLogRegistryFactory;
4644
import org.neo4j.gds.gdl.GdlGraphs;
45+
import org.neo4j.gds.metrics.algorithms.AlgorithmMetricsService;
46+
import org.neo4j.gds.metrics.PassthroughExecutionMetricRegistrar;
4747
import org.neo4j.gds.projection.GraphProjectFromStoreConfig;
4848
import org.neo4j.gds.test.TestAlgorithm;
4949
import org.neo4j.gds.test.TestAlgorithmResult;
@@ -87,7 +87,7 @@ void setup() throws Exception {
8787
.nodeLookup(NodeLookup.EMPTY)
8888
.modelCatalog(ModelCatalog.EMPTY)
8989
.isGdsAdmin(false)
90-
.algorithmMetricsService(new AlgorithmMetricsService(new PassthroughAlgorithmMetricRegistrar()))
90+
.algorithmMetricsService(new AlgorithmMetricsService(new PassthroughExecutionMetricRegistrar()))
9191
.build();
9292

9393
memoryEstimationExecutor = new MemoryEstimationExecutor<>(

executor/src/test/java/org/neo4j/gds/executor/ProcedureExecutorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
import org.junit.jupiter.api.BeforeEach;
2424
import org.junit.jupiter.api.Test;
2525
import org.neo4j.gds.ProcedureCallContextReturnColumns;
26-
import org.neo4j.gds.algorithms.metrics.AlgorithmMetricsService;
27-
import org.neo4j.gds.algorithms.metrics.PassthroughAlgorithmMetricRegistrar;
2826
import org.neo4j.gds.api.AlgorithmMetaDataSetter;
2927
import org.neo4j.gds.api.CloseableResourceRegistry;
3028
import org.neo4j.gds.api.GraphStore;
@@ -43,6 +41,8 @@
4341
import org.neo4j.gds.extension.GdlExtension;
4442
import org.neo4j.gds.extension.GdlGraph;
4543
import org.neo4j.gds.extension.Inject;
44+
import org.neo4j.gds.metrics.algorithms.AlgorithmMetricsService;
45+
import org.neo4j.gds.metrics.PassthroughExecutionMetricRegistrar;
4646
import org.neo4j.gds.utils.StringJoining;
4747

4848
import java.util.HashSet;
@@ -138,7 +138,7 @@ private ExecutionContext executionContext(TaskStore taskStore) {
138138
.algorithmMetaDataSetter(AlgorithmMetaDataSetter.EMPTY)
139139
.nodeLookup(NodeLookup.EMPTY)
140140
.userLogRegistryFactory(EmptyUserLogRegistryFactory.INSTANCE)
141-
.algorithmMetricsService(new AlgorithmMetricsService(new PassthroughAlgorithmMetricRegistrar()))
141+
.algorithmMetricsService(new AlgorithmMetricsService(new PassthroughExecutionMetricRegistrar()))
142142
.build();
143143
}
144144

metrics-api/src/main/java/org/neo4j/gds/algorithms/metrics/AlgorithmMetric.java renamed to metrics-api/src/main/java/org/neo4j/gds/metrics/ExecutionMetric.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717
* You should have received a copy of the GNU General Public License
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
20-
package org.neo4j.gds.algorithms.metrics;
20+
package org.neo4j.gds.metrics;
2121

22-
public abstract class AlgorithmMetric implements AutoCloseable {
22+
public abstract class ExecutionMetric implements AutoCloseable {
2323

24-
protected final String algorithm;
24+
protected final String operation;
2525

26-
protected AlgorithmMetric(String algorithm) {
27-
this.algorithm = algorithm;
26+
protected ExecutionMetric(String operation) {
27+
this.operation = operation;
2828
}
2929

3030
public abstract void start();

metrics-api/src/main/java/org/neo4j/gds/algorithms/metrics/AlgorithmMetricRegistrar.java renamed to metrics-api/src/main/java/org/neo4j/gds/metrics/ExecutionMetricRegistrar.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
* You should have received a copy of the GNU General Public License
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
20-
package org.neo4j.gds.algorithms.metrics;
20+
package org.neo4j.gds.metrics;
2121

22-
public interface AlgorithmMetricRegistrar {
22+
public interface ExecutionMetricRegistrar {
2323

24-
AlgorithmMetric create(String algorithm);
24+
ExecutionMetric create(String algorithm);
2525

2626
}

metrics-api/src/main/java/org/neo4j/gds/algorithms/metrics/PassthroughAlgorithmMetric.java renamed to metrics-api/src/main/java/org/neo4j/gds/metrics/PassthroughExecutionMetric.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
* You should have received a copy of the GNU General Public License
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
20-
package org.neo4j.gds.algorithms.metrics;
20+
package org.neo4j.gds.metrics;
2121

22-
public final class PassthroughAlgorithmMetric extends AlgorithmMetric {
22+
public final class PassthroughExecutionMetric extends ExecutionMetric {
2323

24-
PassthroughAlgorithmMetric(String algorithm) {
25-
super(algorithm);
24+
PassthroughExecutionMetric(String operation) {
25+
super(operation);
2626
}
2727

2828
@Override

metrics-api/src/main/java/org/neo4j/gds/algorithms/metrics/PassthroughAlgorithmMetricRegistrar.java renamed to metrics-api/src/main/java/org/neo4j/gds/metrics/PassthroughExecutionMetricRegistrar.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717
* You should have received a copy of the GNU General Public License
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
20-
package org.neo4j.gds.algorithms.metrics;
20+
package org.neo4j.gds.metrics;
2121

2222
/**
2323
* No-op metrics registrar; to be used when metrics are not enabled in Neo4j.
2424
*/
25-
public class PassthroughAlgorithmMetricRegistrar implements AlgorithmMetricRegistrar {
25+
public class PassthroughExecutionMetricRegistrar implements ExecutionMetricRegistrar {
2626

2727
@Override
28-
public AlgorithmMetric create(String algorithm) {
29-
return new PassthroughAlgorithmMetric(algorithm);
28+
public ExecutionMetric create(String operation) {
29+
return new PassthroughExecutionMetric(operation);
3030
}
3131
}

0 commit comments

Comments
 (0)