//
// Copyright (C) 2019 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

// Tests in this folder are included both in unit tests and CTS.
// They must be fast and stable, and exercise public or test APIs.
package {
    // See: http://go/android-license-faq
    default_applicable_licenses: ["Android-Apache-2.0"],
}

java_library {
    name: "FrameworksNetCommonTests",
    defaults: ["framework-connectivity-test-defaults"],
    srcs: [
        "java/**/*.java",
        "java/**/*.kt",
    ],
    static_libs: [
        "androidx.core_core",
        "androidx.test.rules",
        "junit",
        "mockito-target-minus-junit4",
        "modules-utils-build",
        "net-tests-utils",
        "net-utils-framework-common",
        "platform-test-annotations",
    ],
    libs: [
        "android.test.base.stubs",
    ],
}

// Connectivity coverage tests combines Tethering and Connectivity tests, each with their
// respective jarjar rules applied.
// Some tests may be duplicated (in particular static lib tests), as they need to be run under both
// jarjared packages to cover both usages.
android_library {
    name: "ConnectivityCoverageTestsLib",
    min_sdk_version: "30",
    static_libs: [
        "FrameworksNetTestsLib",
        "NetdStaticLibTestsLib",
        "NetworkStaticLibTestsLib",
    ],
    jarjar_rules: ":connectivity-jarjar-rules",
    manifest: "AndroidManifest_coverage.xml",
    visibility: ["//visibility:private"],
}

android_test {
    name: "ConnectivityCoverageTests",
    // Tethering started on SDK 30
    min_sdk_version: "30",
    // TODO: change to 31 as soon as it is available
    target_sdk_version: "30",
    test_suites: ["general-tests", "mts-tethering"],
    defaults: [
        "framework-connectivity-test-defaults",
        "FrameworksNetTests-jni-defaults",
        "libnetworkstackutilsjni_deps",
    ],
    manifest: "AndroidManifest_coverage.xml",
    test_config: "AndroidTest_Coverage.xml",
    static_libs: [
        // Added first so all tests use extended mockito, instead of all tests using regular mockito
        // (some tests would fail).
        // TODO: consider removing extended mockito usage in tests that use it, for performance
        "mockito-target-extended-minus-junit4",
        "modules-utils-native-coverage-listener",
        "ConnectivityCoverageTestsLib",
        "TetheringCoverageTestsLib",
    ],
    jni_libs: [
        // For mockito extended
        "libdexmakerjvmtiagent",
        "libstaticjvmtiagent",
        // For NetworkStackUtils included in NetworkStackBase
        "libnetworkstackutilsjni",
        "libcom_android_networkstack_tethering_util_jni",
        // For framework tests
        "libservice-connectivity",
    ],
    libs: [
        // Although not required to compile the static libs together, the "libs" used to build each
        // of the common static test libs are necessary for R8 to avoid "Missing class" warnings and
        // incorrect optimizations
        "framework-tethering.impl",
        "framework-wifi.stubs.module_lib",
    ],
    compile_multilib: "both",
}

// defaults for tests that need to build against framework-connectivity's @hide APIs
// Only usable from targets that have visibility on framework-connectivity.impl.
// Instead of using this, consider avoiding to depend on hidden connectivity APIs in
// tests.
java_defaults {
    name: "framework-connectivity-test-defaults",
    sdk_version: "core_platform", // tests can use @CorePlatformApi's
    libs: [
        // order matters: classes in framework-connectivity are resolved before framework,
        // meaning @hide APIs in framework-connectivity are resolved before @SystemApi
        // stubs in framework
        "framework-connectivity.impl",
        "framework-tethering.impl",
        "framework",

        // if sdk_version="" this gets automatically included, but here we need to add manually.
        "framework-res",
    ],
}
