summaryrefslogtreecommitdiffstats
path: root/media/tests
diff options
context:
space:
mode:
authorYu Shan Emily Lau <yslau@google.com>2009-05-28 15:41:16 -0700
committerYu Shan Emily Lau <yslau@google.com>2009-05-28 18:59:33 -0700
commit01c0596b75388e3df7cb4fb022d904c4cac9d831 (patch)
tree6182af4b9b77d98893e52f1fa959b92e1f2069f7 /media/tests
parentb0ded43d3844d9d97c5d554e8ca4ec3ee2c7bbe1 (diff)
downloadframeworks_base-01c0596b75388e3df7cb4fb022d904c4cac9d831.zip
frameworks_base-01c0596b75388e3df7cb4fb022d904c4cac9d831.tar.gz
frameworks_base-01c0596b75388e3df7cb4fb022d904c4cac9d831.tar.bz2
Added the two validations for the memory stress test
1) Set the maximum memory leakage to 150K in 200 loops of playback. 2) Check the pid of the meidaserver.
Diffstat (limited to 'media/tests')
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java106
1 files changed, 97 insertions, 9 deletions
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
index 2f0173d..4a2f823 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
@@ -68,6 +68,13 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
"/sdcard/recordVideoH263AudioMemOut.txt";
private static final String AUDIO_ONLY_RECORD_MEMOUT =
"/sdcard/recordAudioOnlyMemOut.txt";
+ //the tolerant memory leak
+ private static final int MAX_ACCEPTED_MEMORY_LEAK_KB = 150;
+
+ private static int mStartMemory = 0;
+ private static int mEndMemory = 0;
+ private static int mStartPid = 0;
+ private static int mEndPid = 0;
public MediaPlayerPerformance() {
@@ -253,8 +260,21 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
//Write the ps output to the file
public void getMemoryWriteToLog(Writer output) {
+ String memusage = null;
+ memusage = captureMediaserverInfo();
+ Log.v(TAG, memusage);
+ try {
+ //Write to file output
+ output.write(memusage);
+ } catch (Exception e) {
+ e.toString();
+ }
+ }
+
+ public String captureMediaserverInfo() {
String cm = "ps mediaserver";
String memoryUsage = null;
+
int ch;
try {
Process p = Runtime.getRuntime().exec(cm);
@@ -267,18 +287,43 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
} catch (IOException e) {
Log.v(TAG, e.toString());
}
-
String[] poList = memoryUsage.split("\r|\n|\r\n");
String memusage = poList[1].concat("\n");
- Log.v(TAG, memusage);
- try {
- //Write to file output
- output.write(memusage);
- } catch (Exception e) {
- e.toString();
- }
+ return memusage;
+ }
+
+ public int getMediaserverPid(){
+ String memoryUsage = null;
+ int pidvalue = 0;
+ memoryUsage = captureMediaserverInfo();
+ String[] poList2 = memoryUsage.split("\t|\\s+");
+ String pid = poList2[1];
+ pidvalue = Integer.parseInt(pid);
+ Log.v(TAG, "PID = " + pidvalue);
+ return pidvalue;
+ }
+
+ public int getMediaserverVsize(){
+ String memoryUsage = captureMediaserverInfo();
+ String[] poList2 = memoryUsage.split("\t|\\s+");
+ String vsize = poList2[3];
+ int vsizevalue = Integer.parseInt(vsize);
+ Log.v(TAG, "VSIZE = " + vsizevalue);
+ return vsizevalue;
}
+ public boolean validateMemoryResult(int startPid, int startMemory){
+ mEndPid = getMediaserverPid();
+ mEndMemory = getMediaserverVsize();
+
+ //mediaserver crash
+ if (startPid != mEndPid)
+ return false;
+ //memory leak greter than the tolerant
+ if ((mEndMemory - startMemory) > MAX_ACCEPTED_MEMORY_LEAK_KB )
+ return false;
+ return true;
+ }
@Suppress
public void testWmaParseTime() throws Exception {
@@ -290,6 +335,10 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
// Test case 1: Capture the memory usage after every 20 h263 playback
@LargeTest
public void testH263VideoPlaybackMemoryUsage() throws Exception {
+ boolean memoryResult = false;
+ mStartPid = getMediaserverPid();
+ mStartMemory = getMediaserverVsize();
+
File h263MemoryOut = new File(H263_VIDEO_PLAYBACK_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(h263MemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -297,11 +346,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output);
}
output.close();
+ memoryResult = validateMemoryResult(mStartPid, mStartMemory);
+ assertTrue("H263 playback memory test", memoryResult);
}
// Test case 2: Capture the memory usage after every 20 h264 playback
@LargeTest
public void testH264VideoPlaybackMemoryUsage() throws Exception {
+ boolean memoryResult = false;
+ mStartPid = getMediaserverPid();
+ mStartMemory = getMediaserverVsize();
+
File h264MemoryOut = new File(H264_VIDEO_PLAYBACK_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(h264MemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -309,11 +364,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output);
}
output.close();
+ memoryResult = validateMemoryResult(mStartPid, mStartMemory);
+ assertTrue("H264 playback memory test", memoryResult);
}
// Test case 3: Capture the memory usage after each 20 WMV playback
@LargeTest
public void testWMVVideoPlaybackMemoryUsage() throws Exception {
+ boolean memoryResult = false;
+ mStartPid = getMediaserverPid();
+ mStartMemory = getMediaserverVsize();
+
File wmvMemoryOut = new File(WMV_VIDEO_PLAYBACK_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(wmvMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -321,11 +382,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output);
}
output.close();
+ memoryResult = validateMemoryResult(mStartPid, mStartMemory);
+ assertTrue("wmv playback memory test", memoryResult);
}
// Test case 4: Capture the memory usage after every 20 video only recorded
@LargeTest
public void testH263RecordVideoOnlyMemoryUsage() throws Exception {
+ boolean memoryResult = false;
+ mStartPid = getMediaserverPid();
+ mStartMemory = getMediaserverVsize();
+
File videoH263RecordOnlyMemoryOut = new File(H263_VIDEO_ONLY_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(videoH263RecordOnlyMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -334,11 +401,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output);
}
output.close();
+ memoryResult = validateMemoryResult(mStartPid, mStartMemory);
+ assertTrue("H263 record only memory test", memoryResult);
}
// Test case 5: Capture the memory usage after every 20 video only recorded
@LargeTest
public void testMpeg4RecordVideoOnlyMemoryUsage() throws Exception {
+ boolean memoryResult = false;
+ mStartPid = getMediaserverPid();
+ mStartMemory = getMediaserverVsize();
+
File videoMp4RecordOnlyMemoryOut = new File(MP4_VIDEO_ONLY_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(videoMp4RecordOnlyMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -347,11 +420,18 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output);
}
output.close();
+ memoryResult = validateMemoryResult(mStartPid, mStartMemory);
+ assertTrue("mpeg4 record only memory test", memoryResult);
}
- // Test case 6: Capture the memory usage after every 20 video and audio recorded
+ // Test case 6: Capture the memory usage after every 20 video and audio
+ // recorded
@LargeTest
public void testRecordVidedAudioMemoryUsage() throws Exception {
+ boolean memoryResult = false;
+ mStartPid = getMediaserverPid();
+ mStartMemory = getMediaserverVsize();
+
File videoRecordAudioMemoryOut = new File(H263_VIDEO_AUDIO_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(videoRecordAudioMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -360,11 +440,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output);
}
output.close();
+ memoryResult = validateMemoryResult(mStartPid, mStartMemory);
+ assertTrue("H263 audio video record memory test", memoryResult);
}
// Test case 7: Capture the memory usage after every 20 audio only recorded
@LargeTest
public void testRecordAudioOnlyMemoryUsage() throws Exception {
+ boolean memoryResult = false;
+ mStartPid = getMediaserverPid();
+ mStartMemory = getMediaserverVsize();
+
File audioOnlyMemoryOut = new File(AUDIO_ONLY_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(audioOnlyMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -372,5 +458,7 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output);
}
output.close();
+ memoryResult = validateMemoryResult(mStartPid, mStartMemory);
+ assertTrue("audio record only memory test", memoryResult);
}
}