#!/bin/bash
# Copyright 2021 Google LLC
#
# 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.


TEMPDIRS=""
TEMPFILES=""
# Script under test
SUT=$PWD/usb_network.sh

TEST_STATUS="OK"

test_setup() {
    echo -n "Testing $1 ..."
    FAKE_CONFIGFS=$(mktemp -d)
    TEMPDIRS="${TEMPDIRS} ${FAKE_CONFIGFS}"
    FAKE_GADGETFS=$FAKE_CONFIGFS/usb_gadget
    mkdir -p "$FAKE_GADGETFS"
}

test_teardown() {
    echo ${TEST_STATUS}
    if test -n "$TEMPDIRS"; then
        rm -rf ${TEMPDIRS}
    fi
    if test -n "$TEMPFILES"; then
        rm -f $TEMPFILES
    fi
}

test_fail() {
    echo -n " $@ " >&2
    TEST_STATUS="FAIL"

    test_teardown
    exit 1
}

check_file_content() {
    local filename="$1"
    local expected_content="$2"

    if ! test -f "${filename}"; then
        test_fail "File ${filename} does not exist!"
    fi

    local actual_content=$(cat ${filename})
    if [[ $expected_content != $actual_content ]]; then
        test_fail "Expected ${expected_content}, got ${actual_content}"
    fi
}

test_gadget_creation_with_defaults() {
    local extra_args=()
    local gadget_dir="$1"
    if [[ $gadget_dir == "" ]]; then
        gadget_dir="g1";
    else
        extra_args=(${extra_args} --gadget-dir-name "${gadget_dir}")
    fi
    local product_name="Souvenier BMC"
    local product_id="0xcafe"
    local host_mac="ab:cd:ef:10:11:12"
    local dev_mac="12:11:10:ef:cd:ab"
    local bind_device="f80002000.udc"
    CONFIGFS_HOME=${FAKE_CONFIGFS} ${SUT} --product-id "${product_id}" \
        --product-name "${product_name}" \
        --host-mac "${host_mac}" \
        --dev-mac "${dev_mac}" \
        --bind-device "${bind_device}" \
        ${extra_args[@]}

    if test $? -ne 0; then
        test_fail "${SUT} failed"
    fi

    if ! test -d "${FAKE_GADGETFS}/${gadget_dir}"; then
        test_fail "Gadget was not created!"
    fi

    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/idVendor "0x18d1"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/idProduct "${product_id}"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/strings/0x409/manufacturer "Google"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/strings/0x409/product "${product_name}"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/MaxPower "100"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/strings/0x409/configuration "ECM"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.usb0/dev_addr "${dev_mac}"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.usb0/host_addr "${host_mac}"

    if ! test -d ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.usb0; then
        test_fail "Function directory was not created"
    fi

    local func_link="${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/ecm.usb0"
    if ! test -L "${func_link}"; then
        test_fail "Symlink to the function was not created in the config"
    fi

    local link_dest=$(realpath ${func_link})
    if [[ $link_dest != ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.usb0 ]]; then
        test_fail "Symlink points to the wrong file/dir"
    fi

    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/UDC "${bind_device}"
}

test_gadget_creation_with_override() {
    mkdir -p ${FAKE_GADGETFS}/g1/{strings,configs,functions}
    touch ${FAKE_GADGETFS}/g1/{idVendor,idProduct}

    test_gadget_creation_with_defaults
}

test_gadget_stopping() {
    local extra_args=()
    local gadget_dir="$1"
    local iface_name="$2"
    if [[ $gadget_dir == "" ]]; then
        gadget_dir="g1";
    else
        extra_args=(${extra_args} --gadget-dir-name "${gadget_dir}")
    fi

    if [[ $iface_name == "" ]]; then
        iface_name="usb0";
    else
        extra_args=(${extra_args} --iface-name "${iface_name}")
    fi

    CONFIGFS_HOME=${FAKE_CONFIGFS} ${SUT} ${extra_args[@]} stop

    if test -d "${FAKE_GADGETFS}/${gadget_dir}"; then
        test_fail "Gadget was not removed!"
    fi
}

test_gadget_creation_no_macs() {
    local gadget_dir="g1";
    local product_name="Souvenier BMC"
    local product_id="0xcafe"
    local bind_device="f80002000.udc"
    CONFIGFS_HOME=${FAKE_CONFIGFS} ${SUT} --product-id "${product_id}" \
        --product-name "${product_name}" \
        --bind-device "${bind_device}"

    if test $? -ne 0; then
        test_fail "${SUT} failed"
    fi

    if ! test -d "${FAKE_GADGETFS}/${gadget_dir}"; then
        test_fail "Gadget was not created!"
    fi

    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/idVendor "0x18d1"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/idProduct "${product_id}"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/strings/0x409/manufacturer "Google"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/strings/0x409/product "${product_name}"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/MaxPower "100"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/strings/0x409/configuration "ECM"

    if test -e ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.usb0/dev_addr; then
        test_fail "dev_addr should not be set"
    fi

    if test -e ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.usb0/host_addr; then
        test_fail "host_addr should not be set"
    fi

    local func_link="${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/ecm.usb0"
    if ! test -L "${func_link}"; then
        test_fail "Symlink to the function was not created in the config"
    fi

    local link_dest=$(realpath ${func_link})
    if [[ $link_dest != ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.usb0 ]]; then
        test_fail "Symlink points to the wrong file/dir"
    fi

    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/UDC "${bind_device}"
}

test_gadget_creation_alt_iface() {
    local gadget_dir="g1";
    local product_name="Souvenier BMC"
    local product_id="0xcafe"
    local bind_device="f80002000.udc"
    local iface_name="iface0"
    CONFIGFS_HOME=${FAKE_CONFIGFS} ${SUT} --product-id "${product_id}" \
        --product-name "${product_name}" \
        --bind-device "${bind_device}" \
        --iface-name "${iface_name}"

    if test $? -ne 0; then
        test_fail "${SUT} failed"
    fi

    if ! test -d "${FAKE_GADGETFS}/${gadget_dir}"; then
        test_fail "Gadget was not created!"
    fi

    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/idVendor "0x18d1"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/idProduct "${product_id}"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/strings/0x409/manufacturer "Google"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/strings/0x409/product "${product_name}"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/MaxPower "100"
    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/strings/0x409/configuration "ECM"

    if ! test -d ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.${iface_name}; then
        test_fail "Function directory was not created"
    fi

    if test -e ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.${iface_name}/dev_addr; then
        test_fail "dev_addr should not be set"
    fi

    if test -e ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.${iface_name}/host_addr; then
        test_fail "host_addr should not be set"
    fi

    local func_link="${FAKE_GADGETFS}/${gadget_dir}/configs/c.1/ecm.${iface_name}"
    if ! test -L "${func_link}"; then
        test_fail "Symlink to the function was not created in the config"
    fi

    local link_dest=$(realpath ${func_link})
    if [[ $link_dest != ${FAKE_GADGETFS}/${gadget_dir}/functions/ecm.${iface_name} ]]; then
        test_fail "Symlink points to the wrong file/dir"
    fi

    check_file_content ${FAKE_GADGETFS}/${gadget_dir}/UDC "${bind_device}"
}


# -------------------------------------------------------------------
test_setup "Device Creation"

test_gadget_creation_with_defaults

test_teardown
# -------------------------------------------------------------------

# -------------------------------------------------------------------
test_setup "Device Creation With Override"

test_gadget_creation_with_override

test_teardown
# -------------------------------------------------------------------

# -------------------------------------------------------------------
test_setup "Test Device Stop"

test_gadget_creation_with_defaults
test_gadget_stopping

test_teardown
# -------------------------------------------------------------------

# -------------------------------------------------------------------
test_setup "Device Creation/Stopping, Alternative Name"

test_gadget_creation_with_defaults "gAlt"
test_gadget_stopping "gAlt"

test_teardown
# -------------------------------------------------------------------

# -------------------------------------------------------------------
test_setup "Device Creation without MAC Addrs"

test_gadget_creation_no_macs

test_teardown
# -------------------------------------------------------------------

# -------------------------------------------------------------------
test_setup "Device Creation/Stopping, Alternative Interface"

test_gadget_creation_alt_iface

test_teardown
# -------------------------------------------------------------------

echo "SUCCESS!"
