Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
45d3766
Mobilyzer- add Cronet for QUIC
anaisanais Dec 13, 2015
e871cac
Revert "Mobilyzer- add Cronet for QUIC"
anaisanais Dec 13, 2015
8c91f95
Revert "Revert "Mobilyzer- add Cronet for QUIC""
anaisanais Dec 13, 2015
81acd8d
Mobilyzer- add Cronet for QUIC
nataliyazozulya Dec 13, 2015
d0fd703
Mobilyzer- add Cronet for QUIC
nataliyazozulya Dec 14, 2015
e5a3587
Mobilyzer- add Cronet for QUIC
nataliyazozulya Dec 15, 2015
f23e8b5
Mobilyzer- add Cronet for QUIC
nataliyazozulya Dec 15, 2015
497beff
Mobilyzer- add Cronet for QUIC
nataliyazozulya Dec 15, 2015
79dc4f0
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library
nataliyazozulya Dec 15, 2015
3aa0781
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library
nataliyazozulya Dec 15, 2015
3391473
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library
nataliyazozulya Dec 15, 2015
bc76cb5
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library
nataliyazozulya Dec 15, 2015
fb2dc6d
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library
nataliyazozulya Dec 15, 2015
aa1f35a
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library
nataliyazozulya Dec 15, 2015
46be839
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library
nataliyazozulya Dec 15, 2015
ac6f78d
Mobilyzer - add QuicHttpTask and CronetHttpTask, using Cronet library…
nataliyazozulya Dec 15, 2015
1775bb0
New Cronet version
anaisanais Dec 17, 2015
24b9030
Fixes for task scheduling
nataliyazozulya Dec 27, 2015
e82ea95
Fix getting ApplicationContext (use PhoneUtils function)
nataliyazozulya Dec 30, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Mobilyzer/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apply plugin: 'com.android.library'

android {
compileSdkVersion 19
buildToolsVersion "23.0.1"

defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}

sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
java.srcDirs = ['src']
}
}

lintOptions {
abortOnError false
}

}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:7.3.0'
compile project(':mobilibs:ExoPlayer:library')
}
Binary file added Mobilyzer/jniLibs/armeabi-v7a/libcronet.so
Binary file not shown.
Binary file removed Mobilyzer/libs/android-support-v4.jar
Binary file not shown.
Binary file added Mobilyzer/libs/cronet_api.jar
Binary file not shown.
Binary file added Mobilyzer/libs/cronet_java.jar
Binary file not shown.
Binary file added Mobilyzer/quiclibs/base_java.jar
Binary file not shown.
Binary file added Mobilyzer/quiclibs/jsr_305_javalib.jar
Binary file not shown.
Binary file added Mobilyzer/quiclibs/net_java.jar
Binary file not shown.
Binary file added Mobilyzer/quiclibs/url_java.jar
Binary file not shown.
54 changes: 53 additions & 1 deletion Mobilyzer/src/com/mobilyzer/MeasurementResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,14 @@
import android.os.Parcelable;
import android.util.StringBuilderPrinter;

import com.mobilyzer.measurements.CronetHttpTask;
import com.mobilyzer.measurements.CronetHttpTask.CronetHttpDesc;
import com.mobilyzer.measurements.DnsLookupTask;
import com.mobilyzer.measurements.HttpTask;
import com.mobilyzer.measurements.ParallelTask;
import com.mobilyzer.measurements.PingTask;
import com.mobilyzer.measurements.QuicHttpTask;
import com.mobilyzer.measurements.QuicHttpTask.QuicDesc;
import com.mobilyzer.measurements.RRCTask;
import com.mobilyzer.measurements.SequentialTask;
import com.mobilyzer.measurements.TCPThroughputTask;
Expand Down Expand Up @@ -247,7 +251,11 @@ public String toString() {
getPingResult(printer, values);
} else if (type.equals(HttpTask.TYPE)) {
getHttpResult(printer, values);
} else if (type.equals(DnsLookupTask.TYPE)) {
} else if (type.equals(CronetHttpTask.TYPE)) {
getCronetHttpResult(printer, values);
} else if (type.equals(QuicHttpTask.TYPE)) {
getQuicHttpResult(printer, values);
}else if (type.equals(DnsLookupTask.TYPE)) {
getDnsResult(printer, values);
} else if (type.equals(TracerouteTask.TYPE)) {
getTracerouteResult(printer, values);
Expand Down Expand Up @@ -333,6 +341,50 @@ private void getHttpResult(StringBuilderPrinter printer, HashMap<String, String>
}
}

private void getQuicHttpResult(StringBuilderPrinter printer, HashMap<String, String> values) {
QuicDesc desc = (QuicDesc) parameters;
printer.println("[QUIC]");
printer.println("URL: " + desc.url);
printer.println("Timestamp: " + Util.getTimeStringFromMicrosecond(properties.timestamp));
printIPTestResult(printer);

if (taskProgress == TaskProgress.COMPLETED) {
int headerLen = Integer.parseInt(values.get("headers_len"));
int bodyLen = Integer.parseInt(values.get("body_len"));
int time = Integer.parseInt(values.get("time_ms"));
printer.println("");
printer.println("Downloaded " + (headerLen + bodyLen) + " bytes in " + time + " ms");
printer.println("Bandwidth: " + (headerLen + bodyLen) * 8 / time + " Kbps");
} else if (taskProgress == TaskProgress.PAUSED) {
printer.println("Quic Http paused!");
} else {
printer.println("Quic Http download failed, status code " + values.get("code"));
printer.println("Error: " + values.get("error"));
}
}

private void getCronetHttpResult(StringBuilderPrinter printer, HashMap<String, String> values) {
CronetHttpDesc desc = (CronetHttpDesc) parameters;
printer.println("[CronetHTTP]");
printer.println("URL: " + desc.url);
printer.println("Timestamp: " + Util.getTimeStringFromMicrosecond(properties.timestamp));
printIPTestResult(printer);

if (taskProgress == TaskProgress.COMPLETED) {
int headerLen = Integer.parseInt(values.get("headers_len"));
int bodyLen = Integer.parseInt(values.get("body_len"));
int time = Integer.parseInt(values.get("time_ms"));
printer.println("");
printer.println("Downloaded " + (headerLen + bodyLen) + " bytes in " + time + " ms");
printer.println("Bandwidth: " + (headerLen + bodyLen) * 8 / time + " Kbps");
} else if (taskProgress == TaskProgress.PAUSED) {
printer.println("CronetHttp paused!");
} else {
printer.println("CronetHttp download failed, status code " + values.get("code"));
printer.println("Error: " + values.get("error"));
}
}

private void getDnsResult(StringBuilderPrinter printer, HashMap<String, String> values) {
DnsLookupDesc desc = (DnsLookupDesc) parameters;
printer.println("[DNS Lookup]");
Expand Down
6 changes: 6 additions & 0 deletions Mobilyzer/src/com/mobilyzer/MeasurementTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
import java.util.concurrent.Callable;

import com.mobilyzer.exceptions.MeasurementError;
import com.mobilyzer.measurements.CronetHttpTask;
import com.mobilyzer.measurements.DnsLookupTask;
import com.mobilyzer.measurements.HttpTask;
import com.mobilyzer.measurements.PageLoadTimeTask;
import com.mobilyzer.measurements.PingTask;
import com.mobilyzer.measurements.QuicHttpTask;
import com.mobilyzer.measurements.RRCTask;
import com.mobilyzer.measurements.SequentialTask;
import com.mobilyzer.measurements.TCPThroughputTask;
Expand Down Expand Up @@ -48,6 +50,10 @@ public abstract class MeasurementTask
measurementDescToType.put(PingTask.DESCRIPTOR, PingTask.TYPE);
measurementTypes.put(HttpTask.TYPE, HttpTask.class);
measurementDescToType.put(HttpTask.DESCRIPTOR, HttpTask.TYPE);
measurementTypes.put(CronetHttpTask.TYPE, CronetHttpTask.class);
measurementDescToType.put(CronetHttpTask.DESCRIPTOR, CronetHttpTask.TYPE);
measurementTypes.put(QuicHttpTask.TYPE, QuicHttpTask.class);
measurementDescToType.put(QuicHttpTask.DESCRIPTOR, QuicHttpTask.TYPE);
measurementTypes.put(TracerouteTask.TYPE, TracerouteTask.class);
measurementDescToType.put(TracerouteTask.DESCRIPTOR, TracerouteTask.TYPE);
measurementTypes.put(DnsLookupTask.TYPE, DnsLookupTask.class);
Expand Down
2 changes: 1 addition & 1 deletion Mobilyzer/src/com/mobilyzer/UserMeasurementTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import com.mobilyzer.MeasurementResult.TaskProgress;
import com.mobilyzer.exceptions.MeasurementError;
import com.mobilyzer.measurements.QuicHttpTask;
import com.mobilyzer.util.Logger;
import com.mobilyzer.util.PhoneUtils;

Expand Down Expand Up @@ -119,5 +120,4 @@ public MeasurementResult[] call() throws MeasurementError {
return results;
}


}
51 changes: 33 additions & 18 deletions Mobilyzer/src/com/mobilyzer/api/API.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,52 +14,56 @@
*/
package com.mobilyzer.api;

import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;
import java.util.Set;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.os.Bundle;

import com.mobilyzer.Config;
import com.mobilyzer.MeasurementScheduler;
import com.mobilyzer.MeasurementScheduler.DataUsageProfile;
import com.mobilyzer.MeasurementTask;
import com.mobilyzer.UpdateIntent;
import com.mobilyzer.exceptions.MeasurementError;
import com.mobilyzer.measurements.CronetHttpTask;
import com.mobilyzer.measurements.CronetHttpTask.CronetHttpDesc;
import com.mobilyzer.measurements.DnsLookupTask;
import com.mobilyzer.measurements.DnsLookupTask.DnsLookupDesc;
import com.mobilyzer.measurements.HttpTask;
import com.mobilyzer.measurements.HttpTask.HttpDesc;
import com.mobilyzer.measurements.PageLoadTimeTask;
import com.mobilyzer.measurements.PageLoadTimeTask.PageLoadTimeDesc;
import com.mobilyzer.measurements.ParallelTask;
import com.mobilyzer.measurements.PingTask;
import com.mobilyzer.measurements.SequentialTask;
import com.mobilyzer.measurements.TCPThroughputTask;
import com.mobilyzer.measurements.TracerouteTask;
import com.mobilyzer.measurements.UDPBurstTask;
import com.mobilyzer.measurements.DnsLookupTask.DnsLookupDesc;
import com.mobilyzer.measurements.HttpTask.HttpDesc;
import com.mobilyzer.measurements.ParallelTask.ParallelDesc;
import com.mobilyzer.measurements.PingTask;
import com.mobilyzer.measurements.PingTask.PingDesc;
import com.mobilyzer.measurements.QuicHttpTask;
import com.mobilyzer.measurements.QuicHttpTask.QuicDesc;
import com.mobilyzer.measurements.SequentialTask;
import com.mobilyzer.measurements.SequentialTask.SequentialDesc;
import com.mobilyzer.measurements.TCPThroughputTask;
import com.mobilyzer.measurements.TCPThroughputTask.TCPThroughputDesc;
import com.mobilyzer.measurements.TracerouteTask;
import com.mobilyzer.measurements.TracerouteTask.TracerouteDesc;
import com.mobilyzer.measurements.UDPBurstTask;
import com.mobilyzer.measurements.UDPBurstTask.UDPBurstDesc;
import com.mobilyzer.measurements.VideoQoETask;
import com.mobilyzer.measurements.VideoQoETask.VideoQoEDesc;
import com.mobilyzer.util.Logger;

import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;
import java.util.Set;

/**
* @author jackjia,Hongyi Yao (hyyao@umich.edu)
* The user API for Mobiperf library.
Expand All @@ -68,9 +72,10 @@
* User: register BroadcastReceiver for userResultAction and serverResultAction
*/
public final class API {

public enum TaskType {
DNSLOOKUP, HTTP, PING, TRACEROUTE, TCPTHROUGHPUT, UDPBURST,
PARALLEL, SEQUENTIAL, INVALID, PLT, VIDEOQOE
PARALLEL, SEQUENTIAL, INVALID, PLT, VIDEOQOE, QUICHTTP, CRONETHTTP
}

/**
Expand All @@ -90,11 +95,12 @@ public enum TaskType {

public final static int USER_PRIORITY = MeasurementTask.USER_PRIORITY;
public final static int INVALID_PRIORITY = MeasurementTask.INVALID_PRIORITY;

private Context applicationContext;

private boolean isBound = false;
private boolean isBindingToService = false;

Messenger mSchedulerMessenger = null;

private String clientKey;
Expand Down Expand Up @@ -282,6 +288,14 @@ public MeasurementTask createTask( TaskType taskType, Date startTime
task = new HttpTask(new HttpDesc(clientKey, startTime, endTime
, intervalSec, count, priority, contextIntervalSec, params));
break;
case QUICHTTP:
task = new QuicHttpTask(new QuicDesc(clientKey, startTime, endTime,
intervalSec, count, priority, contextIntervalSec, params));
break;
case CRONETHTTP:
task = new CronetHttpTask(new CronetHttpDesc(clientKey, startTime, endTime,
intervalSec, count, priority, contextIntervalSec, params));
break;
case PING:
task = new PingTask(new PingDesc(clientKey, startTime, endTime
, intervalSec, count, priority, contextIntervalSec, params));
Expand Down Expand Up @@ -603,4 +617,5 @@ public static Set<String> getMeasurementNames() {
public static String getTypeForMeasurementName(String name) {
return MeasurementTask.getTypeForMeasurementName(name);
}

}
Loading