/** * * * <pre> * Optional. The `bucket_options` are required when the logs-based metric is * using a DISTRIBUTION value type and it describes the bucket boundaries * used to create a histogram of the extracted values. * </pre> * * <code>.google.api.Distribution.BucketOptions bucket_options = 8;</code> */ public Builder mergeBucketOptions(com.google.api.Distribution.BucketOptions value) { if (bucketOptionsBuilder_ == null) { if (bucketOptions_ != null) { bucketOptions_ = com.google.api.Distribution.BucketOptions.newBuilder(bucketOptions_) .mergeFrom(value) .buildPartial(); } else { bucketOptions_ = value; } onChanged(); } else { bucketOptionsBuilder_.mergeFrom(value); } return this; } /**
@VisibleForTesting static BucketOptions createBucketOptions( @javax.annotation.Nullable io.opencensus.metrics.export.Distribution.BucketOptions bucketOptions) { final BucketOptions.Builder builder = BucketOptions.newBuilder(); if (bucketOptions == null) { return builder.build(); } return bucketOptions.match( bucketOptionsExplicitFunction, Functions.<BucketOptions>throwIllegalArgumentException()); }
.setMean(timeDomain ? snapshot.mean(getBaseTimeUnit()) : snapshot.mean()) .setCount(snapshot.count()) .setBucketOptions(Distribution.BucketOptions.newBuilder() .setExplicitBuckets(Distribution.BucketOptions.Explicit.newBuilder() .addAllBounds(bucketBoundaries)
/** * <pre> * Defines the histogram bucket boundaries. * </pre> * * <code>.google.api.Distribution.BucketOptions bucket_options = 6;</code> */ public Builder mergeBucketOptions(com.google.api.Distribution.BucketOptions value) { if (bucketOptionsBuilder_ == null) { if (bucketOptions_ != null) { bucketOptions_ = com.google.api.Distribution.BucketOptions.newBuilder(bucketOptions_).mergeFrom(value).buildPartial(); } else { bucketOptions_ = value; } onChanged(); } else { bucketOptionsBuilder_.mergeFrom(value); } return this; } /**
@Test public void createTimeSeriesList_Distribution() { List<TimeSeries> timeSeriesList = StackdriverExportUtils.createTimeSeriesList( DISTRIBUTION_METRIC, DEFAULT_RESOURCE, CUSTOM_OPENCENSUS_DOMAIN); assertThat(timeSeriesList.size()).isEqualTo(1); TimeSeries timeSeries = timeSeriesList.get(0); assertThat(timeSeries.getPointsCount()).isEqualTo(1); assertThat(timeSeries.getPoints(0).getValue().getDistributionValue()) .isEqualTo( com.google.api.Distribution.newBuilder() .setCount(3) .setMean(0.6666666666666666) .setBucketOptions( BucketOptions.newBuilder() .setExplicitBuckets( Explicit.newBuilder() .addAllBounds(Arrays.asList(0.0, 1.0, 3.0, 5.0)) .build()) .build()) .addAllBucketCounts(Arrays.asList(0L, 3L, 1L, 2L, 4L)) .setSumOfSquaredDeviation(14) .build()); }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() {
private Stream<TimeSeries> createFunctionTimer(Batch batch, FunctionTimer timer) { long count = (long) timer.count(); Distribution.Builder distribution = Distribution.newBuilder() .setMean(timer.mean(getBaseTimeUnit())) .setCount(count) .setBucketOptions(Distribution.BucketOptions.newBuilder() .setExplicitBuckets(Distribution.BucketOptions.Explicit.newBuilder() .addBounds(0.0) .build())) .addBucketCounts(0) .addBucketCounts(count); return Stream.of(batch.createTimeSeries(timer, distribution.build())); }
@Override public BucketOptions apply(ExplicitOptions arg) { BucketOptions.Builder builder = BucketOptions.newBuilder(); Explicit.Builder explicitBuilder = Explicit.newBuilder(); // The first bucket bound should be 0.0 because the Metrics first bucket is // [0, first_bound) but Stackdriver monitoring bucket bounds begin with -infinity // (first bucket is (-infinity, 0)) explicitBuilder.addBounds(0.0); explicitBuilder.addAllBounds(arg.getBucketBoundaries()); builder.setExplicitBuckets(explicitBuilder.build()); return builder.build(); } };
@Test public void createBucketOptions_Null() { assertThat(StackdriverExportUtils.createBucketOptions(null)) .isEqualTo(BucketOptions.newBuilder().build()); }
@Test public void createBucketOptions() { assertThat(StackdriverExportUtils.createBucketOptions(BUCKET_OPTIONS)) .isEqualTo( BucketOptions.newBuilder() .setExplicitBuckets( Explicit.newBuilder().addAllBounds(Arrays.asList(0.0, 1.0, 3.0, 5.0))) .build()); }