add udp one copy to app
This commit is contained in:
parent
51a5036f0e
commit
ffa270c0b0
|
|
@ -75,6 +75,7 @@ class MainActivity extends Activity {
|
||||||
protected static String binary_TX_Normal;
|
protected static String binary_TX_Normal;
|
||||||
protected static String binary_TX_NormalUDP;
|
protected static String binary_TX_NormalUDP;
|
||||||
protected static String binary_TX_Sendfile;
|
protected static String binary_TX_Sendfile;
|
||||||
|
protected static String binary_TX_UDPSendfile;
|
||||||
protected static String binary_TX_Splice;
|
protected static String binary_TX_Splice;
|
||||||
protected static String binary_TX_RawNormal;
|
protected static String binary_TX_RawNormal;
|
||||||
protected static final String binary_TX_RawSplice = "";
|
protected static final String binary_TX_RawSplice = "";
|
||||||
|
|
@ -87,6 +88,7 @@ class MainActivity extends Activity {
|
||||||
protected static boolean isRunning_TX_Normal = false;
|
protected static boolean isRunning_TX_Normal = false;
|
||||||
protected static boolean isRunning_TX_NormalUDP = false;
|
protected static boolean isRunning_TX_NormalUDP = false;
|
||||||
protected static boolean isRunning_TX_Sendfile = false;
|
protected static boolean isRunning_TX_Sendfile = false;
|
||||||
|
protected static boolean isRunning_TX_UDPSendfile = false;
|
||||||
protected static boolean isRunning_TX_Splice = false;
|
protected static boolean isRunning_TX_Splice = false;
|
||||||
protected static boolean isRunning_TX_RawNormal = false;
|
protected static boolean isRunning_TX_RawNormal = false;
|
||||||
protected static boolean isRunning_TX_RawSplice = false;
|
protected static boolean isRunning_TX_RawSplice = false;
|
||||||
|
|
@ -128,6 +130,7 @@ class MainActivity extends Activity {
|
||||||
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_Normal).waitFor();
|
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_Normal).waitFor();
|
||||||
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_NormalUDP).waitFor();
|
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_NormalUDP).waitFor();
|
||||||
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_Sendfile).waitFor();
|
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_Sendfile).waitFor();
|
||||||
|
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_UDPSendfile).waitFor();
|
||||||
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_Splice).waitFor();
|
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_Splice).waitFor();
|
||||||
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_RawNormal).waitFor();
|
Runtime.getRuntime().exec("su -c killall -9 " + binary_TX_RawNormal).waitFor();
|
||||||
Runtime.getRuntime().exec("su -c killall -9 " + binary_RX_Normal).waitFor();
|
Runtime.getRuntime().exec("su -c killall -9 " + binary_RX_Normal).waitFor();
|
||||||
|
|
@ -149,6 +152,8 @@ class MainActivity extends Activity {
|
||||||
missingFiles += " " + binary_TX_NormalUDP;
|
missingFiles += " " + binary_TX_NormalUDP;
|
||||||
if (!Utilities.fileExist(binaryFolderPath + binary_TX_Sendfile))
|
if (!Utilities.fileExist(binaryFolderPath + binary_TX_Sendfile))
|
||||||
missingFiles += " " + binary_TX_Sendfile;
|
missingFiles += " " + binary_TX_Sendfile;
|
||||||
|
if (!Utilities.fileExist(binaryFolderPath + binary_TX_UDPSendfile))
|
||||||
|
missingFiles += " " + binary_TX_UDPSendfile;
|
||||||
if (!Utilities.fileExist(binaryFolderPath + binary_TX_Splice))
|
if (!Utilities.fileExist(binaryFolderPath + binary_TX_Splice))
|
||||||
missingFiles += " " + binary_TX_Splice;
|
missingFiles += " " + binary_TX_Splice;
|
||||||
if (!Utilities.fileExist(binaryFolderPath + binary_TX_RawNormal))
|
if (!Utilities.fileExist(binaryFolderPath + binary_TX_RawNormal))
|
||||||
|
|
@ -229,7 +234,7 @@ class MainActivity extends Activity {
|
||||||
new DialogInterface.OnMultiChoiceClickListener() {
|
new DialogInterface.OnMultiChoiceClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
|
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
|
||||||
if (which == 5 || (flagRecv && which == 2) || (mVersion < 21 && which == 3)) {
|
if ((flagRecv && which == 2) || (mVersion < 21 && which == 3)) {
|
||||||
Toast.makeText(MainActivity.this, "not working", Toast.LENGTH_SHORT).show();
|
Toast.makeText(MainActivity.this, "not working", Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -485,7 +490,12 @@ class MainActivity extends Activity {
|
||||||
Thread.sleep(1005);
|
Thread.sleep(1005);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5: // rawsocket splice unimplemented
|
case 5: // udp sendfile
|
||||||
|
new Thread(new Thread_TX_CUDPSendfile()).start();
|
||||||
|
Thread.sleep(1005);
|
||||||
|
while (isRunning_TX_UDPSendfile) {
|
||||||
|
Thread.sleep(1005);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default: // do nothing
|
default: // do nothing
|
||||||
break;
|
break;
|
||||||
|
|
@ -609,6 +619,7 @@ class MainActivity extends Activity {
|
||||||
binary_TX_Normal = "client_send_normaltcp";
|
binary_TX_Normal = "client_send_normaltcp";
|
||||||
binary_TX_NormalUDP = "client_send_normaludp";
|
binary_TX_NormalUDP = "client_send_normaludp";
|
||||||
binary_TX_Sendfile = "client_send_normaltcp_sendfile";
|
binary_TX_Sendfile = "client_send_normaltcp_sendfile";
|
||||||
|
binary_TX_UDPSendfile = "client_send_normaludp_sendfile";
|
||||||
binary_TX_RawNormal = "client_send_bypassl3";
|
binary_TX_RawNormal = "client_send_bypassl3";
|
||||||
binary_TX_Splice = "client_send_normaltcp_splice";
|
binary_TX_Splice = "client_send_normaltcp_splice";
|
||||||
binary_RX_Normal = "client_recv_normaltcp";
|
binary_RX_Normal = "client_recv_normaltcp";
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,110 @@
|
||||||
|
package edu.ucsb.cs.sandlab.offloadingdemo;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by yanzi on 9/19/15.
|
||||||
|
* Updated on 01/27/17
|
||||||
|
*/
|
||||||
|
|
||||||
|
class Thread_TX_CUDPSendfile implements Runnable {
|
||||||
|
private double sentBytes = 0.0;
|
||||||
|
private double duration = 0.0;
|
||||||
|
private double throughput = 0.0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
// prevent multiple runs
|
||||||
|
if (MainActivity.isRunning_TX_UDPSendfile)
|
||||||
|
return;
|
||||||
|
MainActivity.isRunning_TX_UDPSendfile = true;
|
||||||
|
|
||||||
|
// variables
|
||||||
|
Process proc;
|
||||||
|
String stdout;
|
||||||
|
BufferedReader stdout_buf, error_buf;
|
||||||
|
String[] commd = new String[3];
|
||||||
|
|
||||||
|
// get the right command
|
||||||
|
commd[0] = "su";
|
||||||
|
commd[1] = "-c";
|
||||||
|
// ./client_send_normaludp_sendfile <bytes2send/file2send> <ip> <port>
|
||||||
|
// <[optional] bandwidth (bps)> <[optional] sendsize (Bytes)>
|
||||||
|
commd[2] = (MainActivity.isForcingCPU0?"taskset 1 ":"")
|
||||||
|
+ MainActivity.binaryFolderPath + MainActivity.binary_TX_UDPSendfile + " "
|
||||||
|
+ MainActivity.bytes2send + " "
|
||||||
|
+ (MainActivity.isLocal ? Utilities.myInetIP : MainActivity.remoteIP) + " "
|
||||||
|
+ Utilities.UDP_port + " "
|
||||||
|
+ ((MainActivity.currentBandwidth < 0) ? "" : String.valueOf(
|
||||||
|
MainActivity.currentBandwidth));
|
||||||
|
|
||||||
|
Log.d("TX_UDPSendfile", "Start TX UDP Sendfile");
|
||||||
|
try {
|
||||||
|
// run process
|
||||||
|
proc = Runtime.getRuntime().exec(commd);
|
||||||
|
|
||||||
|
// if config to log per process
|
||||||
|
while (MainActivity.isLoggingPerProcPID && MainActivity.perProcPID == -1) {
|
||||||
|
MainActivity.perProcPID = Utilities.getMyPID(
|
||||||
|
MainActivity.binary_TX_UDPSendfile, false);
|
||||||
|
}
|
||||||
|
proc.waitFor();
|
||||||
|
|
||||||
|
// read error
|
||||||
|
error_buf = new BufferedReader(new InputStreamReader(
|
||||||
|
proc.getErrorStream()));
|
||||||
|
final String error = error_buf.readLine(); // only one line error
|
||||||
|
|
||||||
|
// read std out
|
||||||
|
stdout_buf = new BufferedReader(new InputStreamReader(
|
||||||
|
proc.getInputStream()));
|
||||||
|
|
||||||
|
// get sent bytes
|
||||||
|
stdout = stdout_buf.readLine();
|
||||||
|
if (stdout == null) {
|
||||||
|
// error happens
|
||||||
|
MainActivity.myHandler.post(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
MainActivity.txt_results.append("Err in TX_UDP_Sendfile: " + error + "\n");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// sent bytes
|
||||||
|
sentBytes = Utilities.parseBinOutput(stdout);
|
||||||
|
|
||||||
|
// duration
|
||||||
|
stdout = stdout_buf.readLine();
|
||||||
|
duration = Utilities.parseBinOutput(stdout);
|
||||||
|
MainActivity.reportedFinishTime = duration;
|
||||||
|
|
||||||
|
// throughput
|
||||||
|
stdout = stdout_buf.readLine();
|
||||||
|
throughput = Utilities.parseBinOutput(stdout);
|
||||||
|
|
||||||
|
if (MainActivity.isVerbose) {
|
||||||
|
MainActivity.myHandler.post(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
MainActivity.txt_results.append("Sent " + sentBytes +
|
||||||
|
"bytes in " + duration +
|
||||||
|
"s (" +throughput/Utilities.oneMB +"Mbps)\n");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (IOException | InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.d("TX_UDPSendfile", "Stop TX UDP Sendfile");
|
||||||
|
|
||||||
|
MainActivity.isRunning_TX_UDPSendfile = false;
|
||||||
|
MainActivity.perProcPID = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -46,7 +46,8 @@ class Utilities {
|
||||||
|
|
||||||
// predefined selections
|
// predefined selections
|
||||||
static CharSequence[] existedItems = new CharSequence[] {
|
static CharSequence[] existedItems = new CharSequence[] {
|
||||||
"Socket_Normal", "Socket_NormalUDP", "Socket_Sendfile", "Socket_Splice", "RawSocket_Normal"
|
"Socket_Normal", "Socket_NormalUDP", "Socket_Sendfile",
|
||||||
|
"Socket_Splice", "RawSocket_Normal", "Socket_UDPSendfile"
|
||||||
};
|
};
|
||||||
static CharSequence[] existedItemsThrpt = new CharSequence[]{
|
static CharSequence[] existedItemsThrpt = new CharSequence[]{
|
||||||
"800Mbps", "760Mbps", "720Mbps", "680Mbps", "640Mbps", "600Mbps", "560Mbps",// 0-6
|
"800Mbps", "760Mbps", "720Mbps", "680Mbps", "640Mbps", "600Mbps", "560Mbps",// 0-6
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
loc=/Users/yanzi/GDrive/UCSB/Projects/Offloading_2017/Data/$1;
|
||||||
|
|
||||||
|
if [ ! -d $loc ]; then
|
||||||
|
mkdir -p $loc;
|
||||||
|
fi
|
||||||
|
|
||||||
|
for file in $(adb shell ls /sdcard/SSLogger/*.tar.gz | tr -d '\r'); do
|
||||||
|
echo $file;
|
||||||
|
adb pull $file $loc;
|
||||||
|
done
|
||||||
|
|
||||||
|
adb shell rm /sdcard/SSLogger/*.tar.gz
|
||||||
|
|
@ -7,6 +7,8 @@ cd client_send_bypassl3 && make
|
||||||
cd ../
|
cd ../
|
||||||
cd client_send_normaludp && make
|
cd client_send_normaludp && make
|
||||||
cd ../
|
cd ../
|
||||||
|
cd client_send_normaludp_sendfile && make
|
||||||
|
cd ../
|
||||||
cd client_send_normaltcp && make
|
cd client_send_normaltcp && make
|
||||||
cd ../
|
cd ../
|
||||||
# client read file only
|
# client read file only
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ adb push ../offloading_binaries/client_recv_normaltcp/client_recv_normaltcp /dat
|
||||||
adb push ../offloading_binaries/client_recv_normaludp/client_recv_normaludp /data/local/tmp/
|
adb push ../offloading_binaries/client_recv_normaludp/client_recv_normaludp /data/local/tmp/
|
||||||
adb push ../offloading_binaries/server_recv_normaltcp/server_m_recv_normaltcp /data/local/tmp/
|
adb push ../offloading_binaries/server_recv_normaltcp/server_m_recv_normaltcp /data/local/tmp/
|
||||||
adb push ../offloading_binaries/server_recv_normaludp/server_m_recv_normaludp /data/local/tmp/
|
adb push ../offloading_binaries/server_recv_normaludp/server_m_recv_normaludp /data/local/tmp/
|
||||||
|
adb push ../offloading_binaries/client_send_normaludp_sendfile/client_send_normaludp_sendfile /data/local/tmp/
|
||||||
echo "* Pushing tcpdump 4.8.1"
|
echo "* Pushing tcpdump 4.8.1"
|
||||||
adb push tcpdump /data/local/tmp/
|
adb push tcpdump /data/local/tmp/
|
||||||
echo "* Change permission"
|
echo "* Change permission"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue