am a5526468: Merge change 25250 into eclair
Merge commit 'a5526468a38289cc17b231c0d0eca918e34ede49' into eclair-plus-aosp * commit 'a5526468a38289cc17b231c0d0eca918e34ede49': Refactor logic for starting forward servers and http test cases hacking, so that they can be shared between automated test mode and UI launch mode.
This commit is contained in:
@@ -1,5 +1,23 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.dumprendertree;
|
||||
|
||||
import com.android.dumprendertree.forwarder.ForwardService;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
@@ -12,6 +30,12 @@ import java.io.IOException;
|
||||
public class FsUtils {
|
||||
|
||||
private static final String LOGTAG = "FsUtils";
|
||||
static final String HTTP_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/";
|
||||
static final String HTTPS_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/ssl/";
|
||||
static final String HTTP_LOCAL_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/local/";
|
||||
static final String HTTP_MEDIA_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/media/";
|
||||
static final String HTTP_WML_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/wml/";
|
||||
|
||||
private FsUtils() {
|
||||
//no creation of instances
|
||||
}
|
||||
@@ -77,4 +101,24 @@ public class FsUtils {
|
||||
return status;
|
||||
}
|
||||
|
||||
public static String getTestUrl(String path) {
|
||||
String url = null;
|
||||
if (!path.startsWith(HTTP_TESTS_PREFIX)) {
|
||||
url = "file://" + path;
|
||||
} else {
|
||||
ForwardService.getForwardService().startForwardService();
|
||||
if (path.startsWith(HTTPS_TESTS_PREFIX)) {
|
||||
// still cut the URL after "http/tests/"
|
||||
url = "https://127.0.0.1:8443/" + path.substring(HTTP_TESTS_PREFIX.length());
|
||||
} else if (!path.startsWith(HTTP_LOCAL_TESTS_PREFIX)
|
||||
&& !path.startsWith(HTTP_MEDIA_TESTS_PREFIX)
|
||||
&& !path.startsWith(HTTP_WML_TESTS_PREFIX)) {
|
||||
url = "http://127.0.0.1:8000/" + path.substring(HTTP_TESTS_PREFIX.length());
|
||||
} else {
|
||||
url = "file://" + path;
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.dumprendertree;
|
||||
import com.android.dumprendertree.TestShellActivity.DumpDataType;
|
||||
import com.android.dumprendertree.forwarder.AdbUtils;
|
||||
import com.android.dumprendertree.forwarder.ForwardServer;
|
||||
import com.android.dumprendertree.forwarder.ForwardService;
|
||||
|
||||
import android.app.Instrumentation;
|
||||
import android.content.Intent;
|
||||
@@ -143,17 +144,6 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
|
||||
static final String LAYOUT_RESULTS_CRASHED_RESULT_FILE = "results/layout_tests_crashed.txt";
|
||||
static final String LAYOUT_TESTS_RUNNER = "run_layout_tests.py";
|
||||
|
||||
static final String HTTP_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/";
|
||||
static final String HTTPS_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/ssl/";
|
||||
static final String HTTP_LOCAL_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/local/";
|
||||
static final String HTTP_MEDIA_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/media/";
|
||||
static final String HTTP_WML_TESTS_PREFIX = "/sdcard/android/layout_tests/http/tests/wml/";
|
||||
|
||||
|
||||
static final String DEFAULT_TEST_HOST = "android-browser-test.mtv.corp.google.com";
|
||||
static final String FORWARD_HOST_CONF = "/sdcard/drt_forward_host.txt";
|
||||
private ForwardServer fs8000, fs8080, fs8443;
|
||||
|
||||
private MyTestRecorder mResultRecorder;
|
||||
private Vector<String> mTestList;
|
||||
private boolean mRebaselineResults;
|
||||
@@ -162,45 +152,6 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
|
||||
|
||||
public LayoutTestsAutoTest() {
|
||||
super("com.android.dumprendertree", TestShellActivity.class);
|
||||
|
||||
int addr = getForwardHostAddr();
|
||||
if(addr != -1) {
|
||||
fs8000 = new ForwardServer(8000, addr, 8000);
|
||||
fs8080 = new ForwardServer(8080, addr, 8080);
|
||||
fs8443 = new ForwardServer(8443, addr, 8443);
|
||||
}
|
||||
}
|
||||
|
||||
private int getForwardHostAddr() {
|
||||
int addr = -1;
|
||||
String host = null;
|
||||
File forwardHostConf = new File(FORWARD_HOST_CONF);
|
||||
if (forwardHostConf.isFile()) {
|
||||
BufferedReader hostReader = null;
|
||||
try {
|
||||
hostReader = new BufferedReader(new FileReader(forwardHostConf));
|
||||
host = hostReader.readLine();
|
||||
Log.v(LOGTAG, "read forward host from file: " + host);
|
||||
} catch (IOException ioe) {
|
||||
Log.v(LOGTAG, "cannot read forward host from file", ioe);
|
||||
} finally {
|
||||
if (hostReader != null) {
|
||||
try {
|
||||
hostReader.close();
|
||||
} catch (IOException ioe) {
|
||||
// burn!!!
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (host == null || host.length() == 0)
|
||||
host = DEFAULT_TEST_HOST;
|
||||
try {
|
||||
addr = AdbUtils.resolve(host);
|
||||
} catch (IOException ioe) {
|
||||
Log.e(LOGTAG, "failed to resolve server address", ioe);
|
||||
}
|
||||
return addr;
|
||||
}
|
||||
|
||||
// This function writes the result of the layout test to
|
||||
@@ -366,7 +317,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setClass(activity, TestShellActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
intent.putExtra(TestShellActivity.TEST_URL, getTestUrl(test));
|
||||
intent.putExtra(TestShellActivity.TEST_URL, FsUtils.getTestUrl(test));
|
||||
intent.putExtra(TestShellActivity.RESULT_FILE, resultFile);
|
||||
intent.putExtra(TestShellActivity.TIMEOUT_IN_MILLIS, timeout);
|
||||
activity.startActivity(intent);
|
||||
@@ -450,49 +401,10 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2<TestSh
|
||||
}
|
||||
|
||||
FsUtils.updateTestStatus(TEST_STATUS_FILE, "#DONE");
|
||||
if(fs8000 != null)
|
||||
fs8000.stop();
|
||||
if(fs8080 != null)
|
||||
fs8080.stop();
|
||||
if(fs8443 != null)
|
||||
fs8443.stop();
|
||||
|
||||
ForwardService.getForwardService().stopForwardService();
|
||||
activity.finish();
|
||||
}
|
||||
|
||||
private void startForwardServerIfNeeded() {
|
||||
try {
|
||||
if(fs8000 != null)
|
||||
fs8000.start();
|
||||
if(fs8080 != null)
|
||||
fs8080.start();
|
||||
if(fs8443 != null)
|
||||
fs8443.start();
|
||||
} catch (IOException ioe) {
|
||||
Log.w(LOGTAG, "failed to start forwarder. http tests will fail.", ioe);
|
||||
}
|
||||
}
|
||||
|
||||
private String getTestUrl(String path) {
|
||||
String url = null;
|
||||
if (!path.startsWith(HTTP_TESTS_PREFIX)) {
|
||||
url = "file://" + path;
|
||||
} else {
|
||||
startForwardServerIfNeeded();
|
||||
if (path.startsWith(HTTPS_TESTS_PREFIX)) {
|
||||
// still cut the URL after "http/tests/"
|
||||
url = "https://127.0.0.1:8443/" + path.substring(HTTP_TESTS_PREFIX.length());
|
||||
} else if (!path.startsWith(HTTP_LOCAL_TESTS_PREFIX)
|
||||
&& !path.startsWith(HTTP_MEDIA_TESTS_PREFIX)
|
||||
&& !path.startsWith(HTTP_WML_TESTS_PREFIX)) {
|
||||
url = "http://127.0.0.1:8000/" + path.substring(HTTP_TESTS_PREFIX.length());
|
||||
} else {
|
||||
url = "file://" + path;
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
private String getTestPath() {
|
||||
LayoutTestsAutoRunner runner = (LayoutTestsAutoRunner) getInstrumentation();
|
||||
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.dumprendertree;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.dumprendertree;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.dumprendertree;
|
||||
|
||||
import com.android.dumprendertree.forwarder.ForwardService;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
@@ -184,6 +186,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
|
||||
} catch (IOException ioe) {
|
||||
Log.w(LOGTAG, "Failed to close test list file.", ioe);
|
||||
}
|
||||
ForwardService.getForwardService().stopForwardService();
|
||||
finished();
|
||||
}
|
||||
|
||||
@@ -215,10 +218,9 @@ public class TestShellActivity extends Activity implements LayoutTestController
|
||||
builder.create().show();
|
||||
return;
|
||||
}
|
||||
url = "file://" + url;
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
intent.putExtra(TestShellActivity.TEST_URL, url);
|
||||
intent.putExtra(TestShellActivity.TEST_URL, FsUtils.getTestUrl(url));
|
||||
intent.putExtra(TIMEOUT_IN_MILLIS, 10000);
|
||||
executeIntent(intent);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.dumprendertree.forwarder;
|
||||
|
||||
import android.util.Log;
|
||||
@@ -44,7 +60,6 @@ public class AdbUtils {
|
||||
DataInputStream dis = new DataInputStream(localSocket.getInputStream());
|
||||
OutputStream os = localSocket.getOutputStream();
|
||||
int count_read = 0;
|
||||
byte[] buf = new byte[128];
|
||||
|
||||
if (localSocket == null || dis == null || os == null)
|
||||
return -1;
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.dumprendertree.forwarder;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.dumprendertree.forwarder;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
public class ForwardService {
|
||||
|
||||
private ForwardServer fs8000, fs8080, fs8443;
|
||||
|
||||
private static ForwardService inst;
|
||||
|
||||
private static final String LOGTAG = "ForwardService";
|
||||
|
||||
private static final String DEFAULT_TEST_HOST = "android-browser-test.mtv.corp.google.com";
|
||||
|
||||
private static final String FORWARD_HOST_CONF = "/sdcard/drt_forward_host.txt";
|
||||
|
||||
private ForwardService() {
|
||||
int addr = getForwardHostAddr();
|
||||
if (addr != -1) {
|
||||
fs8000 = new ForwardServer(8000, addr, 8000);
|
||||
fs8080 = new ForwardServer(8080, addr, 8080);
|
||||
fs8443 = new ForwardServer(8443, addr, 8443);
|
||||
}
|
||||
}
|
||||
|
||||
public static ForwardService getForwardService() {
|
||||
if (inst == null) {
|
||||
inst = new ForwardService();
|
||||
}
|
||||
return inst;
|
||||
}
|
||||
|
||||
public void startForwardService() {
|
||||
try {
|
||||
if (fs8000 != null)
|
||||
fs8000.start();
|
||||
if (fs8080 != null)
|
||||
fs8080.start();
|
||||
if (fs8443 != null)
|
||||
fs8443.start();
|
||||
} catch (IOException ioe) {
|
||||
Log.w(LOGTAG, "failed to start forwarder. http tests will fail.", ioe);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void stopForwardService() {
|
||||
if (fs8000 != null) {
|
||||
fs8000.stop();
|
||||
fs8000 = null;
|
||||
}
|
||||
if (fs8080 != null) {
|
||||
fs8080.stop();
|
||||
fs8080 = null;
|
||||
}
|
||||
if (fs8443 != null) {
|
||||
fs8443.stop();
|
||||
fs8443 = null;
|
||||
}
|
||||
Log.v(LOGTAG, "forwarders stopped.");
|
||||
}
|
||||
|
||||
private static int getForwardHostAddr() {
|
||||
int addr = -1;
|
||||
String host = null;
|
||||
File forwardHostConf = new File(FORWARD_HOST_CONF);
|
||||
if (forwardHostConf.isFile()) {
|
||||
BufferedReader hostReader = null;
|
||||
try {
|
||||
hostReader = new BufferedReader(new FileReader(forwardHostConf));
|
||||
host = hostReader.readLine();
|
||||
Log.v(LOGTAG, "read forward host from file: " + host);
|
||||
} catch (IOException ioe) {
|
||||
Log.v(LOGTAG, "cannot read forward host from file", ioe);
|
||||
} finally {
|
||||
if (hostReader != null) {
|
||||
try {
|
||||
hostReader.close();
|
||||
} catch (IOException ioe) {
|
||||
// burn!!!
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (host == null || host.length() == 0)
|
||||
host = DEFAULT_TEST_HOST;
|
||||
try {
|
||||
addr = AdbUtils.resolve(host);
|
||||
} catch (IOException ioe) {
|
||||
Log.e(LOGTAG, "failed to resolve server address", ioe);
|
||||
}
|
||||
return addr;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.dumprendertree.forwarder;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
Reference in New Issue
Block a user