#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4

usage() { echo "usbip_test.sh -b <busid> -p <usbip tools path>"; exit 1; }

while getopts "h:b:p:" arg; do
    case "${arg}" in
	h)
	    usage
	    ;;
	b)
	    busid=${OPTARG}
	    ;;
	p)
	    tools_path=${OPTARG}
	    ;;
	*)
	    usage
	    ;;
    esac
done
shift $((OPTIND-1))

if [ -z "${busid}" ]; then
	usage
fi

echo "Running USB over IP Testing on $busid";

test_end_msg="End of USB over IP Testing on $busid"

if [ $UID != 0 ]; then
	echo "Please run usbip_test as root [SKIP]"
	echo $test_end_msg
	exit $ksft_skip
fi

echo "Load usbip_host module"
if ! /sbin/modprobe -q -n usbip_host; then
	echo "usbip_test: module usbip_host is not found [SKIP]"
	echo $test_end_msg
	exit $ksft_skip
fi

if /sbin/modprobe -q usbip_host; then
	echo "usbip_test: module usbip_host is loaded [OK]"
else
	echo "usbip_test: module usbip_host failed to load [FAIL]"
	echo $test_end_msg
	exit 1
fi

echo "Load vhci_hcd module"
if /sbin/modprobe -q vhci_hcd; then
	echo "usbip_test: module vhci_hcd is loaded [OK]"
else
	echo "usbip_test: module vhci_hcd failed to load [FAIL]"
	echo $test_end_msg
	exit 1
fi
echo "=============================================================="

cd $tools_path;

if [ ! -f src/usbip ]; then
	echo "Please build usbip tools"
	echo $test_end_msg
	exit $ksft_skip
fi

echo "Expect to see export-able devices";
src/usbip list -l;
echo "=============================================================="

echo "Run lsusb to see all usb devices"
lsusb -t;
echo "=============================================================="

src/usbipd -D;

echo "Get exported devices from localhost - expect to see none";
src/usbip list -r localhost;
echo "=============================================================="

echo "bind devices";
src/usbip bind -b $busid;
echo "=============================================================="

echo "Run lsusb - bound devices should be under usbip_host control"
lsusb -t;
echo "=============================================================="

echo "bind devices - expect already bound messages"
src/usbip bind -b $busid;
echo "=============================================================="

echo "Get exported devices from localhost - expect to see exported devices";
src/usbip list -r localhost;
echo "=============================================================="

echo "unbind devices";
src/usbip unbind -b $busid;
echo "=============================================================="

echo "Run lsusb - bound devices should be rebound to original drivers"
lsusb -t;
echo "=============================================================="

echo "unbind devices - expect no devices bound message";
src/usbip unbind -b $busid;
echo "=============================================================="

echo "Get exported devices from localhost - expect to see none";
src/usbip list -r localhost;
echo "=============================================================="

echo "List imported devices - expect to see none";
src/usbip port;
echo "=============================================================="

echo "Import devices from localhost - should fail with no devices"
src/usbip attach -r localhost -b $busid;
echo "=============================================================="

echo "bind devices";
src/usbip bind -b $busid;
echo "=============================================================="

echo "List imported devices - expect to see exported devices";
src/usbip list -r localhost;
echo "=============================================================="

echo "List imported devices - expect to see none";
src/usbip port;
echo "=============================================================="

echo "Import devices from localhost - should work"
src/usbip attach -r localhost -b $busid;
echo "=============================================================="

echo "List imported devices - expect to see imported devices";
src/usbip port;
echo "=============================================================="

echo "Import devices from localhost - expect already imported messages"
src/usbip attach -r localhost -b $busid;
echo "=============================================================="

echo "Un-import devices";
src/usbip detach -p 00;
src/usbip detach -p 01;
echo "=============================================================="

echo "List imported devices - expect to see none";
src/usbip port;
echo "=============================================================="

echo "Un-import devices - expect no devices to detach messages";
src/usbip detach -p 00;
src/usbip detach -p 01;
echo "=============================================================="

echo "Detach invalid port tests - expect invalid port error message";
src/usbip detach -p 100;
echo "=============================================================="

echo "Expect to see export-able devices";
src/usbip list -l;
echo "=============================================================="

echo "Remove usbip_host module";
rmmod usbip_host;

echo "Run lsusb - bound devices should be rebound to original drivers"
lsusb -t;
echo "=============================================================="

echo "Run bind without usbip_host - expect fail"
src/usbip bind -b $busid;
echo "=============================================================="

echo "Run lsusb - devices that failed to bind aren't bound to any driver"
lsusb -t;
echo "=============================================================="

echo "modprobe usbip_host - does it work?"
/sbin/modprobe usbip_host
echo "Should see -busid- is not in match_busid table... skip! dmesg"
echo "=============================================================="
dmesg | grep "is not in match_busid table"
echo "=============================================================="

echo $test_end_msg
