Skip to content

Commit

Permalink
made OtelTraceState and RandomGenerator package private and moved the…
Browse files Browse the repository at this point in the history
…m to samplers package
  • Loading branch information
oertl committed Apr 20, 2022
1 parent edac8a9 commit da42018
Show file tree
Hide file tree
Showing 14 changed files with 70 additions and 98 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

package io.opentelemetry.contrib.samplers;

import io.opentelemetry.contrib.state.OtelTraceState;
import javax.annotation.concurrent.Immutable;

@Immutable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import static java.util.Objects.requireNonNull;

import io.opentelemetry.contrib.state.OtelTraceState;
import javax.annotation.concurrent.Immutable;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import static java.util.Objects.requireNonNull;

import io.opentelemetry.contrib.state.OtelTraceState;
import javax.annotation.concurrent.Immutable;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import static java.util.Objects.requireNonNull;

import io.opentelemetry.contrib.util.RandomGenerator;
import javax.annotation.concurrent.Immutable;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

package io.opentelemetry.contrib.samplers;

import io.opentelemetry.contrib.util.RandomGenerator;
import javax.annotation.concurrent.Immutable;

/** A consistent sampler that samples with a fixed probability. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import static java.util.Objects.requireNonNull;

import io.opentelemetry.contrib.util.RandomGenerator;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.LongSupplier;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.api.trace.TraceState;
import io.opentelemetry.context.Context;
import io.opentelemetry.contrib.state.OtelTraceState;
import io.opentelemetry.contrib.util.RandomGenerator;
import io.opentelemetry.sdk.trace.data.LinkData;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import io.opentelemetry.sdk.trace.samplers.SamplingDecision;
Expand Down Expand Up @@ -60,7 +58,7 @@ public static final ConsistentSampler probabilityBased(double samplingProbabilit
* @param randomGenerator a random generator
* @return a sampler
*/
public static final ConsistentSampler probabilityBased(
static final ConsistentSampler probabilityBased(
double samplingProbability, RandomGenerator randomGenerator) {
return new ConsistentProbabilityBasedSampler(samplingProbability, randomGenerator);
}
Expand All @@ -82,7 +80,7 @@ public static final ConsistentSampler parentBased(ConsistentSampler rootSampler)
* @param rootSampler the root sampler
* @param randomGenerator a random generator
*/
public static final ConsistentSampler parentBased(
static final ConsistentSampler parentBased(
ConsistentSampler rootSampler, RandomGenerator randomGenerator) {
return new ConsistentParentBasedSampler(rootSampler, randomGenerator);
}
Expand Down Expand Up @@ -110,7 +108,7 @@ public static final ConsistentSampler rateLimited(
* @param randomGenerator a random generator
* @param nanoTimeSupplier a supplier for the current nano time
*/
public static final ConsistentSampler rateLimited(
static final ConsistentSampler rateLimited(
double targetSpansPerSecondLimit,
double adaptationTimeSeconds,
RandomGenerator randomGenerator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.state;
package io.opentelemetry.contrib.samplers;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;

public final class OtelTraceState {
final class OtelTraceState {

public static final String TRACE_STATE_KEY = "ot";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.util;
package io.opentelemetry.contrib.samplers;

import static java.util.Objects.requireNonNull;

import java.util.concurrent.ThreadLocalRandom;
import java.util.function.LongSupplier;

public final class RandomGenerator {
final class RandomGenerator {

private final LongSupplier threadSafeRandomLongSupplier;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@

package io.opentelemetry.contrib.samplers;

import static io.opentelemetry.contrib.util.TestUtil.verifyObservedPvaluesUsingGtest;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;

import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.api.trace.TraceState;
import io.opentelemetry.context.Context;
import io.opentelemetry.contrib.state.OtelTraceState;
import io.opentelemetry.contrib.util.RandomGenerator;
import io.opentelemetry.sdk.trace.data.LinkData;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import io.opentelemetry.sdk.trace.samplers.SamplingDecision;
Expand All @@ -23,6 +21,7 @@
import java.util.List;
import java.util.Map;
import java.util.SplittableRandom;
import org.hipparchus.stat.inference.GTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -87,4 +86,64 @@ public void test() {
test(random, 0.13);
test(random, 0.05);
}

private static void verifyObservedPvaluesUsingGtest(
long originalNumberOfSpans, Map<Integer, Long> observedPvalues, double samplingProbability) {

Object notSampled =
new Object() {
@Override
public String toString() {
return "NOT SAMPLED";
}
};

Map<Object, Double> expectedProbabilities = new HashMap<>();
if (samplingProbability >= 1.) {
expectedProbabilities.put(0, 1.);
} else if (samplingProbability <= 0.) {
expectedProbabilities.put(notSampled, 1.);
} else {
int exponent = 0;
while (true) {
if (Math.pow(0.5, exponent + 1) < samplingProbability
&& Math.pow(0.5, exponent) >= samplingProbability) {
break;
}
exponent += 1;
}
if (samplingProbability == Math.pow(0.5, exponent)) {
expectedProbabilities.put(notSampled, 1 - samplingProbability);
expectedProbabilities.put(exponent, samplingProbability);
} else {
expectedProbabilities.put(notSampled, 1 - samplingProbability);
expectedProbabilities.put(exponent, 2 * samplingProbability - Math.pow(0.5, exponent));
expectedProbabilities.put(exponent + 1, Math.pow(0.5, exponent) - samplingProbability);
}
}

Map<Object, Long> extendedObservedAdjustedCounts = new HashMap<>(observedPvalues);
long numberOfSpansNotSampled =
originalNumberOfSpans - observedPvalues.values().stream().mapToLong(i -> i).sum();
if (numberOfSpansNotSampled > 0) {
extendedObservedAdjustedCounts.put(notSampled, numberOfSpansNotSampled);
}

double[] expectedValues = new double[expectedProbabilities.size()];
long[] observedValues = new long[expectedProbabilities.size()];

int counter = 0;
for (Object key : expectedProbabilities.keySet()) {
observedValues[counter] = extendedObservedAdjustedCounts.getOrDefault(key, 0L);
double p = expectedProbabilities.get(key);
expectedValues[counter] = p * originalNumberOfSpans;
counter += 1;
}

if (expectedProbabilities.size() > 1) {
assertThat(new GTest().gTest(expectedValues, observedValues)).isGreaterThan(0.01);
} else {
assertThat((double) observedValues[0]).isEqualTo(expectedValues[0]);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.context.Context;
import io.opentelemetry.contrib.util.RandomGenerator;
import io.opentelemetry.sdk.trace.data.LinkData;
import io.opentelemetry.sdk.trace.samplers.SamplingDecision;
import io.opentelemetry.sdk.trace.samplers.SamplingResult;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.opentelemetry.contrib.state.OtelTraceState;
import java.util.SplittableRandom;
import org.junit.jupiter.api.Test;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.state;
package io.opentelemetry.contrib.samplers;

import static org.junit.jupiter.api.Assertions.assertEquals;

Expand Down

This file was deleted.

0 comments on commit da42018

Please sign in to comment.