// Copyright (C) 2021 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.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

java_library {
    name: "net-tests-utils",
    srcs: [
        "devicetests/**/*.java",
        "devicetests/**/*.kt",
    ],
    defaults: [
        "framework-connectivity-test-defaults",
        "lib_mockito_extended"
    ],
    libs: [
        "androidx.annotation_annotation",
        "net-utils-device-common-bpf",  // TestBpfMap extends IBpfMap.
    ],
    static_libs: [
        "androidx.test.ext.junit",
        "kotlin-reflect",
        "libnanohttpd",
        "net-tests-utils-host-device-common",
        "net-utils-device-common",
        "net-utils-device-common-async",
        "net-utils-device-common-netlink",
        "net-utils-device-common-wear",
        "modules-utils-build_system",
    ],
    lint: { strict_updatability_linting: true },
}

java_library {
    // Consider using net-tests-utils instead if writing device code.
    // That library has a lot more useful tools into it for users that
    // work on Android and includes this lib.
    name: "net-tests-utils-host-device-common",
    srcs: [
        "hostdevice/**/*.java",
        "hostdevice/**/*.kt",
    ],
    host_supported: true,
    visibility: [
        "//frameworks/libs/net/common/tests:__subpackages__",
        "//frameworks/libs/net/client-libs/tests:__subpackages__",
    ],
    // There are downstream branches using an old version of Kotlin
    // that used to reserve the right to make breaking changes to the
    // Result type and disallowed returning an instance of it.
    // Later versions allowed this and there was never a change,
    // so no matter the version returning Result is always fine,
    // but on sc-mainline-prod the compiler rejects it without
    // the following flag.
    kotlincflags: ["-Xallow-result-return-type"],
    libs: [
        "jsr305",
    ],
    static_libs: [
        "kotlin-test"
    ],
    lint: { strict_updatability_linting: true },
}

java_test_host {
    name: "net-tests-utils-host-common",
    srcs: [
        "host/**/*.java",
        "host/**/*.kt",
    ],
    libs: ["tradefed"],
    test_suites: ["ats", "device-tests", "general-tests", "cts", "mts-networking"],
    data: [":ConnectivityChecker"],
}
