summaryrefslogtreecommitdiffstats
path: root/scripts/test_vgpu_stack.sh
blob: ad81606e7625c42f41cde74608e85e286fe063dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2026 Open-IOV contributors
# Comprehensive Test Suite for Open-IOV vGPU-IO
# Runs all validation tests in sequence

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
OPEN_IOV_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"

echo "=== Open-IOV vGPU-IO Comprehensive Test Suite ==="
echo "Open-IOV root: $OPEN_IOV_ROOT"
echo "Date: $(date)"
echo ""

# Check if we're root
if [ "$EUID" -ne 0 ]; then
    echo "ERROR: This script must be run as root"
    exit 1
fi

# Parse arguments
RUN_KERNEL_TESTS=true
RUN_GUEST_TESTS=true
RUN_CUDA_TESTS=true
RUN_GRAPHICS_TESTS=true
RUN_WINDOWS_TESTS=false

while [[ $# -gt 0 ]]; do
    case $1 in
        --kernel-only)
            RUN_GUEST_TESTS=false
            RUN_CUDA_TESTS=false
            RUN_GRAPHICS_TESTS=false
            shift
            ;;
        --guest-only)
            RUN_KERNEL_TESTS=false
            RUN_CUDA_TESTS=false
            RUN_GRAPHICS_TESTS=false
            shift
            ;;
        --no-windows)
            RUN_WINDOWS_TESTS=false
            shift
            ;;
        --windows)
            RUN_WINDOWS_TESTS=true
            shift
            ;;
        *)
            echo "Unknown option: $1"
            echo "Usage: $0 [--kernel-only] [--guest-only] [--no-windows] [--windows]"
            exit 1
            ;;
    esac
done

RESULTS=()

# Test 1: Kernel GSP Emulation Tests
if [ "$RUN_KERNEL_TESTS" = true ]; then
    echo ""
    echo "========================================"
    echo "TEST 1: Kernel GSP Emulation Unit Tests"
    echo "========================================"
    if "$SCRIPT_DIR/test_gsp_emu.sh"; then
        RESULTS+=("Kernel GSP Emulation: PASS")
    else
        RESULTS+=("Kernel GSP Emulation: FAIL")
    fi
fi

# Test 2: Guest Driver Integration
if [ "$RUN_GUEST_TESTS" = true ]; then
    echo ""
    echo "========================================"
    echo "TEST 2: Guest Driver Integration"
    echo "========================================"
    if "$SCRIPT_DIR/test_guest_driver.sh"; then
        RESULTS+=("Guest Driver Integration: PASS")
    else
        RESULTS+=("Guest Driver Integration: FAIL")
    fi
fi

# Test 3: CUDA Workloads
if [ "$RUN_CUDA_TESTS" = true ]; then
    echo ""
    echo "========================================"
    echo "TEST 3: CUDA Workload Validation"
    echo "========================================"
    if "$SCRIPT_DIR/test_cuda_workloads.sh"; then
        RESULTS+=("CUDA Workloads: PASS")
    else
        RESULTS+=("CUDA Workloads: FAIL")
    fi
fi

# Test 4: Graphics Workloads
if [ "$RUN_GRAPHICS_TESTS" = true ]; then
    echo ""
    echo "========================================"
    echo "TEST 4: Graphics Workload Validation"
    echo "========================================"
    if "$SCRIPT_DIR/test_graphics_workloads.sh"; then
        RESULTS+=("Graphics Workloads: PASS")
    else
        RESULTS+=("Graphics Workloads: FAIL")
    fi
fi

# Test 5: Windows Guest (optional)
if [ "$RUN_WINDOWS_TESTS" = true ]; then
    echo ""
    echo "========================================"
    echo "TEST 5: Windows Guest Validation"
    echo "========================================"
    if "$SCRIPT_DIR/test_windows_guest.sh"; then
        RESULTS+=("Windows Guest: PASS")
    else
        RESULTS+=("Windows Guest: FAIL")
    fi
fi

# Summary
echo ""
echo "========================================"
echo "TEST SUMMARY"
echo "========================================"
for result in "${RESULTS[@]}"; do
    echo "  $result"
done

# Check for failures
FAIL_COUNT=0
for result in "${RESULTS[@]}"; do
    if [[ "$result" == *"FAIL"* ]]; then
        FAIL_COUNT=$((FAIL_COUNT + 1))
    fi
done

echo ""
if [ $FAIL_COUNT -eq 0 ]; then
    echo "ALL TESTS PASSED ✓"
    exit 0
else
    echo "$FAIL_COUNT TEST(S) FAILED ✗"
    exit 1
fi