Merge "Support full 32 bits for socket tags." into jb-dev
This commit is contained in:
@@ -16,20 +16,14 @@
|
||||
|
||||
package com.android.server;
|
||||
|
||||
import android.net.NetworkStats;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
import android.util.Slog;
|
||||
|
||||
import dalvik.system.SocketTagger;
|
||||
import libcore.io.IoUtils;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.net.SocketException;
|
||||
import java.nio.charset.Charsets;
|
||||
|
||||
/**
|
||||
* Assigns tags to sockets for traffic stats.
|
||||
@@ -141,8 +135,12 @@ public final class NetworkManagementSocketTagger extends SocketTagger {
|
||||
* format like {@code 0x7fffffff00000000}.
|
||||
*/
|
||||
public static int kernelToTag(String string) {
|
||||
// TODO: migrate to direct integer instead of odd shifting
|
||||
return (int) (Long.decode(string) >> 32);
|
||||
int length = string.length();
|
||||
if (length > 10) {
|
||||
return Long.decode(string.substring(0, length - 8)).intValue();
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private static native int native_tagSocketFd(FileDescriptor fd, int tag, int uid);
|
||||
|
||||
@@ -25,6 +25,7 @@ import static com.android.server.NetworkManagementSocketTagger.kernelToTag;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.net.NetworkStats;
|
||||
import android.net.TrafficStats;
|
||||
import android.test.AndroidTestCase;
|
||||
|
||||
import com.android.frameworks.coretests.R;
|
||||
@@ -138,6 +139,12 @@ public class NetworkStatsFactoryTest extends AndroidTestCase {
|
||||
assertEquals(2147483647, kernelToTag("0x7fffffff00000000"));
|
||||
assertEquals(0, kernelToTag("0x0000000000000000"));
|
||||
assertEquals(2147483136, kernelToTag("0x7FFFFE0000000000"));
|
||||
|
||||
assertEquals(0, kernelToTag("0x0"));
|
||||
assertEquals(0, kernelToTag("0xf00d"));
|
||||
assertEquals(1, kernelToTag("0x100000000"));
|
||||
assertEquals(14438007, kernelToTag("0xdc4e7700000000"));
|
||||
assertEquals(TrafficStats.TAG_SYSTEM_DOWNLOAD, kernelToTag("0xffffff0100000000"));
|
||||
}
|
||||
|
||||
public void testNetworkStatsWithSet() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user