Add tests for data partition sizes
Bug: 111752559
Test: cts-tradefed run commandAndExit cts-dev -m CtsHardwareTestCases
-t android.hardware.cts.LowRamDeviceTest
Change-Id: I45b633075d58aee9d6a911237a7c31a27d4f9a74
diff --git a/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
index 9916dbb..82756d1 100644
--- a/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
@@ -37,16 +37,21 @@
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.os.Build;
+import android.os.StatFs;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.InstrumentationRegistry;
import android.util.DisplayMetrics;
import android.view.WindowManager;
import android.util.Log;
+import com.android.compatibility.common.util.CddTest;
+
import org.junit.runner.RunWith;
import org.junit.Before;
import org.junit.Test;
+import java.io.File;
+
/**
* Tests that devices with low RAM specify themselves as Low RAM devices
*/
@@ -56,6 +61,10 @@
private static final long ONE_MEGABYTE = 1048576L;
private static final String TAG = "LowRamDeviceTest";
private static final long LOW_RAM_MAX = 1024;
+ private static final float MIN_APP_DATA_PARTITION_SIZE_GB = 4f;
+ private static final float MIN_APP_DATA_PARTITION_SIZE_LOW_RAM_GB = 1.1f;
+ private static final float MIN_SHARED_DATA_PARTITION_SIZE_GB = 1f;
+ private static final long GB_TO_BYTES_MULTIPLIER = 1024 * 1024 * 1024;
private Context mContext;
private PackageManager mPackageManager;
@@ -80,6 +89,7 @@
* in CDD 7.6.1.
*/
@Test
+ @CddTest(requirement="7.6.1")
public void testMinimumMemory() {
int density = mDisplayMetrics.densityDpi;
Boolean supports64Bit = supportsSixtyFourBit();
@@ -136,6 +146,32 @@
}
}
+ @Test
+ @CddTest(requirement="7.6.2")
+ public void testMinSharedDataPartitionSize() {
+ assertDataPartitionMinimumSize(
+ "Shared data",
+ mContext.getExternalFilesDir(null),
+ MIN_SHARED_DATA_PARTITION_SIZE_GB);
+ }
+
+ @Test
+ @CddTest(requirement="7.6.1/H-9-2,7.6.1/H-10-1")
+ public void testMinDataPartitionSize() {
+ long totalMemoryMb = getTotalMemory() / ONE_MEGABYTE;
+ boolean lowRam = totalMemoryMb <= LOW_RAM_MAX;
+
+ if (lowRam) {
+ assertDataPartitionMinimumSize(
+ "Application data",
+ mContext.getFilesDir(),
+ MIN_APP_DATA_PARTITION_SIZE_LOW_RAM_GB);
+ } else {
+ assertDataPartitionMinimumSize(
+ "Application data", mContext.getFilesDir(), MIN_APP_DATA_PARTITION_SIZE_GB);
+ }
+ }
+
/**
* @return the total memory accessible by the kernel as defined by
* {@code ActivityManager.MemoryInfo}.
@@ -197,4 +233,16 @@
}
return false;
}
+
+ private void assertDataPartitionMinimumSize(
+ String partitionName, File fileInPartition, float minPartitionSizeGb) {
+ StatFs statFs = new StatFs(fileInPartition.getAbsolutePath());
+ long size = statFs.getTotalBytes();
+ long minSizeBytes = (long) minPartitionSizeGb * GB_TO_BYTES_MULTIPLIER;
+
+ assertTrue(
+ String.format("%s partition size does not meet requirement. "
+ + "Found = %d, Minimum = %d", partitionName, size, minSizeBytes),
+ size > minSizeBytes);
+ }
}