Merge changes Ic62f60d9,I04a01634
* changes: Provide a useful message in DumpRenderTree2 GUI when the host server is not running Prevent DumpRenderTree2 from crashing when the host server is not running
This commit is contained in:
@@ -223,10 +223,9 @@ public class FsUtils {
|
||||
try {
|
||||
return getHttpClient().execute(httpRequest, handler);
|
||||
} catch (IOException e) {
|
||||
Log.e(LOG_TAG, "url=" + url, e);
|
||||
Log.e(LOG_TAG, "getLayoutTestsDirContents(): HTTP GET failed for URL " + url);
|
||||
return null;
|
||||
}
|
||||
|
||||
return new LinkedList<String>();
|
||||
}
|
||||
|
||||
public static void closeInputStream(InputStream inputStream) {
|
||||
@@ -248,4 +247,4 @@ public class FsUtils {
|
||||
Log.e(LOG_TAG, "Couldn't close stream!", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.os.Message;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A Thread that is responsible for generating a lists of tests to run.
|
||||
@@ -35,7 +36,7 @@ public class TestsListPreloaderThread extends Thread {
|
||||
private FileFilter mFileFilter;
|
||||
|
||||
/**
|
||||
* A relative path to the folder with the tests we want to run or particular test.
|
||||
* A relative path to the directory with the tests we want to run or particular test.
|
||||
* Used up to and including preloadTests().
|
||||
*/
|
||||
private String mRelativePath;
|
||||
@@ -67,40 +68,44 @@ public class TestsListPreloaderThread extends Thread {
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads all the tests from the given folders and all the subfolders
|
||||
* Loads all the tests from the given directories and all the subdirectories
|
||||
* into mTestsList.
|
||||
*
|
||||
* @param dirRelativePath
|
||||
*/
|
||||
private void loadTestsFromUrl(String dirRelativePath) {
|
||||
LinkedList<String> foldersList = new LinkedList<String>();
|
||||
foldersList.add(dirRelativePath);
|
||||
private void loadTestsFromUrl(String rootRelativePath) {
|
||||
LinkedList<String> directoriesList = new LinkedList<String>();
|
||||
directoriesList.add(rootRelativePath);
|
||||
|
||||
String relativePath;
|
||||
String itemName;
|
||||
while (!foldersList.isEmpty()) {
|
||||
relativePath = foldersList.removeFirst();
|
||||
while (!directoriesList.isEmpty()) {
|
||||
relativePath = directoriesList.removeFirst();
|
||||
|
||||
for (String folderRelativePath : FsUtils.getLayoutTestsDirContents(relativePath,
|
||||
false, true)) {
|
||||
itemName = new File(folderRelativePath).getName();
|
||||
if (FileFilter.isTestDir(itemName)) {
|
||||
foldersList.add(folderRelativePath);
|
||||
List<String> dirRelativePaths = FsUtils.getLayoutTestsDirContents(relativePath, false, true);
|
||||
if (dirRelativePaths != null) {
|
||||
for (String dirRelativePath : dirRelativePaths) {
|
||||
itemName = new File(dirRelativePath).getName();
|
||||
if (FileFilter.isTestDir(itemName)) {
|
||||
directoriesList.add(dirRelativePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (String testRelativePath : FsUtils.getLayoutTestsDirContents(relativePath,
|
||||
false, false)) {
|
||||
itemName = new File(testRelativePath).getName();
|
||||
if (FileFilter.isTestFile(itemName)) {
|
||||
/** We chose to skip all the tests that are expected to crash. */
|
||||
if (!mFileFilter.isCrash(testRelativePath)) {
|
||||
mTestsList.add(testRelativePath);
|
||||
} else {
|
||||
/**
|
||||
* TODO: Summarizer is now in service - figure out how to send the info.
|
||||
* Previously: mSummarizer.addSkippedTest(relativePath);
|
||||
*/
|
||||
List<String> testRelativePaths = FsUtils.getLayoutTestsDirContents(relativePath, false, false);
|
||||
if (testRelativePaths != null) {
|
||||
for (String testRelativePath : testRelativePaths) {
|
||||
itemName = new File(testRelativePath).getName();
|
||||
if (FileFilter.isTestFile(itemName)) {
|
||||
/** We choose to skip all the tests that are expected to crash. */
|
||||
if (!mFileFilter.isCrash(testRelativePath)) {
|
||||
mTestsList.add(testRelativePath);
|
||||
} else {
|
||||
/**
|
||||
* TODO: Summarizer is now in service - figure out how to send the info.
|
||||
* Previously: mSummarizer.addSkippedTest(relativePath);
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,15 +40,10 @@ public class AdbUtils {
|
||||
* remote machine. This can be achieved by calling configureSocket()
|
||||
*
|
||||
* @return a socket that can be configured to link to remote machine
|
||||
* @throws IOException
|
||||
*/
|
||||
public static Socket createSocket() {
|
||||
Socket socket = null;
|
||||
try {
|
||||
socket = new Socket(ADB_HOST, ADB_PORT);
|
||||
} catch (IOException e) {
|
||||
Log.e(LOG_TAG, "Creation failed.", e);
|
||||
}
|
||||
return socket;
|
||||
public static Socket createSocket() throws IOException{
|
||||
return new Socket(ADB_HOST, ADB_PORT);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,9 +67,9 @@ public class AdbUtils {
|
||||
outputStream.write(cmd.getBytes());
|
||||
int read = inputStream.read(buf);
|
||||
if (read != ADB_RESPONSE_SIZE || !ADB_OK.equals(new String(buf))) {
|
||||
Log.w(LOG_TAG, "adb cmd faild.");
|
||||
Log.w(LOG_TAG, "adb cmd failed.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,8 @@ public class ConnectionHandler {
|
||||
|
||||
private OnFinishedCallback mOnFinishedCallback;
|
||||
|
||||
public ConnectionHandler(String remoteMachineIp, int port, Socket fromSocket, Socket toSocket) {
|
||||
public ConnectionHandler(String remoteMachineIp, int port, Socket fromSocket, Socket toSocket)
|
||||
throws IOException {
|
||||
mRemoteMachineIpAddress = remoteMachineIp;
|
||||
mPort = port;
|
||||
|
||||
@@ -105,14 +106,12 @@ public class ConnectionHandler {
|
||||
mToSocketInputStream = mToSocket.getInputStream();
|
||||
mFromSocketOutputStream = mFromSocket.getOutputStream();
|
||||
mToSocketOutputStream = mToSocket.getOutputStream();
|
||||
if (!AdbUtils.configureConnection(mToSocketInputStream, mToSocketOutputStream,
|
||||
mRemoteMachineIpAddress, mPort)) {
|
||||
throw new IOException("Configuring socket failed!");
|
||||
}
|
||||
AdbUtils.configureConnection(mToSocketInputStream, mToSocketOutputStream,
|
||||
mRemoteMachineIpAddress, mPort);
|
||||
} catch (IOException e) {
|
||||
Log.e(LOG_TAG, "Unable to start ConnectionHandler", e);
|
||||
closeStreams();
|
||||
return;
|
||||
throw e;
|
||||
}
|
||||
|
||||
mFromToPipe = new SocketPipeThread(mFromSocketInputStream, mToSocketOutputStream);
|
||||
@@ -170,4 +169,4 @@ public class ConnectionHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,6 @@ public class Forwarder extends Thread {
|
||||
public void run() {
|
||||
while (true) {
|
||||
Socket localSocket;
|
||||
Socket remoteSocket;
|
||||
try {
|
||||
localSocket = mServerSocket.accept();
|
||||
} catch (IOException e) {
|
||||
@@ -70,24 +69,28 @@ public class Forwarder extends Thread {
|
||||
break;
|
||||
}
|
||||
|
||||
remoteSocket = AdbUtils.createSocket();
|
||||
|
||||
if (remoteSocket == null) {
|
||||
Socket remoteSocket = null;
|
||||
final ConnectionHandler connectionHandler;
|
||||
try {
|
||||
remoteSocket = AdbUtils.createSocket();
|
||||
connectionHandler = new ConnectionHandler(
|
||||
mRemoteMachineIpAddress, mPort, localSocket, remoteSocket);
|
||||
} catch (IOException exception) {
|
||||
try {
|
||||
localSocket.close();
|
||||
} catch (IOException e) {
|
||||
Log.e(LOG_TAG, "mPort=" + mPort, e);
|
||||
}
|
||||
|
||||
Log.e(LOG_TAG, "run(): mPort= " + mPort + " Failed to start forwarding from " +
|
||||
localSocket);
|
||||
if (remoteSocket != null) {
|
||||
try {
|
||||
remoteSocket.close();
|
||||
} catch (IOException e) {
|
||||
Log.e(LOG_TAG, "mPort=" + mPort, e);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
final ConnectionHandler connectionHandler =
|
||||
new ConnectionHandler(mRemoteMachineIpAddress, mPort, localSocket,
|
||||
remoteSocket);
|
||||
|
||||
/**
|
||||
* We have to close the sockets after the ConnectionHandler finishes, so we
|
||||
* don't get "Too may open files" exception. We also remove the ConnectionHandler
|
||||
@@ -126,4 +129,4 @@ public class Forwarder extends Thread {
|
||||
Log.e(LOG_TAG, "mPort=" + mPort, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -69,6 +70,9 @@ public class DirListActivity extends ListActivity {
|
||||
private static final int MSG_LOADED_ITEMS = 0;
|
||||
private static final int MSG_SHOW_PROGRESS_DIALOG = 1;
|
||||
|
||||
private static final CharSequence NO_RESPONSE_MESSAGE =
|
||||
"No response from host when getting directory contents. Is the host server running?";
|
||||
|
||||
/** Initialized lazily before first sProgressDialog.show() */
|
||||
private static ProgressDialog sProgressDialog;
|
||||
|
||||
@@ -349,13 +353,18 @@ public class DirListActivity extends ListActivity {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
if (msg.what == MSG_LOADED_ITEMS) {
|
||||
setListAdapter(new DirListAdapter(DirListActivity.this,
|
||||
(ListItem[])msg.obj));
|
||||
delayedDialogHandler.removeMessages(MSG_SHOW_PROGRESS_DIALOG);
|
||||
setTitle(shortenTitle(mCurrentDirPath));
|
||||
delayedDialogHandler.removeMessages(MSG_SHOW_PROGRESS_DIALOG);
|
||||
if (sProgressDialog != null) {
|
||||
sProgressDialog.dismiss();
|
||||
}
|
||||
if (msg.obj == null) {
|
||||
Toast.makeText(DirListActivity.this, NO_RESPONSE_MESSAGE,
|
||||
Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
setListAdapter(new DirListAdapter(DirListActivity.this,
|
||||
(ListItem[])msg.obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
@@ -389,15 +398,21 @@ public class DirListActivity extends ListActivity {
|
||||
List<ListItem> subDirs = new ArrayList<ListItem>();
|
||||
List<ListItem> subFiles = new ArrayList<ListItem>();
|
||||
|
||||
for (String dirRelativePath : FsUtils.getLayoutTestsDirContents(dirPath, false,
|
||||
true)) {
|
||||
List<String> dirRelativePaths = FsUtils.getLayoutTestsDirContents(dirPath, false, true);
|
||||
if (dirRelativePaths == null) {
|
||||
return null;
|
||||
}
|
||||
for (String dirRelativePath : dirRelativePaths) {
|
||||
if (FileFilter.isTestDir(new File(dirRelativePath).getName())) {
|
||||
subDirs.add(new ListItem(dirRelativePath, true));
|
||||
}
|
||||
}
|
||||
|
||||
for (String testRelativePath : FsUtils.getLayoutTestsDirContents(dirPath, false,
|
||||
false)) {
|
||||
List<String> testRelativePaths = FsUtils.getLayoutTestsDirContents(dirPath, false, false);
|
||||
if (testRelativePaths == null) {
|
||||
return null;
|
||||
}
|
||||
for (String testRelativePath : testRelativePaths) {
|
||||
if (FileFilter.isTestFile(new File(testRelativePath).getName())) {
|
||||
subFiles.add(new ListItem(testRelativePath, false));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user