Fix CTS com.android.cts.filesystemperf.RandomRWTest#testRandomRead Seldom fail
The test case will caluate target disk size using current memory size and free disk size in function getFileSizeExceedingMemory().
A special boundary condition may happen, when target disk size(memory size*2) == disk free size >= 512 MB,
any process write data to disk will cause java.io.IOException: write failed: ENOSPC (No space left on device).
So suggest reserve 50MB disk space for saving log or other process using.
Change-Id: I1003f9a6f74b6aa6b4c46d6e712a69b4f424772b
Signed-off-by: Junjie Hu <junjie.hu@mediatek.com>
diff --git a/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/FileUtil.java b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/FileUtil.java
old mode 100644
new mode 100755
index b342b61..6231774
--- a/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/FileUtil.java
+++ b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/FileUtil.java
@@ -244,6 +244,7 @@
long memSize = SystemUtil.getTotalMemory(context);
long diskSizeTarget = (2 * memSize / bufferSize) * bufferSize;
final long minimumDiskSize = (512L * 1024L * 1024L / bufferSize) * bufferSize;
+ final long reservedDiskSize = (50L * 1024L * 1024L / bufferSize) * bufferSize;
if ( diskSizeTarget < minimumDiskSize ) {
diskSizeTarget = minimumDiskSize;
}
@@ -251,6 +252,9 @@
Log.i(TAG, "Free disk size " + freeDisk + " too small");
return 0;
}
+ if ((freeDisk - diskSizeTarget) < reservedDiskSize) {
+ diskSizeTarget -= reservedDiskSize;
+ }
return diskSizeTarget;
}