Skip to content

Commit

Permalink
Fix SdkMeterProvider shutdown (#3702)
Browse files Browse the repository at this point in the history
  • Loading branch information
anuraaga committed Oct 7, 2021
1 parent 97bbaa6 commit 59e84e9
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public CompletableResultCode forceFlush() {

@Override
public CompletableResultCode close() {
if (isClosed.compareAndSet(false, true)) {
if (!isClosed.compareAndSet(false, true)) {
LOGGER.info("Multiple close calls");
return CompletableResultCode.ofSuccess();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package io.opentelemetry.sdk.metrics;

import static io.opentelemetry.sdk.testing.assertj.metrics.MetricAssertions.assertThat;
import static org.mockito.Mockito.when;

import io.opentelemetry.api.baggage.Baggage;
import io.opentelemetry.api.common.AttributeKey;
Expand All @@ -19,9 +20,11 @@
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
import io.opentelemetry.sdk.metrics.common.InstrumentType;
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
import io.opentelemetry.sdk.metrics.export.MetricReader;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
import io.opentelemetry.sdk.metrics.view.Aggregation;
import io.opentelemetry.sdk.metrics.view.InstrumentSelector;
Expand All @@ -30,9 +33,14 @@
import io.opentelemetry.sdk.testing.time.TestClock;
import java.time.Duration;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

public class SdkMeterProviderTest {
@ExtendWith(MockitoExtension.class)
class SdkMeterProviderTest {
private static final Resource RESOURCE =
Resource.create(Attributes.of(AttributeKey.stringKey("resource_key"), "resource_value"));
private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO =
Expand All @@ -41,6 +49,8 @@ public class SdkMeterProviderTest {
private final SdkMeterProviderBuilder sdkMeterProviderBuilder =
SdkMeterProvider.builder().setClock(testClock).setResource(RESOURCE);

@Mock MetricReader metricReader;

@Test
void defaultMeterName() {
SdkMeterProvider sdkMeterProvider = sdkMeterProviderBuilder.build();
Expand Down Expand Up @@ -865,6 +875,20 @@ void sdkMeterProvider_supportsMultipleCollectorsDelta() {
.hasValue(1)));
}

@Test
void shutdown() {
when(metricReader.shutdown()).thenReturn(CompletableResultCode.ofSuccess());

CompletableResultCode result =
SdkMeterProvider.builder()
.registerMetricReader(unused -> metricReader)
.build()
.shutdown()
.join(10, TimeUnit.SECONDS);

assertThat(result.isSuccess()).isTrue();
}

private static void registerViewForAllTypes(
SdkMeterProviderBuilder meterProviderBuilder, Aggregation aggregation) {
for (InstrumentType instrumentType : InstrumentType.values()) {
Expand Down

0 comments on commit 59e84e9

Please sign in to comment.