// 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__",
        "//packages/modules/Connectivity/tests/cts/hostside",
    ],
    // 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: [":ConnectivityTestPreparer"],
}
