Refactor: Now expected serial is stated in the test for added clarity.

This commit is contained in:
Samuel Carlsson 2014-03-20 17:22:05 +01:00
parent 1ff8504e3d
commit 59cc2e9d1e
6 changed files with 72 additions and 24 deletions

View File

@ -4,4 +4,6 @@ package se.vidstige.jadb.server;
* Created by vidstige on 20/03/14.
*/
public interface AdbDeviceResponder {
String getSerial();
String getType();
}

View File

@ -8,11 +8,13 @@ import java.net.Socket;
import java.nio.charset.Charset;
public class AdbProtocolHandler implements Runnable {
private Socket socket;
private final Socket socket;
private final AdbResponder responder;
public AdbProtocolHandler(Socket socket) {
public AdbProtocolHandler(Socket socket, AdbResponder responder) {
this.socket = socket;
}
this.responder = responder;
}
@Override
public void run()
@ -28,34 +30,33 @@ public class AdbProtocolHandler implements Runnable {
byte[] buffer = new byte[4];
input.readFully(buffer);
String encodedLength = new String(buffer, Charset.forName("utf-8"));
System.out.println("DEBUG: " + encodedLength);
int length = Integer.parseInt(encodedLength, 16);
buffer = new byte[length];
input.readFully(buffer);
String command = new String(buffer, Charset.forName("utf-8"));
System.out.println("Command: " + command);
responder.onCommand(command);
if ("host:version".equals(command)) {
output.write("OKAY");
send(output, "001F"); // version. required to be 31
System.out.println("OK");
send(output, String.format("%04x", responder.getVersion()));
}
else if ("host:transport-any".equals(command))
{
output.write("OKAY");
System.out.println("OK");
}
else if ("host:devices".equals(command)) {
output.write("OKAY");
send(output, "X\tdevice\nY\tdevice");
System.out.println("OK");
for (AdbDeviceResponder d : responder.getDevices())
{
send(output, d.getSerial() + "\t" + d.getType() + "\n");
}
}
else
{
output.write("FAIL");
send(output, "Unknown command: " + command);
System.out.println("FAIL");
}
output.flush();
}

View File

@ -1,7 +1,14 @@
package se.vidstige.jadb.server;
import java.util.List;
/**
* Created by vidstige on 20/03/14.
*/
public interface AdbResponder {
void onCommand(String command);
int getVersion();
List<AdbDeviceResponder> getDevices();
}

View File

@ -8,24 +8,20 @@ import java.net.Socket;
public class AdbServer extends SocketServer {
public static final int DEFAULT_PORT = 15037;
private AdbResponder responder;
public AdbServer()
public AdbServer(AdbResponder responder)
{
this(DEFAULT_PORT);
this(responder, DEFAULT_PORT);
}
public AdbServer(int port) {
public AdbServer(AdbResponder responder, int port) {
super(port);
this.responder = responder;
}
@Override
protected Runnable createResponder(Socket socket) {
return new AdbProtocolHandler(socket);
}
public static void main(String[] args)
{
SocketServer server = new AdbServer();
server.run();
return new AdbProtocolHandler(socket, responder);
}
}

View File

@ -32,7 +32,8 @@ public class MockedTestCases {
@Test
public void testListDevices() throws Exception {
server.add("serial-123");
List<JadbDevice> devices = connection.getDevices();
Assert.assertEquals("X", devices.get(0).getSerial());
Assert.assertEquals("serial-123", devices.get(0).getSerial());
}
}

View File

@ -5,15 +5,18 @@ import se.vidstige.jadb.server.AdbResponder;
import se.vidstige.jadb.server.AdbServer;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by vidstige on 2014-03-20.
*/
public class FakeAdbServer implements AdbResponder, AdbDeviceResponder {
public class FakeAdbServer implements AdbResponder {
private final AdbServer server;
private List<AdbDeviceResponder> devices = new ArrayList<AdbDeviceResponder>();
public FakeAdbServer(int port) {
server = new AdbServer(port);
server = new AdbServer(this, port);
}
@ -24,4 +27,42 @@ public class FakeAdbServer implements AdbResponder, AdbDeviceResponder {
public void stop() throws IOException, InterruptedException {
server.stop();
}
@Override
public void onCommand(String command) {
System.out.println("command: " +command);
}
@Override
public int getVersion() {
return 31;
}
public void add(String serial)
{
devices.add(new DeviceResponder(serial));
}
@Override
public List<AdbDeviceResponder> getDevices() {
return devices;
}
private static class DeviceResponder implements AdbDeviceResponder {
private final String serial;
private DeviceResponder(String serial) {
this.serial = serial;
}
@Override
public String getSerial() {
return serial;
}
@Override
public String getType() {
return "device";
}
}
}