Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Polish New Relic changes #1922

Merged
merged 1 commit into from
Mar 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
*/
package io.micrometer.newrelic;

/**
* Types for {@link NewRelicClientProvider}.
*
* @author Neil Powell
* @since 1.4.0
*/
public enum ClientProviderType {
INSIGHTS_API, INSIGHTS_AGENT
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,10 @@ default String eventType() {
}

/**
* When this is {@code INSIGHTS_AGENT}, the New Relic metrics will be published with the NewRelicAgentClientProvider which delegates to the Java agent.
* Defaults to {@code INSIGHTS_API} for publishing with the NewRelicApiClientProvider to the Insights REST API.
* When this is {@code INSIGHTS_AGENT}, the New Relic metrics will be published with the
* {@link NewRelicInsightsAgentClientProvider} which delegates to the Java agent.
* Defaults to {@code INSIGHTS_API} for publishing with the {@link NewRelicInsightsApiClientProvider} to the
* Insights REST API.
* @return the ClientProviderType to use
*/
default ClientProviderType clientProviderType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ public class NewRelicMeterRegistry extends StepMeterRegistry {
private static final ThreadFactory DEFAULT_THREAD_FACTORY = new NamedThreadFactory("new-relic-metrics-publisher");

private final NewRelicConfig config;
private final NewRelicClientProvider clientProvider;
// VisibleForTesting
final NewRelicClientProvider clientProvider;

/**
* @param config Configuration options for the registry that are describable as properties.
Expand All @@ -62,12 +63,10 @@ public NewRelicMeterRegistry(NewRelicConfig config, NewRelicClientProvider clien
super(config, clock);

if (clientProvider == null) {
//default to Insight Api client provider if not specified in config or provided
clientProvider =
(config.clientProviderType() != null
&& config.clientProviderType().equals(ClientProviderType.INSIGHTS_AGENT))
? new NewRelicInsightsAgentClientProvider(config)
: new NewRelicInsightsApiClientProvider(config);
//default to Insight API client provider if not specified in config or provided
clientProvider = (config.clientProviderType() == ClientProviderType.INSIGHTS_AGENT)
? new NewRelicInsightsAgentClientProvider(config)
: new NewRelicInsightsApiClientProvider(config);
}

this.config = config;
Expand All @@ -90,11 +89,6 @@ protected void publish() {
protected TimeUnit getBaseTimeUnit() {
return TimeUnit.SECONDS;
}

// VisibleForTesting
NewRelicClientProvider getClientProvider() {
return clientProvider;
}

public static class Builder {
private final NewRelicConfig config;
Expand All @@ -110,7 +104,7 @@ public static class Builder {

/**
* Use the client provider.
* @param client provider to use
* @param clientProvider client provider to use
* @return builder
* @since 1.4.0
*/
Expand All @@ -121,7 +115,7 @@ public Builder clientProvider(NewRelicClientProvider clientProvider) {

/**
* Use the naming convention.
* @param naming convention to use
* @param convention naming convention to use
* @return builder
* @since 1.4.0
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,14 @@
import com.newrelic.api.agent.TracedMethod;
import com.newrelic.api.agent.Transaction;

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.DistributionSummary;
import io.micrometer.core.instrument.FunctionCounter;
import io.micrometer.core.instrument.FunctionTimer;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.LongTaskTimer;
import io.micrometer.core.instrument.Measurement;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MockClock;
import io.micrometer.core.instrument.Statistic;
import io.micrometer.core.instrument.Tags;
import io.micrometer.core.instrument.TimeGauge;
import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.config.MissingRequiredConfigurationException;
import io.micrometer.core.ipc.http.HttpSender;
import io.micrometer.newrelic.NewRelicMeterRegistryTest.MockNewRelicAgent.MockNewRelicInsights;
Expand Down Expand Up @@ -143,15 +138,15 @@ NewRelicInsightsApiClientProvider getInsightsApiClientProvider(NewRelicConfig co
}

@Test
void constructedtWithAgentClientProvider() {
void constructedWithAgentClientProvider() {
//test Agent clientProvider
assertThat(agentEnabledRegistry.getClientProvider().getClass()).isEqualTo(NewRelicInsightsAgentClientProvider.class);
assertThat(agentEnabledRegistry.clientProvider).isInstanceOf(NewRelicInsightsAgentClientProvider.class);
}

@Test
void constructedWithApiClientProvider() {
//test default Api clientProvider
assertThat(apiDefaultRegistry.getClientProvider().getClass()).isEqualTo(NewRelicInsightsApiClientProvider.class);
//test default API clientProvider
assertThat(apiDefaultRegistry.clientProvider).isInstanceOf(NewRelicInsightsApiClientProvider.class);
}

@Test
Expand Down Expand Up @@ -594,28 +589,25 @@ void publishWithAgentClientProvider() {
void succeedsCustomClientProvider() {
NewRelicConfig config = key -> null;

NewRelicClientProvider mockClientProvider = new MockClientProvider();
NewRelicClientProvider customClientProvider = mock(NewRelicClientProvider.class);

NewRelicMeterRegistry registry = new NewRelicMeterRegistry(config, mockClientProvider, clock);
NewRelicMeterRegistry registry = new NewRelicMeterRegistry(config, customClientProvider, clock);

assertThat(registry.getClientProvider()).isNotNull();
assertThat(registry.getClientProvider()).getClass().equals(MockClientProvider.class);
assertThat(registry.clientProvider).isSameAs(customClientProvider);
}

@Test
void succeedsConfigInsightsApiClientProvider() {
NewRelicMeterRegistry registry = new NewRelicMeterRegistry(insightsApiConfig, null, clock);

assertThat(registry.getClientProvider()).isNotNull();
assertThat(registry.getClientProvider()).getClass().equals(NewRelicInsightsApiClientProvider.class);
assertThat(registry.clientProvider).isInstanceOf(NewRelicInsightsApiClientProvider.class);
}

@Test
void succeedsConfigInsightsAgentClientProvider() {
NewRelicMeterRegistry registry = new NewRelicMeterRegistry(insightsAgentConfig, null, clock);

assertThat(registry.getClientProvider()).isNotNull();
assertThat(registry.getClientProvider()).getClass().equals(NewRelicInsightsAgentClientProvider.class);
assertThat(registry.clientProvider).isInstanceOf(NewRelicInsightsAgentClientProvider.class);
}

@Test
Expand Down Expand Up @@ -780,59 +772,6 @@ public String get(String key) {
assertThat(getInsightsAgentClientProvider(config)).isNotNull();
}

static class MockClientProvider implements NewRelicClientProvider {

@Override
public void publish(NewRelicMeterRegistry meterRegistry) {
}

@Override
public Object writeFunctionTimer(FunctionTimer timer) {
return null;
}

@Override
public Object writeTimer(Timer timer) {
return null;
}

@Override
public Object writeSummary(DistributionSummary summary) {
return null;
}

@Override
public Object writeLongTaskTimer(LongTaskTimer timer) {
return null;
}

@Override
public Object writeTimeGauge(TimeGauge gauge) {
return null;
}

@Override
public Object writeGauge(Gauge gauge) {
return null;
}

@Override
public Object writeCounter(Counter counter) {
return null;
}

@Override
public Object writeFunctionCounter(FunctionCounter counter) {
return null;
}

@Override
public Object writeMeter(Meter meter) {
return null;
}

}

static class MockHttpSender implements HttpSender {

private Request request;
Expand Down