1//
2// Copyright (C) 2019 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17// Tests in this folder are included both in unit tests and CTS.
18// They must be fast and stable, and exercise public or test APIs.
19package {
20    // See: http://go/android-license-faq
21    default_applicable_licenses: ["Android-Apache-2.0"],
22}
23
24java_library {
25    name: "FrameworksNetCommonTests",
26    defaults: ["framework-connectivity-test-defaults"],
27    srcs: [
28        "java/**/*.java",
29        "java/**/*.kt",
30    ],
31    static_libs: [
32        "androidx.core_core",
33        "androidx.test.rules",
34        "junit",
35        "mockito-target-minus-junit4",
36        "modules-utils-build",
37        "net-tests-utils",
38        "net-utils-framework-common",
39        "platform-test-annotations",
40    ],
41    libs: [
42        "android.test.base.stubs",
43    ],
44}
45
46// Connectivity coverage tests combines Tethering and Connectivity tests, each with their
47// respective jarjar rules applied.
48// Some tests may be duplicated (in particular static lib tests), as they need to be run under both
49// jarjared packages to cover both usages.
50android_library {
51    name: "ConnectivityCoverageTestsLib",
52    min_sdk_version: "30",
53    static_libs: [
54        "FrameworksNetTestsLib",
55        "NetdStaticLibTestsLib",
56        "NetworkStaticLibTestsLib",
57    ],
58    jarjar_rules: ":connectivity-jarjar-rules",
59    manifest: "AndroidManifest_coverage.xml",
60    visibility: ["//visibility:private"],
61}
62
63android_test {
64    name: "ConnectivityCoverageTests",
65    // Tethering started on SDK 30
66    min_sdk_version: "30",
67    // TODO: change to 31 as soon as it is available
68    target_sdk_version: "30",
69    test_suites: ["general-tests", "mts"],
70    defaults: [
71        "framework-connectivity-test-defaults",
72        "FrameworksNetTests-jni-defaults",
73        "libnetworkstackutilsjni_deps",
74    ],
75    manifest: "AndroidManifest_coverage.xml",
76    test_config: "AndroidTest_Coverage.xml",
77    static_libs: [
78        // Added first so all tests use extended mockito, instead of all tests using regular mockito
79        // (some tests would fail).
80        // TODO: consider removing extended mockito usage in tests that use it, for performance
81        "mockito-target-extended-minus-junit4",
82        "modules-utils-native-coverage-listener",
83        "ConnectivityCoverageTestsLib",
84        "TetheringCoverageTestsLib",
85    ],
86    jni_libs: [
87        // For mockito extended
88        "libdexmakerjvmtiagent",
89        "libstaticjvmtiagent",
90        // For NetworkStackUtils included in NetworkStackBase
91        "libnetworkstackutilsjni",
92        "libtetherutilsjni",
93        // For framework tests
94        "libservice-connectivity",
95    ],
96    libs: [
97        // Although not required to compile the static libs together, the "libs" used to build each
98        // of the common static test libs are necessary for R8 to avoid "Missing class" warnings and
99        // incorrect optimizations
100        "framework-tethering.impl",
101        "framework-wifi.stubs.module_lib",
102    ],
103    compile_multilib: "both",
104}
105
106// defaults for tests that need to build against framework-connectivity's @hide APIs
107// Only usable from targets that have visibility on framework-connectivity.impl.
108// Instead of using this, consider avoiding to depend on hidden connectivity APIs in
109// tests.
110java_defaults {
111    name: "framework-connectivity-test-defaults",
112    sdk_version: "core_platform", // tests can use @CorePlatformApi's
113    libs: [
114        // order matters: classes in framework-connectivity are resolved before framework,
115        // meaning @hide APIs in framework-connectivity are resolved before @SystemApi
116        // stubs in framework
117        "framework-connectivity.impl",
118        "framework",
119
120        // if sdk_version="" this gets automatically included, but here we need to add manually.
121        "framework-res",
122    ],
123}
124