blob: f7540afead98cbaa2d6ca808caeee9493af1f40f [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.net.telemetry;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.test.util.Batch;
@RunWith(AndroidJUnit4.class)
@Batch(Batch.UNIT_TESTS)
public final class SizeBucketsTest {
private static final long INVALID = -1L;
private static final long ZERO = 0L;
private static final long ONE_KB_IN_BYTES = 1024L;
private static final long FIFTY_KB_IN_BYTES = 50L * ONE_KB_IN_BYTES;
private static final long TWO_HUNDRED_KB_IN_BYTES = 200L * ONE_KB_IN_BYTES;
private static final long ONE_THOUSAND_KB_IN_BYTES = 1000L * ONE_KB_IN_BYTES;
private static final long FIVE_THOUSAND_KB_IN_BYTES = 5000L * ONE_KB_IN_BYTES;
@Test
public void testCalcRequestHeadersSizeBucket_validInput_shouldReturnTheRightBucketSize() {
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__REQUEST_HEADERS_SIZE__REQUEST_HEADERS_SIZE_BUCKET_UNDER_ONE_KIB,
SizeBuckets.calcRequestHeadersSizeBucket(ZERO));
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__REQUEST_HEADERS_SIZE__REQUEST_HEADERS_SIZE_BUCKET_OVER_HUNDRED_KIB,
SizeBuckets.calcRequestHeadersSizeBucket(TWO_HUNDRED_KB_IN_BYTES));
}
@Test
public void testCalcResponseHeadersSizeBucket_validInput_shouldReturnTheRightBucketSize() {
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__RESPONSE_HEADERS_SIZE__RESPONSE_HEADERS_SIZE_BUCKET_ONE_TO_TEN_KIB,
SizeBuckets.calcResponseHeadersSizeBucket(ONE_KB_IN_BYTES));
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__RESPONSE_HEADERS_SIZE__RESPONSE_HEADERS_SIZE_BUCKET_FIFTY_TO_HUNDRED_KIB,
SizeBuckets.calcResponseHeadersSizeBucket(FIFTY_KB_IN_BYTES));
}
@Test
public void testCalcRequestBodySizeBucket_validInput_shouldReturnTheRightBucketSize() {
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__REQUEST_BODY_SIZE__REQUEST_BODY_SIZE_BUCKET_ZERO,
SizeBuckets.calcRequestBodySizeBucket(ZERO));
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__REQUEST_BODY_SIZE__REQUEST_BODY_SIZE_BUCKET_OVER_FIVE_MIB,
SizeBuckets.calcRequestBodySizeBucket(FIVE_THOUSAND_KB_IN_BYTES));
}
@Test
public void testCalcResponseBodySizeBucket_validInput_shouldReturnTheRightBucketSize() {
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__RESPONSE_BODY_SIZE__RESPONSE_BODY_SIZE_BUCKET_UNDER_TEN_KIB,
SizeBuckets.calcResponseBodySizeBucket(ONE_KB_IN_BYTES));
assertEquals(
CronetStatsLog
.CRONET_TRAFFIC_REPORTED__RESPONSE_BODY_SIZE__RESPONSE_BODY_SIZE_BUCKET_ONE_TO_FIVE_MIB,
SizeBuckets.calcResponseBodySizeBucket(ONE_THOUSAND_KB_IN_BYTES));
}
@Test
public void testCalcSizeBucket_invalidInput_shouldThrow() {
assertThrows(
IllegalArgumentException.class,
() -> SizeBuckets.calcRequestBodySizeBucket(INVALID));
assertThrows(
IllegalArgumentException.class,
() -> SizeBuckets.calcRequestHeadersSizeBucket(INVALID));
assertThrows(
IllegalArgumentException.class,
() -> SizeBuckets.calcRequestBodySizeBucket(INVALID));
assertThrows(
IllegalArgumentException.class,
() -> SizeBuckets.calcResponseHeadersSizeBucket(INVALID));
}
}