mirror of
https://github.com/revanced/jadb.git
synced 2024-11-19 10:39:23 +01:00
Adding basic fake AdbServer
This commit is contained in:
parent
4a6a908fba
commit
e538d58ddc
@ -21,7 +21,7 @@ public class AndroidDeviceTestCases {
|
||||
@Test(expected=JadbException.class)
|
||||
public void invalidShellCommand() throws Exception
|
||||
{
|
||||
JadbConnection jadb = new JadbConnection();
|
||||
JadbConnection jadb = new JadbConnection("localhost", 5037);
|
||||
List<AndroidDevice> devices = jadb.getDevices();
|
||||
AndroidDevice device = devices.get(0);
|
||||
device.executeShell("cmd", "foo", "bar");
|
||||
|
@ -7,6 +7,7 @@ import org.junit.Test;
|
||||
|
||||
import se.vidstige.jadb.AndroidDevice;
|
||||
import se.vidstige.jadb.JadbConnection;
|
||||
import se.vidstige.jadb.test.fakes.AdbServer;
|
||||
|
||||
public class JadbTestCases {
|
||||
|
||||
@ -19,7 +20,8 @@ public class JadbTestCases {
|
||||
@Test
|
||||
public void testGetDevices() throws Exception
|
||||
{
|
||||
JadbConnection jadb = new JadbConnection();
|
||||
JadbConnection jadb = new JadbConnection("localhost", 15037);
|
||||
//JadbConnection jadb = new JadbConnection();
|
||||
List<AndroidDevice> actual = jadb.getDevices();
|
||||
Assert.assertEquals("emulator-5554", actual.get(0).getSerial());
|
||||
}
|
||||
|
55
test/se/vidstige/jadb/test/fakes/AdbResponder.java
Normal file
55
test/se/vidstige/jadb/test/fakes/AdbResponder.java
Normal file
@ -0,0 +1,55 @@
|
||||
package se.vidstige.jadb.test.fakes;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutput;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.net.Socket;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
public class AdbResponder implements Runnable {
|
||||
private Socket socket;
|
||||
|
||||
public AdbResponder(Socket socket) {
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
try {
|
||||
System.out.println("Serving client");
|
||||
DataInput input = new DataInputStream(socket.getInputStream());
|
||||
OutputStreamWriter output = new OutputStreamWriter(socket.getOutputStream());
|
||||
byte[] buffer = new byte[4];
|
||||
input.readFully(buffer);
|
||||
String encodedLength = new String(buffer, Charset.forName("utf-8"));
|
||||
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);
|
||||
|
||||
if ("host.devices".equals(command)) {
|
||||
output.write("OKAY");
|
||||
send(output, "X\tdevice\nY\tdevice");
|
||||
}
|
||||
output.write("FAIL");
|
||||
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
|
||||
private String getCommandLength(String command) {
|
||||
return String.format("%04x", Integer.valueOf(command.length()));
|
||||
}
|
||||
|
||||
public void send(OutputStreamWriter writer, String response) throws IOException {
|
||||
writer.write(getCommandLength(response));
|
||||
writer.write(response);
|
||||
writer.flush();
|
||||
}
|
||||
}
|
@ -1,5 +1,61 @@
|
||||
package se.vidstige.jadb.test.fakes;
|
||||
|
||||
public class AdbServer {
|
||||
import java.io.DataInput;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutput;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
public class AdbServer implements Runnable {
|
||||
|
||||
private int port = 15037;
|
||||
private ServerSocket socket;
|
||||
private Thread thread;
|
||||
private Object lockObject = new Object();
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
AdbServer server = new AdbServer();
|
||||
server.run();
|
||||
}
|
||||
|
||||
public void start() throws InterruptedException
|
||||
{
|
||||
thread = new Thread(this, "Fake Adb Server");
|
||||
thread.setDaemon(true);
|
||||
thread.start();
|
||||
synchronized (lockObject) {
|
||||
lockObject.wait();
|
||||
}
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
System.out.println("Starting on port " + port);
|
||||
socket = new ServerSocket(port);
|
||||
socket.setReuseAddress(true);
|
||||
|
||||
synchronized (lockObject) {
|
||||
lockObject.notify();
|
||||
}
|
||||
|
||||
while (true)
|
||||
{
|
||||
Socket c = socket.accept();
|
||||
Thread clientThread = new Thread(new AdbResponder(c), "AdbClientWorker");
|
||||
clientThread.setDaemon(true);
|
||||
clientThread.start();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user