Skip to content

Commit

Permalink
Add tests for MetricsProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
bdhoine committed Dec 5, 2024
1 parent 9a7b115 commit a4912ba
Show file tree
Hide file tree
Showing 5 changed files with 165 additions and 0 deletions.
1 change: 1 addition & 0 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<id>bnd-process</id>
<goals>
<goal>bnd-process</goal>
<goal>bnd-process-tests</goal>
</goals>
<configuration>
<bnd><![CDATA[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ void removeMetric(OpenTelemetryMetric metric) {
metrics.remove(metric);
}

public List<OpenTelemetryMetric> getMetrics() {
return metrics;
}

@Activate
protected void activate() {
OpenTelemetry openTelemetry = openTelemetryFactory.get();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package be.orbinson.aem.mocks;

import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.distribution.DistributionRequest;
import org.apache.sling.distribution.DistributionResponse;
import org.apache.sling.distribution.agent.DistributionAgentState;
import org.apache.sling.distribution.agent.spi.DistributionAgent;
import org.apache.sling.distribution.common.DistributionException;
import org.apache.sling.distribution.log.spi.DistributionLog;
import org.apache.sling.distribution.queue.spi.DistributionQueue;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.osgi.service.component.annotations.Component;

@Component(service = DistributionAgent.class)
public class MockDistributionAgent implements DistributionAgent {
@Override
public @NotNull Iterable<String> getQueueNames() {
throw new UnsupportedOperationException();
}

@Override
public @Nullable DistributionQueue getQueue(@NotNull String s) {
return new MockDistributionQueue();
}

@Override
public @NotNull DistributionLog getLog() {
throw new UnsupportedOperationException();
}

@Override
public @NotNull DistributionAgentState getState() {
throw new UnsupportedOperationException();
}

@Override
public @NotNull DistributionResponse execute(@NotNull ResourceResolver resourceResolver, @NotNull DistributionRequest distributionRequest) throws DistributionException {
throw new UnsupportedOperationException();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package be.orbinson.aem.mocks;

import org.apache.sling.distribution.queue.DistributionQueueEntry;
import org.apache.sling.distribution.queue.DistributionQueueItem;
import org.apache.sling.distribution.queue.DistributionQueueState;
import org.apache.sling.distribution.queue.DistributionQueueStatus;
import org.apache.sling.distribution.queue.DistributionQueueType;
import org.apache.sling.distribution.queue.spi.DistributionQueue;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Set;

public class MockDistributionQueue implements DistributionQueue {
@Override
public @NotNull String getName() {
return "main";
}

@Override
public @Nullable DistributionQueueEntry add(@NotNull DistributionQueueItem distributionQueueItem) {
throw new UnsupportedOperationException();
}

@Override
public @Nullable DistributionQueueEntry getHead() {
throw new UnsupportedOperationException();
}

@Override
public @NotNull Iterable<DistributionQueueEntry> getEntries(int i, int i1) {
throw new UnsupportedOperationException();
}

@Override
public @Nullable DistributionQueueEntry getEntry(@NotNull String s) {
throw new UnsupportedOperationException();
}

@Override
public @Nullable DistributionQueueEntry remove(@NotNull String s) {
throw new UnsupportedOperationException();
}

@Override
public @NotNull Iterable<DistributionQueueEntry> remove(@NotNull Set<String> set) {
throw new UnsupportedOperationException();
}

@Override
public @NotNull Iterable<DistributionQueueEntry> clear(int i) {
throw new UnsupportedOperationException();
}

@Override
public @NotNull DistributionQueueStatus getStatus() {
return new DistributionQueueStatus(1, DistributionQueueState.RUNNING);
}

@Override
public @NotNull DistributionQueueType getType() {
throw new UnsupportedOperationException();
}

@Override
public boolean hasCapability(@NotNull String s) {
throw new UnsupportedOperationException();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package be.orbinson.aem.opentelemetry.core.services;

import be.orbinson.aem.mocks.MockDistributionAgent;
import be.orbinson.aem.opentelemetry.core.metrics.DistributionQueueGauage;
import be.orbinson.aem.opentelemetry.core.services.impl.OpenTelemetryConfigImpl;
import be.orbinson.aem.opentelemetry.core.services.impl.OpenTelemetryFactoryImpl;
import io.wcm.testing.mock.aem.junit5.AemContext;
import io.wcm.testing.mock.aem.junit5.AemContextExtension;
import org.apache.sling.distribution.agent.spi.DistributionAgent;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@ExtendWith({AemContextExtension.class, MockitoExtension.class})
class MetricsProviderTest {

private final AemContext context = new AemContext();

@Spy
private MetricsProvider metricsProvider;

private DistributionQueueGauage distributionQueueGauage;

@Test
void testMetricsProviderBindsToService() {
context.registerInjectActivateService(
OpenTelemetryConfigImpl.class,
"enabled", true
);
context.registerInjectActivateService(
OpenTelemetryFactoryImpl.class,
"enabled", true
);
context.registerInjectActivateService(MockDistributionAgent.class);
distributionQueueGauage = context.registerInjectActivateService(DistributionQueueGauage.class);
metricsProvider = context.registerInjectActivateService(MetricsProvider.class);

assertNotNull(metricsProvider);
assertEquals(1, metricsProvider.getMetrics().size());
}

}

0 comments on commit a4912ba

Please sign in to comment.