/* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.privatespace.logging import android.multiuser.Flags import android.platform.test.annotations.RequiresFlagsEnabled import android.platform.test.flag.junit.CheckFlagsRule import android.platform.test.flag.junit.DeviceFlagsValueProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.privatespace.PrivateSpaceStatsLog import com.android.privatespace.logging.FileSizeBucketConverter.fiveHundredKb import com.android.privatespace.logging.FileSizeBucketConverter.fiveHundredMb import com.android.privatespace.logging.FileSizeBucketConverter.oneGb import com.android.privatespace.logging.FileSizeBucketConverter.oneHundredKb import com.android.privatespace.logging.FileSizeBucketConverter.oneHundredMb import com.android.privatespace.logging.FileSizeBucketConverter.oneKb import com.android.privatespace.logging.FileSizeBucketConverter.oneMb import com.android.privatespace.logging.FileSizeBucketConverter.tenKb import com.android.privatespace.logging.FileSizeBucketConverter.tenMb import com.android.privatespace.logging.FileSizeBucketConverter.twoGb import kotlin.test.assertEquals import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MOVING_CONTENT_INTO_PRIVATE_SPACE) @RunWith(AndroidJUnit4::class) class FileSizeBucketConverterTest { @get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() // Expected result constants private val unknown = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_UNKNOWN private val upTo1Kb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_0_TO_1_KB private val upTo10Kb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_1_TO_10_KB private val upTo100Kb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_10_TO_100_KB private val upTo500Kb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_100_TO_500_KB private val upTo1Mb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_500_KB_TO_1_MB private val upTo10Mb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_1_TO_10_MB private val upTo100Mb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_10_TO_100_MB private val upTo500Mb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_100_TO_500_MB private val upTo1Gb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_500_MB_TO_1_GB private val upTo2Gb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_1_TO_2_GB private val moreThan2Gb = PrivateSpaceStatsLog .PRIVATE_SPACE_MOVE_CONTENT_EVENT__TOTAL_FAILURE_FILES_SIZE_BUCKET__FILE_SIZE_MORE_THAN_2_GB @Test fun getFileSizeBucket_withNegativeInput_returnsUnknown() { assertEquals(unknown, FileSizeBucketConverter.getFileSizeBucket(-1L)) assertEquals(unknown, FileSizeBucketConverter.getFileSizeBucket(Long.MIN_VALUE)) } @Test fun getFileSizeBucket_withValuesUpTo1KB_returns0To1KB() { assertEquals(upTo1Kb, FileSizeBucketConverter.getFileSizeBucket(0L)) assertEquals(upTo1Kb, FileSizeBucketConverter.getFileSizeBucket(512L)) assertEquals(upTo1Kb, FileSizeBucketConverter.getFileSizeBucket(oneKb)) } @Test fun getFileSizeBucket_withValuesUpTo10KB_returns1To10KB() { assertEquals(upTo10Kb, FileSizeBucketConverter.getFileSizeBucket(oneKb + 1)) assertEquals(upTo10Kb, FileSizeBucketConverter.getFileSizeBucket(5 * oneKb)) assertEquals(upTo10Kb, FileSizeBucketConverter.getFileSizeBucket(tenKb)) } @Test fun getFileSizeBucket_withValuesUpTo100KB_returns10To100KB() { assertEquals(upTo100Kb, FileSizeBucketConverter.getFileSizeBucket(tenKb + 1)) assertEquals(upTo100Kb, FileSizeBucketConverter.getFileSizeBucket(50 * oneKb)) assertEquals(upTo100Kb, FileSizeBucketConverter.getFileSizeBucket(oneHundredKb)) } @Test fun getFileSizeBucket_withValuesUpTo500KB_returns100To500KB() { assertEquals(upTo500Kb, FileSizeBucketConverter.getFileSizeBucket(oneHundredKb + 1)) assertEquals(upTo500Kb, FileSizeBucketConverter.getFileSizeBucket(250 * oneKb)) assertEquals(upTo500Kb, FileSizeBucketConverter.getFileSizeBucket(fiveHundredKb)) } @Test fun getFileSizeBucket_withValuesUpTo1MB_returns500KBTo1MB() { assertEquals(upTo1Mb, FileSizeBucketConverter.getFileSizeBucket(fiveHundredKb + 1)) assertEquals(upTo1Mb, FileSizeBucketConverter.getFileSizeBucket(750 * oneKb)) assertEquals(upTo1Mb, FileSizeBucketConverter.getFileSizeBucket(oneMb)) } @Test fun getFileSizeBucket_withValuesUpTo10MB_returns1To10MB() { assertEquals(upTo10Mb, FileSizeBucketConverter.getFileSizeBucket(oneMb + 1)) assertEquals(upTo10Mb, FileSizeBucketConverter.getFileSizeBucket(5 * oneMb)) assertEquals(upTo10Mb, FileSizeBucketConverter.getFileSizeBucket(tenMb)) } @Test fun getFileSizeBucket_withValuesUpTo100MB_returns10To100MB() { assertEquals(upTo100Mb, FileSizeBucketConverter.getFileSizeBucket(tenMb + 1)) assertEquals(upTo100Mb, FileSizeBucketConverter.getFileSizeBucket(50 * oneMb)) assertEquals(upTo100Mb, FileSizeBucketConverter.getFileSizeBucket(oneHundredMb)) } @Test fun getFileSizeBucket_withValuesUpTo500MB_returns100To500MB() { assertEquals(upTo500Mb, FileSizeBucketConverter.getFileSizeBucket(oneHundredMb + 1)) assertEquals(upTo500Mb, FileSizeBucketConverter.getFileSizeBucket(250 * oneMb)) assertEquals(upTo500Mb, FileSizeBucketConverter.getFileSizeBucket(fiveHundredMb)) } @Test fun getFileSizeBucket_withValuesUpTo1GB_returns500MBTo1GB() { assertEquals(upTo1Gb, FileSizeBucketConverter.getFileSizeBucket(fiveHundredMb + 1)) assertEquals(upTo1Gb, FileSizeBucketConverter.getFileSizeBucket(750 * oneMb)) assertEquals(upTo1Gb, FileSizeBucketConverter.getFileSizeBucket(oneGb)) } @Test fun getFileSizeBucket_withValuesUpTo2GB_returns1To2GB() { assertEquals(upTo2Gb, FileSizeBucketConverter.getFileSizeBucket(oneGb + 1)) assertEquals(upTo2Gb, FileSizeBucketConverter.getFileSizeBucket(oneGb + oneGb / 2)) assertEquals(upTo2Gb, FileSizeBucketConverter.getFileSizeBucket(twoGb)) } @Test fun getFileSizeBucket_withValuesMoreThan2GB_returnsMoreThan2GB() { assertEquals(moreThan2Gb, FileSizeBucketConverter.getFileSizeBucket(twoGb + 1)) assertEquals(moreThan2Gb, FileSizeBucketConverter.getFileSizeBucket(10 * oneGb)) assertEquals(moreThan2Gb, FileSizeBucketConverter.getFileSizeBucket(Long.MAX_VALUE)) } }