Loading Android.bp +11 −1 Original line number Original line Diff line number Diff line Loading @@ -133,6 +133,15 @@ android_library { manifest: "AndroidManifestBase.xml", manifest: "AndroidManifestBase.xml", } } filegroup { name: "NetworkStackJarJarRules", srcs: ["jarjar-rules-shared.txt"], visibility: [ "//packages/modules/NetworkStack/tests/unit", "//packages/modules/NetworkStack/tests/integration", ] } // Common defaults for compiling the actual APK, based on the NetworkStackApiXBase android libraries // Common defaults for compiling the actual APK, based on the NetworkStackApiXBase android libraries java_defaults { java_defaults { name: "NetworkStackAppDefaults", name: "NetworkStackAppDefaults", Loading @@ -143,7 +152,7 @@ java_defaults { ], ], // Resources already included in NetworkStackBase // Resources already included in NetworkStackBase resource_dirs: [], resource_dirs: [], jarjar_rules: "jarjar-rules-shared.txt", jarjar_rules: ":NetworkStackJarJarRules", use_embedded_native_libs: true, use_embedded_native_libs: true, optimize: { optimize: { proguard_flags_files: ["proguard.flags"], proguard_flags_files: ["proguard.flags"], Loading Loading @@ -201,6 +210,7 @@ android_library { defaults: ["NetworkStackAppDefaults", "NetworkStackReleaseApiLevel"], defaults: ["NetworkStackAppDefaults", "NetworkStackReleaseApiLevel"], static_libs: ["NetworkStackApiStableLib"], static_libs: ["NetworkStackApiStableLib"], manifest: "AndroidManifestBase.xml", manifest: "AndroidManifestBase.xml", visibility: ["//frameworks/base/tests/net/integration"], } } cc_library_shared { cc_library_shared { Loading tests/integration/Android.bp +43 −13 Original line number Original line Diff line number Diff line Loading @@ -14,31 +14,61 @@ // limitations under the License. // limitations under the License. // // android_test { java_defaults { name: "NetworkStackIntegrationTests", name: "NetworkStackIntegrationTestsJniDefaults", certificate: "networkstack", defaults: ["libnetworkstackutilsjni_deps"], jni_libs: [ // For mockito extended "libdexmakerjvmtiagent", "libstaticjvmtiagent", // For NetworkStackUtils included in NetworkStackBase "libnetworkstackutilsjni", ], visibility: ["//visibility:private"], } android_library { name: "NetworkStackIntegrationTestsLib", min_sdk_version: "29", min_sdk_version: "29", srcs: ["src/**/*.java"], srcs: ["src/**/*.java"], test_suites: ["device-tests"], static_libs: [ static_libs: [ "androidx.annotation_annotation", "androidx.annotation_annotation", "androidx.test.rules", "androidx.test.rules", "mockito-target-extended-minus-junit4", "mockito-target-extended-minus-junit4", "net-tests-utils", "net-tests-utils", "testables", "testables", "TestNetworkStackLib", "NetworkStackApiStableLib", ], ], libs: [ libs: [ "android.test.runner", "android.test.runner", "android.test.base", "android.test.base", "android.test.mock", "android.test.mock", ], ], defaults: ["libnetworkstackutilsjni_deps"], jarjar_rules: ":NetworkStackJarJarRules", jni_libs: [ visibility: ["//visibility:private"], // For mockito extended } "libdexmakerjvmtiagent", "libstaticjvmtiagent", // Network stack integration tests. // For NetworkStackUtils included in NetworkStackBase android_test { "libnetworkstackutilsjni", name: "NetworkStackIntegrationTests", ], defaults: ["NetworkStackIntegrationTestsJniDefaults"], static_libs: ["NetworkStackIntegrationTestsLib"], certificate: "networkstack", platform_apis: true, test_suites: ["device-tests"], min_sdk_version: "29", } // Special version of the network stack tests that includes all tests necessary for code coverage // purposes. This is currently the union of NetworkStackTests and NetworkStackIntegrationTests. android_test { name: "NetworkStackCoverageTests", certificate: "networkstack", platform_apis: true, min_sdk_version: "29", test_suites: ["device-tests", "mts"], defaults: ["NetworkStackIntegrationTestsJniDefaults"], static_libs: ["NetworkStackTestsLib", "NetworkStackIntegrationTestsLib"], compile_multilib: "both", manifest: "AndroidManifest_coverage.xml", } } tests/integration/AndroidTest.xml→tests/integration/AndroidManifest_coverage.xml +36 −0 Original line number Original line Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2019 The Android Open Source Project <!-- Copyright (C) 2020 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. you may not use this file except in compliance with the License. Loading @@ -13,17 +13,24 @@ See the License for the specific language governing permissions and See the License for the specific language governing permissions and limitations under the License. limitations under the License. --> --> <configuration description="Runs Integration Tests for NetworkStack"> <manifest xmlns:android="http://schemas.android.com/apk/res/android" <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"> package="com.android.server.networkstack.coverage" <option name="test-file-name" value="NetworkStackIntegrationTests.apk" /> android:sharedUserId="android.uid.networkstack"> </target_preparer> <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" /> <option name="test-suite-tag" value="apct" /> <!-- Note: do not add any privileged or signature permissions that are granted <option name="test-suite-tag" value="framework-base-presubmit" /> to the network stack app. Otherwise, the test APK will install, but when the device is <option name="test-tag" value="NetworkStackIntegrationTests" /> rebooted, it will bootloop with something like: <test class="com.android.tradefed.testtype.AndroidJUnitTest" > <option name="package" value="com.android.server.networkstack.integrationtests" /> 05-14 00:41:02.723 18330 18330 E AndroidRuntime: java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions whitelist: {com.android.server.networkstack.integrationtests: android.permission.CONNECTIVITY_INTERNAL} <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" /> --> <option name="hidden-api-checks" value="false"/> <uses-permission android:name="android.permission.MAINLINE_NETWORK_STACK" /> </test> </configuration> <application android:debuggable="true"> <uses-library android:name="android.test.runner" /> </application> <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="com.android.server.networkstack.coverage" android:label="Networking stack coverage tests"> </instrumentation> </manifest> tests/integration/src/android/net/ip/IpClientIntegrationTest.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -25,13 +25,12 @@ import static android.net.dhcp.DhcpPacket.ENCAP_L2; import static android.net.dhcp.DhcpPacket.INADDR_BROADCAST; import static android.net.dhcp.DhcpPacket.INADDR_BROADCAST; import static android.net.dhcp.DhcpPacket.INFINITE_LEASE; import static android.net.dhcp.DhcpPacket.INFINITE_LEASE; import static android.net.ipmemorystore.Status.SUCCESS; import static android.net.ipmemorystore.Status.SUCCESS; import static android.net.networkstack.shared.Inet4AddressUtils.getBroadcastAddress; import static android.net.shared.Inet4AddressUtils.getBroadcastAddress; import static android.net.networkstack.shared.Inet4AddressUtils.getPrefixMaskAsInet4Address; import static android.net.shared.Inet4AddressUtils.getPrefixMaskAsInet4Address; import static android.system.OsConstants.ETH_P_IPV6; import static android.system.OsConstants.ETH_P_IPV6; import static android.system.OsConstants.IPPROTO_ICMPV6; import static android.system.OsConstants.IPPROTO_ICMPV6; import static android.system.OsConstants.IPPROTO_TCP; import static android.system.OsConstants.IPPROTO_TCP; import static com.android.internal.util.BitUtils.uint16; import static com.android.server.util.NetworkStackConstants.ARP_REPLY; import static com.android.server.util.NetworkStackConstants.ARP_REPLY; import static com.android.server.util.NetworkStackConstants.ARP_REQUEST; import static com.android.server.util.NetworkStackConstants.ARP_REQUEST; import static com.android.server.util.NetworkStackConstants.ETHER_ADDR_LEN; import static com.android.server.util.NetworkStackConstants.ETHER_ADDR_LEN; Loading Loading @@ -96,7 +95,6 @@ import android.net.dhcp.DhcpRequestPacket; import android.net.ipmemorystore.NetworkAttributes; import android.net.ipmemorystore.NetworkAttributes; import android.net.ipmemorystore.OnNetworkAttributesRetrievedListener; import android.net.ipmemorystore.OnNetworkAttributesRetrievedListener; import android.net.ipmemorystore.Status; import android.net.ipmemorystore.Status; import android.net.networkstack.util.StateMachine; import android.net.shared.ProvisioningConfiguration; import android.net.shared.ProvisioningConfiguration; import android.net.util.InterfaceParams; import android.net.util.InterfaceParams; import android.net.util.IpUtils; import android.net.util.IpUtils; Loading @@ -116,6 +114,7 @@ import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import androidx.test.runner.AndroidJUnit4; import com.android.internal.util.StateMachine; import com.android.networkstack.arp.ArpPacket; import com.android.networkstack.arp.ArpPacket; import com.android.server.NetworkObserverRegistry; import com.android.server.NetworkObserverRegistry; import com.android.server.NetworkStackService.NetworkStackServiceManager; import com.android.server.NetworkStackService.NetworkStackServiceManager; Loading Loading @@ -1137,6 +1136,10 @@ public class IpClientIntegrationTest { return (short) ~tempSum; return (short) ~tempSum; } } public static int uint16(short s) { return s & 0xffff; } private static short icmpv6Checksum(ByteBuffer buf, int ipOffset, int transportOffset, private static short icmpv6Checksum(ByteBuffer buf, int ipOffset, int transportOffset, int transportLen) { int transportLen) { // The ICMPv6 checksum is the same as the TCP checksum, except the pseudo-header uses // The ICMPv6 checksum is the same as the TCP checksum, except the pseudo-header uses Loading tests/unit/Android.bp +13 −0 Original line number Original line Diff line number Diff line Loading @@ -38,8 +38,10 @@ java_defaults { "libstaticjvmtiagent", "libstaticjvmtiagent", "libnetworkstackutilsjni", "libnetworkstackutilsjni", ], ], jarjar_rules: ":NetworkStackJarJarRules", } } // Tests for NetworkStackNext. android_test { android_test { name: "NetworkStackNextTests", name: "NetworkStackNextTests", srcs: [], // TODO: tests that only apply to the current, non-stable API can be added here srcs: [], // TODO: tests that only apply to the current, non-stable API can be added here Loading @@ -48,6 +50,17 @@ android_test { static_libs: ["NetworkStackApiCurrentLib"], static_libs: ["NetworkStackApiCurrentLib"], } } // Library containing the unit tests. This is used by the coverage test target to pull in the // unit test code. It is not currently used by the tests themselves because all the build // configuration needed by the tests is in the NetworkStackTestsDefaults rule. android_library { name: "NetworkStackTestsLib", min_sdk_version: "29", defaults: ["NetworkStackTestsDefaults"], static_libs: ["NetworkStackApiStableLib"], visibility: ["//packages/modules/NetworkStack/tests/integration"] } android_test { android_test { name: "NetworkStackTests", name: "NetworkStackTests", min_sdk_version: "29", min_sdk_version: "29", Loading Loading
Android.bp +11 −1 Original line number Original line Diff line number Diff line Loading @@ -133,6 +133,15 @@ android_library { manifest: "AndroidManifestBase.xml", manifest: "AndroidManifestBase.xml", } } filegroup { name: "NetworkStackJarJarRules", srcs: ["jarjar-rules-shared.txt"], visibility: [ "//packages/modules/NetworkStack/tests/unit", "//packages/modules/NetworkStack/tests/integration", ] } // Common defaults for compiling the actual APK, based on the NetworkStackApiXBase android libraries // Common defaults for compiling the actual APK, based on the NetworkStackApiXBase android libraries java_defaults { java_defaults { name: "NetworkStackAppDefaults", name: "NetworkStackAppDefaults", Loading @@ -143,7 +152,7 @@ java_defaults { ], ], // Resources already included in NetworkStackBase // Resources already included in NetworkStackBase resource_dirs: [], resource_dirs: [], jarjar_rules: "jarjar-rules-shared.txt", jarjar_rules: ":NetworkStackJarJarRules", use_embedded_native_libs: true, use_embedded_native_libs: true, optimize: { optimize: { proguard_flags_files: ["proguard.flags"], proguard_flags_files: ["proguard.flags"], Loading Loading @@ -201,6 +210,7 @@ android_library { defaults: ["NetworkStackAppDefaults", "NetworkStackReleaseApiLevel"], defaults: ["NetworkStackAppDefaults", "NetworkStackReleaseApiLevel"], static_libs: ["NetworkStackApiStableLib"], static_libs: ["NetworkStackApiStableLib"], manifest: "AndroidManifestBase.xml", manifest: "AndroidManifestBase.xml", visibility: ["//frameworks/base/tests/net/integration"], } } cc_library_shared { cc_library_shared { Loading
tests/integration/Android.bp +43 −13 Original line number Original line Diff line number Diff line Loading @@ -14,31 +14,61 @@ // limitations under the License. // limitations under the License. // // android_test { java_defaults { name: "NetworkStackIntegrationTests", name: "NetworkStackIntegrationTestsJniDefaults", certificate: "networkstack", defaults: ["libnetworkstackutilsjni_deps"], jni_libs: [ // For mockito extended "libdexmakerjvmtiagent", "libstaticjvmtiagent", // For NetworkStackUtils included in NetworkStackBase "libnetworkstackutilsjni", ], visibility: ["//visibility:private"], } android_library { name: "NetworkStackIntegrationTestsLib", min_sdk_version: "29", min_sdk_version: "29", srcs: ["src/**/*.java"], srcs: ["src/**/*.java"], test_suites: ["device-tests"], static_libs: [ static_libs: [ "androidx.annotation_annotation", "androidx.annotation_annotation", "androidx.test.rules", "androidx.test.rules", "mockito-target-extended-minus-junit4", "mockito-target-extended-minus-junit4", "net-tests-utils", "net-tests-utils", "testables", "testables", "TestNetworkStackLib", "NetworkStackApiStableLib", ], ], libs: [ libs: [ "android.test.runner", "android.test.runner", "android.test.base", "android.test.base", "android.test.mock", "android.test.mock", ], ], defaults: ["libnetworkstackutilsjni_deps"], jarjar_rules: ":NetworkStackJarJarRules", jni_libs: [ visibility: ["//visibility:private"], // For mockito extended } "libdexmakerjvmtiagent", "libstaticjvmtiagent", // Network stack integration tests. // For NetworkStackUtils included in NetworkStackBase android_test { "libnetworkstackutilsjni", name: "NetworkStackIntegrationTests", ], defaults: ["NetworkStackIntegrationTestsJniDefaults"], static_libs: ["NetworkStackIntegrationTestsLib"], certificate: "networkstack", platform_apis: true, test_suites: ["device-tests"], min_sdk_version: "29", } // Special version of the network stack tests that includes all tests necessary for code coverage // purposes. This is currently the union of NetworkStackTests and NetworkStackIntegrationTests. android_test { name: "NetworkStackCoverageTests", certificate: "networkstack", platform_apis: true, min_sdk_version: "29", test_suites: ["device-tests", "mts"], defaults: ["NetworkStackIntegrationTestsJniDefaults"], static_libs: ["NetworkStackTestsLib", "NetworkStackIntegrationTestsLib"], compile_multilib: "both", manifest: "AndroidManifest_coverage.xml", } }
tests/integration/AndroidTest.xml→tests/integration/AndroidManifest_coverage.xml +36 −0 Original line number Original line Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2019 The Android Open Source Project <!-- Copyright (C) 2020 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. you may not use this file except in compliance with the License. Loading @@ -13,17 +13,24 @@ See the License for the specific language governing permissions and See the License for the specific language governing permissions and limitations under the License. limitations under the License. --> --> <configuration description="Runs Integration Tests for NetworkStack"> <manifest xmlns:android="http://schemas.android.com/apk/res/android" <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"> package="com.android.server.networkstack.coverage" <option name="test-file-name" value="NetworkStackIntegrationTests.apk" /> android:sharedUserId="android.uid.networkstack"> </target_preparer> <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" /> <option name="test-suite-tag" value="apct" /> <!-- Note: do not add any privileged or signature permissions that are granted <option name="test-suite-tag" value="framework-base-presubmit" /> to the network stack app. Otherwise, the test APK will install, but when the device is <option name="test-tag" value="NetworkStackIntegrationTests" /> rebooted, it will bootloop with something like: <test class="com.android.tradefed.testtype.AndroidJUnitTest" > <option name="package" value="com.android.server.networkstack.integrationtests" /> 05-14 00:41:02.723 18330 18330 E AndroidRuntime: java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions whitelist: {com.android.server.networkstack.integrationtests: android.permission.CONNECTIVITY_INTERNAL} <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" /> --> <option name="hidden-api-checks" value="false"/> <uses-permission android:name="android.permission.MAINLINE_NETWORK_STACK" /> </test> </configuration> <application android:debuggable="true"> <uses-library android:name="android.test.runner" /> </application> <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="com.android.server.networkstack.coverage" android:label="Networking stack coverage tests"> </instrumentation> </manifest>
tests/integration/src/android/net/ip/IpClientIntegrationTest.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -25,13 +25,12 @@ import static android.net.dhcp.DhcpPacket.ENCAP_L2; import static android.net.dhcp.DhcpPacket.INADDR_BROADCAST; import static android.net.dhcp.DhcpPacket.INADDR_BROADCAST; import static android.net.dhcp.DhcpPacket.INFINITE_LEASE; import static android.net.dhcp.DhcpPacket.INFINITE_LEASE; import static android.net.ipmemorystore.Status.SUCCESS; import static android.net.ipmemorystore.Status.SUCCESS; import static android.net.networkstack.shared.Inet4AddressUtils.getBroadcastAddress; import static android.net.shared.Inet4AddressUtils.getBroadcastAddress; import static android.net.networkstack.shared.Inet4AddressUtils.getPrefixMaskAsInet4Address; import static android.net.shared.Inet4AddressUtils.getPrefixMaskAsInet4Address; import static android.system.OsConstants.ETH_P_IPV6; import static android.system.OsConstants.ETH_P_IPV6; import static android.system.OsConstants.IPPROTO_ICMPV6; import static android.system.OsConstants.IPPROTO_ICMPV6; import static android.system.OsConstants.IPPROTO_TCP; import static android.system.OsConstants.IPPROTO_TCP; import static com.android.internal.util.BitUtils.uint16; import static com.android.server.util.NetworkStackConstants.ARP_REPLY; import static com.android.server.util.NetworkStackConstants.ARP_REPLY; import static com.android.server.util.NetworkStackConstants.ARP_REQUEST; import static com.android.server.util.NetworkStackConstants.ARP_REQUEST; import static com.android.server.util.NetworkStackConstants.ETHER_ADDR_LEN; import static com.android.server.util.NetworkStackConstants.ETHER_ADDR_LEN; Loading Loading @@ -96,7 +95,6 @@ import android.net.dhcp.DhcpRequestPacket; import android.net.ipmemorystore.NetworkAttributes; import android.net.ipmemorystore.NetworkAttributes; import android.net.ipmemorystore.OnNetworkAttributesRetrievedListener; import android.net.ipmemorystore.OnNetworkAttributesRetrievedListener; import android.net.ipmemorystore.Status; import android.net.ipmemorystore.Status; import android.net.networkstack.util.StateMachine; import android.net.shared.ProvisioningConfiguration; import android.net.shared.ProvisioningConfiguration; import android.net.util.InterfaceParams; import android.net.util.InterfaceParams; import android.net.util.IpUtils; import android.net.util.IpUtils; Loading @@ -116,6 +114,7 @@ import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import androidx.test.runner.AndroidJUnit4; import com.android.internal.util.StateMachine; import com.android.networkstack.arp.ArpPacket; import com.android.networkstack.arp.ArpPacket; import com.android.server.NetworkObserverRegistry; import com.android.server.NetworkObserverRegistry; import com.android.server.NetworkStackService.NetworkStackServiceManager; import com.android.server.NetworkStackService.NetworkStackServiceManager; Loading Loading @@ -1137,6 +1136,10 @@ public class IpClientIntegrationTest { return (short) ~tempSum; return (short) ~tempSum; } } public static int uint16(short s) { return s & 0xffff; } private static short icmpv6Checksum(ByteBuffer buf, int ipOffset, int transportOffset, private static short icmpv6Checksum(ByteBuffer buf, int ipOffset, int transportOffset, int transportLen) { int transportLen) { // The ICMPv6 checksum is the same as the TCP checksum, except the pseudo-header uses // The ICMPv6 checksum is the same as the TCP checksum, except the pseudo-header uses Loading
tests/unit/Android.bp +13 −0 Original line number Original line Diff line number Diff line Loading @@ -38,8 +38,10 @@ java_defaults { "libstaticjvmtiagent", "libstaticjvmtiagent", "libnetworkstackutilsjni", "libnetworkstackutilsjni", ], ], jarjar_rules: ":NetworkStackJarJarRules", } } // Tests for NetworkStackNext. android_test { android_test { name: "NetworkStackNextTests", name: "NetworkStackNextTests", srcs: [], // TODO: tests that only apply to the current, non-stable API can be added here srcs: [], // TODO: tests that only apply to the current, non-stable API can be added here Loading @@ -48,6 +50,17 @@ android_test { static_libs: ["NetworkStackApiCurrentLib"], static_libs: ["NetworkStackApiCurrentLib"], } } // Library containing the unit tests. This is used by the coverage test target to pull in the // unit test code. It is not currently used by the tests themselves because all the build // configuration needed by the tests is in the NetworkStackTestsDefaults rule. android_library { name: "NetworkStackTestsLib", min_sdk_version: "29", defaults: ["NetworkStackTestsDefaults"], static_libs: ["NetworkStackApiStableLib"], visibility: ["//packages/modules/NetworkStack/tests/integration"] } android_test { android_test { name: "NetworkStackTests", name: "NetworkStackTests", min_sdk_version: "29", min_sdk_version: "29", Loading