Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c0221b8 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 972 into donut

* changes:
  Back-merge all changes done in master to DumpRenderTree to donut.
parents 22b8787e b933f669
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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)

+10 −18
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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();
                }
            }         
@@ -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);
@@ -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);
@@ -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();
+92 −60
Original line number Diff line number Diff line
@@ -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);
@@ -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) {
@@ -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());
        }
    }

@@ -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);
@@ -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();
        }

    }

}
+2 −1
Original line number Diff line number Diff line
@@ -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();