Merge change 2654 into donut

* changes:
  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.
This commit is contained in:
Android (Google) Code Review
2009-05-28 19:06:47 -07:00

View File

@@ -68,6 +68,13 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
"/sdcard/recordVideoH263AudioMemOut.txt"; "/sdcard/recordVideoH263AudioMemOut.txt";
private static final String AUDIO_ONLY_RECORD_MEMOUT = private static final String AUDIO_ONLY_RECORD_MEMOUT =
"/sdcard/recordAudioOnlyMemOut.txt"; "/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() { public MediaPlayerPerformance() {
@@ -253,8 +260,21 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
//Write the ps output to the file //Write the ps output to the file
public void getMemoryWriteToLog(Writer output) { 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 cm = "ps mediaserver";
String memoryUsage = null; String memoryUsage = null;
int ch; int ch;
try { try {
Process p = Runtime.getRuntime().exec(cm); Process p = Runtime.getRuntime().exec(cm);
@@ -267,18 +287,43 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
} catch (IOException e) { } catch (IOException e) {
Log.v(TAG, e.toString()); Log.v(TAG, e.toString());
} }
String[] poList = memoryUsage.split("\r|\n|\r\n"); String[] poList = memoryUsage.split("\r|\n|\r\n");
String memusage = poList[1].concat("\n"); String memusage = poList[1].concat("\n");
Log.v(TAG, memusage); return memusage;
try {
//Write to file output
output.write(memusage);
} catch (Exception e) {
e.toString();
}
} }
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 @Suppress
public void testWmaParseTime() throws Exception { 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 // Test case 1: Capture the memory usage after every 20 h263 playback
@LargeTest @LargeTest
public void testH263VideoPlaybackMemoryUsage() throws Exception { public void testH263VideoPlaybackMemoryUsage() throws Exception {
boolean memoryResult = false;
mStartPid = getMediaserverPid();
mStartMemory = getMediaserverVsize();
File h263MemoryOut = new File(H263_VIDEO_PLAYBACK_MEMOUT); File h263MemoryOut = new File(H263_VIDEO_PLAYBACK_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(h263MemoryOut)); Writer output = new BufferedWriter(new FileWriter(h263MemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) { for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -297,11 +346,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output); getMemoryWriteToLog(output);
} }
output.close(); output.close();
memoryResult = validateMemoryResult(mStartPid, mStartMemory);
assertTrue("H263 playback memory test", memoryResult);
} }
// Test case 2: Capture the memory usage after every 20 h264 playback // Test case 2: Capture the memory usage after every 20 h264 playback
@LargeTest @LargeTest
public void testH264VideoPlaybackMemoryUsage() throws Exception { public void testH264VideoPlaybackMemoryUsage() throws Exception {
boolean memoryResult = false;
mStartPid = getMediaserverPid();
mStartMemory = getMediaserverVsize();
File h264MemoryOut = new File(H264_VIDEO_PLAYBACK_MEMOUT); File h264MemoryOut = new File(H264_VIDEO_PLAYBACK_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(h264MemoryOut)); Writer output = new BufferedWriter(new FileWriter(h264MemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) { for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -309,11 +364,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output); getMemoryWriteToLog(output);
} }
output.close(); output.close();
memoryResult = validateMemoryResult(mStartPid, mStartMemory);
assertTrue("H264 playback memory test", memoryResult);
} }
// Test case 3: Capture the memory usage after each 20 WMV playback // Test case 3: Capture the memory usage after each 20 WMV playback
@LargeTest @LargeTest
public void testWMVVideoPlaybackMemoryUsage() throws Exception { public void testWMVVideoPlaybackMemoryUsage() throws Exception {
boolean memoryResult = false;
mStartPid = getMediaserverPid();
mStartMemory = getMediaserverVsize();
File wmvMemoryOut = new File(WMV_VIDEO_PLAYBACK_MEMOUT); File wmvMemoryOut = new File(WMV_VIDEO_PLAYBACK_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(wmvMemoryOut)); Writer output = new BufferedWriter(new FileWriter(wmvMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) { for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -321,11 +382,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output); getMemoryWriteToLog(output);
} }
output.close(); 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 // Test case 4: Capture the memory usage after every 20 video only recorded
@LargeTest @LargeTest
public void testH263RecordVideoOnlyMemoryUsage() throws Exception { public void testH263RecordVideoOnlyMemoryUsage() throws Exception {
boolean memoryResult = false;
mStartPid = getMediaserverPid();
mStartMemory = getMediaserverVsize();
File videoH263RecordOnlyMemoryOut = new File(H263_VIDEO_ONLY_RECORD_MEMOUT); File videoH263RecordOnlyMemoryOut = new File(H263_VIDEO_ONLY_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(videoH263RecordOnlyMemoryOut)); Writer output = new BufferedWriter(new FileWriter(videoH263RecordOnlyMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) { for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -334,11 +401,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output); getMemoryWriteToLog(output);
} }
output.close(); 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 // Test case 5: Capture the memory usage after every 20 video only recorded
@LargeTest @LargeTest
public void testMpeg4RecordVideoOnlyMemoryUsage() throws Exception { public void testMpeg4RecordVideoOnlyMemoryUsage() throws Exception {
boolean memoryResult = false;
mStartPid = getMediaserverPid();
mStartMemory = getMediaserverVsize();
File videoMp4RecordOnlyMemoryOut = new File(MP4_VIDEO_ONLY_RECORD_MEMOUT); File videoMp4RecordOnlyMemoryOut = new File(MP4_VIDEO_ONLY_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(videoMp4RecordOnlyMemoryOut)); Writer output = new BufferedWriter(new FileWriter(videoMp4RecordOnlyMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) { for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -347,11 +420,18 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output); getMemoryWriteToLog(output);
} }
output.close(); 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 @LargeTest
public void testRecordVidedAudioMemoryUsage() throws Exception { public void testRecordVidedAudioMemoryUsage() throws Exception {
boolean memoryResult = false;
mStartPid = getMediaserverPid();
mStartMemory = getMediaserverVsize();
File videoRecordAudioMemoryOut = new File(H263_VIDEO_AUDIO_RECORD_MEMOUT); File videoRecordAudioMemoryOut = new File(H263_VIDEO_AUDIO_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(videoRecordAudioMemoryOut)); Writer output = new BufferedWriter(new FileWriter(videoRecordAudioMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) { for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -360,11 +440,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output); getMemoryWriteToLog(output);
} }
output.close(); 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 // Test case 7: Capture the memory usage after every 20 audio only recorded
@LargeTest @LargeTest
public void testRecordAudioOnlyMemoryUsage() throws Exception { public void testRecordAudioOnlyMemoryUsage() throws Exception {
boolean memoryResult = false;
mStartPid = getMediaserverPid();
mStartMemory = getMediaserverVsize();
File audioOnlyMemoryOut = new File(AUDIO_ONLY_RECORD_MEMOUT); File audioOnlyMemoryOut = new File(AUDIO_ONLY_RECORD_MEMOUT);
Writer output = new BufferedWriter(new FileWriter(audioOnlyMemoryOut)); Writer output = new BufferedWriter(new FileWriter(audioOnlyMemoryOut));
for (int i = 0; i < NUM_STRESS_LOOP; i++) { for (int i = 0; i < NUM_STRESS_LOOP; i++) {
@@ -372,5 +458,7 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
getMemoryWriteToLog(output); getMemoryWriteToLog(output);
} }
output.close(); output.close();
memoryResult = validateMemoryResult(mStartPid, mStartMemory);
assertTrue("audio record only memory test", memoryResult);
} }
} }