Loading tests/DumpRenderTree/run_page_cycler.py→tests/DumpRenderTree/assets/run_page_cycler.py +3 −2 Original line number Diff line number Diff line Loading @@ -56,10 +56,11 @@ def main(options, args): run_load_test_cmd_postfix = " -w com.android.dumprendertree/.LayoutTestsAutoRunner" # Call LoadTestsAutoTest::runTest. run_load_test_cmd = run_load_test_cmd_prefix + " -e class com.android.dumprendertree.LoadTestsAutoTest#runTest -e path \"" + path + "\" -e timeout " + timeout_ms + run_load_test_cmd_postfix run_load_test_cmd = run_load_test_cmd_prefix + " -e class com.android.dumprendertree.LoadTestsAutoTest#runPageCyclerTest -e path \"" + path + "\" -e timeout " + timeout_ms + run_load_test_cmd_postfix (adb_output, adb_error) = subprocess.Popen(run_load_test_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() if adb_output.find('INSTRUMENTATION_FAILED') != -1: if adb_output.find('INSTRUMENTATION_FAILED') != -1 or \ adb_output.find('Process crashed.') != -1: logging.error("Error happened : " + adb_output) sys.exit(1) Loading tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java +10 −18 Original line number Diff line number Diff line Loading @@ -16,24 +16,11 @@ package com.android.dumprendertree; import android.app.Activity; import android.app.Instrumentation; import android.app.Instrumentation.ActivityMonitor; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; import android.util.Log; import android.view.KeyEvent; import android.webkit.WebSettings; import android.os.Bundle; import android.os.Message; import android.test.ActivityInstrumentationTestCase2; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; import com.android.dumprendertree.TestShellActivity; import android.util.Log; import java.io.BufferedOutputStream; import java.io.BufferedReader; Loading Loading @@ -141,6 +128,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh private Vector<String> mTestList; private boolean mRebaselineResults; private String mTestPathPrefix; private boolean mFinished; public LayoutTestsAutoTest() { super("com.android.dumprendertree", TestShellActivity.class); Loading Loading @@ -290,6 +278,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh activity.setCallback(new TestShellCallback() { public void finished() { synchronized (LayoutTestsAutoTest.this) { mFinished = true; LayoutTestsAutoTest.this.notifyAll(); } } Loading @@ -306,6 +295,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh resultFile = getAndroidExpectedResultFile(expectedResultFile); } mFinished = false; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(activity, TestShellActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); Loading @@ -316,10 +306,12 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh // Wait until done. synchronized (this) { while(!mFinished){ try { this.wait(); } catch (InterruptedException e) { } } } if (!mRebaselineResults) { String expectedResultFile = getExpectedResultFile(test); Loading Loading @@ -478,7 +470,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh byte[] buf = new byte[2048]; int len; while ((len = in.read(buf)) > 0 ) { while ((len = in.read(buf)) >= 0 ) { out.write(buf, 0, len); } out.close(); Loading tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java +92 −60 Original line number Diff line number Diff line Loading @@ -16,51 +16,33 @@ package com.android.dumprendertree; import android.app.Activity; import android.app.Instrumentation; import android.app.Instrumentation.ActivityMonitor; import android.content.Intent; import android.util.Log; import android.os.Bundle; import android.os.Debug; import android.os.Debug.MemoryInfo; import android.test.ActivityInstrumentationTestCase2; import com.android.dumprendertree.TestShellActivity; import com.android.dumprendertree.TestShellCallback; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.IOException; class StreamPipe extends Thread { InputStream in; OutputStream out; StreamPipe(InputStream in, OutputStream out) { this.in = in; this.out = out; } public void run() { try { byte[] buf = new byte[1024]; int nofb = this.in.read(buf); while (nofb != -1) { this.out.write(buf, 0, nofb); nofb = this.in.read(buf); } } catch (IOException e) { e.printStackTrace(); } } } import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShellActivity> { private final static String LOGTAG = "LoadTest"; private final static String LOAD_TEST_RESULT = "/sdcard/load_test_result.txt"; private boolean mFinished; static final String LOAD_TEST_RUNNER_FILES[] = { "run_page_cycler.py" }; public LoadTestsAutoTest() { super("com.android.dumprendertree", TestShellActivity.class); Loading @@ -77,7 +59,7 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel // Invokes running of layout tests // and waits till it has finished running. public void runTest() { public void runPageCyclerTest() { LayoutTestsAutoRunner runner = (LayoutTestsAutoRunner) getInstrumentation(); if (runner.mTestPath == null) { Loading @@ -92,35 +74,54 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel // TODO(fqian): let am instrumentation pass in the command line, currently // am instrument does not allow spaces in the command. runPostShellCommand("/system/bin/dumpsys meminfo"); dumpMemoryInfo(); // Kill activity activity.finish(); } private void runPostShellCommand(String cmd) { if (cmd == null || cmd.length() == 0) return; private void dumpMemoryInfo() { try { // Call dumpsys meminfo Process proc = Runtime.getRuntime().exec(cmd); // Append output to LOAD_TEST_RESULT InputStream input = proc.getInputStream(); InputStream error = proc.getErrorStream(); FileOutputStream out = new FileOutputStream(LOAD_TEST_RESULT, true); Log.v(LOGTAG, "Dumping memory information."); StreamPipe p_in = new StreamPipe(input, out); StreamPipe p_err = new StreamPipe(error, System.err); p_in.start(); p_err.start(); proc.waitFor(); FileOutputStream out = new FileOutputStream(LOAD_TEST_RESULT, true); PrintStream ps = new PrintStream(out); MemoryInfo mi = new MemoryInfo(); Debug.getMemoryInfo(mi); //try to fake the dumpsys format //this will eventually be changed to XML String format = "%15s:%9d%9d%9d%9d"; String pss = String.format(format, "(Pss)", mi.nativePss, mi.dalvikPss, mi.otherPss, mi.nativePss + mi.dalvikPss + mi.otherPss); String sd = String.format(format, "(shared dirty)", mi.nativeSharedDirty, mi.dalvikSharedDirty, mi.otherSharedDirty, mi.nativeSharedDirty + mi.dalvikSharedDirty + mi.otherSharedDirty); String pd = String.format(format, "(priv dirty)", mi.nativePrivateDirty, mi.dalvikPrivateDirty, mi.otherPrivateDirty, mi.nativePrivateDirty + mi.dalvikPrivateDirty + mi.otherPrivateDirty); ps.print("\n\n\n"); ps.println("** MEMINFO in pid 0 [com.android.dumprendertree] **"); ps.println(" native dalvik other total"); ps.println(" size: 12060 5255 N/A 17315"); ps.println(" allocated: 12060 5255 N/A 17315"); ps.println(" free: 12060 5255 N/A 17315"); ps.println(pss); ps.println(sd); ps.println(pd); ps.print("\n\n\n"); ps.flush(); ps.close(); out.flush(); out.close(); } catch (IOException e) { Log.e(LOGTAG, e.getMessage()); } catch (InterruptedException e) { Log.e(LOGTAG, e.getMessage()); } } Loading @@ -129,11 +130,13 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel activity.setCallback(new TestShellCallback() { public void finished() { synchronized (LoadTestsAutoTest.this) { mFinished = true; LoadTestsAutoTest.this.notifyAll(); } } }); mFinished = false; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(activity, TestShellActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); Loading @@ -144,9 +147,38 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel // Wait until done. synchronized (this) { while(!mFinished) { try { this.wait(); } catch (InterruptedException e) { } } } } public void copyRunnerAssetsToCache() { try { String out_dir = getActivity().getApplicationContext() .getCacheDir().getPath() + "/"; for( int i=0; i< LOAD_TEST_RUNNER_FILES.length; i++) { InputStream in = getActivity().getAssets().open( LOAD_TEST_RUNNER_FILES[i]); OutputStream out = new FileOutputStream( out_dir + LOAD_TEST_RUNNER_FILES[i]); byte[] buf = new byte[2048]; int len; while ((len = in.read(buf)) >= 0 ) { out.write(buf, 0, len); } out.close(); in.close(); } }catch (IOException e) { e.printStackTrace(); } } } tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ public class TestShellActivity extends Activity implements LayoutTestController if (mDialogStrings != null) os.write(mDialogStrings.toString().getBytes()); mDialogStrings = null; if (webkitData != null) os.write(webkitData.getBytes()); os.flush(); os.close(); Loading Loading
tests/DumpRenderTree/run_page_cycler.py→tests/DumpRenderTree/assets/run_page_cycler.py +3 −2 Original line number Diff line number Diff line Loading @@ -56,10 +56,11 @@ def main(options, args): run_load_test_cmd_postfix = " -w com.android.dumprendertree/.LayoutTestsAutoRunner" # Call LoadTestsAutoTest::runTest. run_load_test_cmd = run_load_test_cmd_prefix + " -e class com.android.dumprendertree.LoadTestsAutoTest#runTest -e path \"" + path + "\" -e timeout " + timeout_ms + run_load_test_cmd_postfix run_load_test_cmd = run_load_test_cmd_prefix + " -e class com.android.dumprendertree.LoadTestsAutoTest#runPageCyclerTest -e path \"" + path + "\" -e timeout " + timeout_ms + run_load_test_cmd_postfix (adb_output, adb_error) = subprocess.Popen(run_load_test_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() if adb_output.find('INSTRUMENTATION_FAILED') != -1: if adb_output.find('INSTRUMENTATION_FAILED') != -1 or \ adb_output.find('Process crashed.') != -1: logging.error("Error happened : " + adb_output) sys.exit(1) Loading
tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java +10 −18 Original line number Diff line number Diff line Loading @@ -16,24 +16,11 @@ package com.android.dumprendertree; import android.app.Activity; import android.app.Instrumentation; import android.app.Instrumentation.ActivityMonitor; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; import android.util.Log; import android.view.KeyEvent; import android.webkit.WebSettings; import android.os.Bundle; import android.os.Message; import android.test.ActivityInstrumentationTestCase2; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; import com.android.dumprendertree.TestShellActivity; import android.util.Log; import java.io.BufferedOutputStream; import java.io.BufferedReader; Loading Loading @@ -141,6 +128,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh private Vector<String> mTestList; private boolean mRebaselineResults; private String mTestPathPrefix; private boolean mFinished; public LayoutTestsAutoTest() { super("com.android.dumprendertree", TestShellActivity.class); Loading Loading @@ -290,6 +278,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh activity.setCallback(new TestShellCallback() { public void finished() { synchronized (LayoutTestsAutoTest.this) { mFinished = true; LayoutTestsAutoTest.this.notifyAll(); } } Loading @@ -306,6 +295,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh resultFile = getAndroidExpectedResultFile(expectedResultFile); } mFinished = false; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(activity, TestShellActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); Loading @@ -316,10 +306,12 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh // Wait until done. synchronized (this) { while(!mFinished){ try { this.wait(); } catch (InterruptedException e) { } } } if (!mRebaselineResults) { String expectedResultFile = getExpectedResultFile(test); Loading Loading @@ -478,7 +470,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh byte[] buf = new byte[2048]; int len; while ((len = in.read(buf)) > 0 ) { while ((len = in.read(buf)) >= 0 ) { out.write(buf, 0, len); } out.close(); Loading
tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java +92 −60 Original line number Diff line number Diff line Loading @@ -16,51 +16,33 @@ package com.android.dumprendertree; import android.app.Activity; import android.app.Instrumentation; import android.app.Instrumentation.ActivityMonitor; import android.content.Intent; import android.util.Log; import android.os.Bundle; import android.os.Debug; import android.os.Debug.MemoryInfo; import android.test.ActivityInstrumentationTestCase2; import com.android.dumprendertree.TestShellActivity; import com.android.dumprendertree.TestShellCallback; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.IOException; class StreamPipe extends Thread { InputStream in; OutputStream out; StreamPipe(InputStream in, OutputStream out) { this.in = in; this.out = out; } public void run() { try { byte[] buf = new byte[1024]; int nofb = this.in.read(buf); while (nofb != -1) { this.out.write(buf, 0, nofb); nofb = this.in.read(buf); } } catch (IOException e) { e.printStackTrace(); } } } import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShellActivity> { private final static String LOGTAG = "LoadTest"; private final static String LOAD_TEST_RESULT = "/sdcard/load_test_result.txt"; private boolean mFinished; static final String LOAD_TEST_RUNNER_FILES[] = { "run_page_cycler.py" }; public LoadTestsAutoTest() { super("com.android.dumprendertree", TestShellActivity.class); Loading @@ -77,7 +59,7 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel // Invokes running of layout tests // and waits till it has finished running. public void runTest() { public void runPageCyclerTest() { LayoutTestsAutoRunner runner = (LayoutTestsAutoRunner) getInstrumentation(); if (runner.mTestPath == null) { Loading @@ -92,35 +74,54 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel // TODO(fqian): let am instrumentation pass in the command line, currently // am instrument does not allow spaces in the command. runPostShellCommand("/system/bin/dumpsys meminfo"); dumpMemoryInfo(); // Kill activity activity.finish(); } private void runPostShellCommand(String cmd) { if (cmd == null || cmd.length() == 0) return; private void dumpMemoryInfo() { try { // Call dumpsys meminfo Process proc = Runtime.getRuntime().exec(cmd); // Append output to LOAD_TEST_RESULT InputStream input = proc.getInputStream(); InputStream error = proc.getErrorStream(); FileOutputStream out = new FileOutputStream(LOAD_TEST_RESULT, true); Log.v(LOGTAG, "Dumping memory information."); StreamPipe p_in = new StreamPipe(input, out); StreamPipe p_err = new StreamPipe(error, System.err); p_in.start(); p_err.start(); proc.waitFor(); FileOutputStream out = new FileOutputStream(LOAD_TEST_RESULT, true); PrintStream ps = new PrintStream(out); MemoryInfo mi = new MemoryInfo(); Debug.getMemoryInfo(mi); //try to fake the dumpsys format //this will eventually be changed to XML String format = "%15s:%9d%9d%9d%9d"; String pss = String.format(format, "(Pss)", mi.nativePss, mi.dalvikPss, mi.otherPss, mi.nativePss + mi.dalvikPss + mi.otherPss); String sd = String.format(format, "(shared dirty)", mi.nativeSharedDirty, mi.dalvikSharedDirty, mi.otherSharedDirty, mi.nativeSharedDirty + mi.dalvikSharedDirty + mi.otherSharedDirty); String pd = String.format(format, "(priv dirty)", mi.nativePrivateDirty, mi.dalvikPrivateDirty, mi.otherPrivateDirty, mi.nativePrivateDirty + mi.dalvikPrivateDirty + mi.otherPrivateDirty); ps.print("\n\n\n"); ps.println("** MEMINFO in pid 0 [com.android.dumprendertree] **"); ps.println(" native dalvik other total"); ps.println(" size: 12060 5255 N/A 17315"); ps.println(" allocated: 12060 5255 N/A 17315"); ps.println(" free: 12060 5255 N/A 17315"); ps.println(pss); ps.println(sd); ps.println(pd); ps.print("\n\n\n"); ps.flush(); ps.close(); out.flush(); out.close(); } catch (IOException e) { Log.e(LOGTAG, e.getMessage()); } catch (InterruptedException e) { Log.e(LOGTAG, e.getMessage()); } } Loading @@ -129,11 +130,13 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel activity.setCallback(new TestShellCallback() { public void finished() { synchronized (LoadTestsAutoTest.this) { mFinished = true; LoadTestsAutoTest.this.notifyAll(); } } }); mFinished = false; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(activity, TestShellActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); Loading @@ -144,9 +147,38 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2<TestShel // Wait until done. synchronized (this) { while(!mFinished) { try { this.wait(); } catch (InterruptedException e) { } } } } public void copyRunnerAssetsToCache() { try { String out_dir = getActivity().getApplicationContext() .getCacheDir().getPath() + "/"; for( int i=0; i< LOAD_TEST_RUNNER_FILES.length; i++) { InputStream in = getActivity().getAssets().open( LOAD_TEST_RUNNER_FILES[i]); OutputStream out = new FileOutputStream( out_dir + LOAD_TEST_RUNNER_FILES[i]); byte[] buf = new byte[2048]; int len; while ((len = in.read(buf)) >= 0 ) { out.write(buf, 0, len); } out.close(); in.close(); } }catch (IOException e) { e.printStackTrace(); } } }
tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ public class TestShellActivity extends Activity implements LayoutTestController if (mDialogStrings != null) os.write(mDialogStrings.toString().getBytes()); mDialogStrings = null; if (webkitData != null) os.write(webkitData.getBytes()); os.flush(); os.close(); Loading