Merge "Support full 32 bits for socket tags." into jb-dev

This commit is contained in:
Jeff Sharkey
2012-05-02 19:37:29 -07:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 8 deletions

View File

@@ -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);

View File

@@ -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 {