Skip to content

Git-related functionality for testing DevBox runtimes

Notifications You must be signed in to change notification settings

yyXDyy/DevBoxRuntimeTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevBox Runtime 测试框架

这是一个用于测试 Sealos DevBox 各种运行时环境的测试框架。每个运行时环境都有对应的测试项目,支持中文和英文两种语言版本。

📁 目录结构

DevBoxRuntimeTest/
├── test.sh                 # 主测试脚本
├── runtime_list.md         # 运行时镜像列表
├── README.md              # 本文件
│
├── GO/                    # Go 运行时
│   ├── 1.22.5/
│   │   ├── en/           # 英文版
│   │   └── zh/           # 中文版
│   └── 1.23.0/
│       ├── en/
│       └── zh/
│
├── PYTHON/                # Python 运行时
│   ├── 3.10/
│   ├── 3.11/
│   └── 3.12/
│       ├── en/
│       └── zh/
│
├── NODEJS/                # Node.js 运行时
│   ├── 18/
│   ├── 20/
│   └── 22/
│       ├── en/
│       └── zh/
│
├── JAVA/                  # Java 运行时
├── PHP/                   # PHP 运行时
├── RUST/                  # Rust 运行时
├── C/                     # C 运行时
├── CPP/                   # C++ 运行时
├── NET/                   # .NET 运行时
├── NGINX/                 # Nginx 运行时
├── DEBIAN/                # Debian 基础镜像
├── UBUNTU/                # Ubuntu 基础镜像
└── UBUNTU-CUDA/           # Ubuntu CUDA 镜像
    ├── en/
    └── zh/

🚀 使用方法

基本用法

./test.sh <运行时类型> <语言> [版本号]

参数说明

  • 运行时类型: 不区分大小写,支持多种别名

    • go / golang → Go
    • python / py → Python
    • nodejs / node → Node.js
    • java → Java
    • php → PHP
    • rust → Rust
    • c → C
    • cpp / c++ → C++
    • net / dotnet → .NET
    • nginx → Nginx
    • debian → Debian
    • ubuntu → Ubuntu
    • ubuntu-cuda / cuda → Ubuntu CUDA
  • 语言: en (英文) 或 zh (中文)

  • 版本号: 可选,对于多版本的运行时需要指定

使用示例

# Go 1.22.5 英文版
./test.sh go en 1.22.5

# Go 1.23.0 中文版
./test.sh go zh 1.23.0

# Python 3.11 英文版
./test.sh python en 3.11

# Python 3.12 中文版
./test.sh python zh 3.12

# Node.js 20 英文版
./test.sh nodejs en 20

# Node.js 22 中文版
./test.sh nodejs zh 22

# Java 英文版(单版本)
./test.sh java en

# PHP 8.2 中文版
./test.sh php zh 8.2

# Rust 英文版
./test.sh rust en

# .NET 中文版
./test.sh net zh

# Ubuntu CUDA 英文版(会检查 GPU 支持)
./test.sh ubuntu-cuda en

🌐 服务监听端口

所有需要网络服务的运行时都会监听 0.0.0.0:8080,可以通过以下方式测试:

# 使用 curl 测试
curl http://localhost:8080

# 使用浏览器访问
# http://localhost:8080

端口占用检查

脚本会在启动服务前自动检查 8080 端口是否被占用:

  • 如果端口可用: 直接启动服务
  • 如果端口被占用: 会显示占用进程信息,并提供以下选项:
    1. 终止占用进程并继续: 自动终止占用进程后启动服务
    2. 退出测试: 退出脚本,不启动服务
    3. 忽略并继续: 忽略端口占用,尝试启动(可能导致启动失败)

端口检查支持多种检测方法(按优先级):

  • lsof(推荐)
  • netstat
  • ss

🔍 CUDA GPU 检查

当测试 CUDA 相关的运行时(ubuntu-cuda)时,脚本会自动检查:

  1. NVIDIA GPU 驱动

    • 检查 nvidia-smi 命令是否可用
    • 显示 GPU 名称、驱动版本、显存信息
    • 显示 CUDA 版本
  2. CUDA 工具包

    • 检查 nvcc 编译器是否可用
    • 显示 CUDA 版本信息
  3. GPU 设备文件

    • 检查 /dev/nvidia* 设备文件是否存在
    • 确认 GPU 设备是否可访问

GPU 相关注意事项

  • 驱动要求: 需要安装 NVIDIA 官方驱动(推荐版本 >= 450.80.02)
  • CUDA 版本: Ubuntu CUDA 12.4.1 镜像需要 CUDA 12.4+ 驱动支持
  • 设备访问: 确保容器/环境有权限访问 /dev/nvidia* 设备
  • 常见问题:
    • 如果 nvidia-smi 不可用,GPU 加速功能将不可用
    • 如果 /dev/nvidia* 不存在,需要检查设备挂载或权限设置
    • CUDA 版本不匹配可能导致运行时错误

📋 支持的运行时列表

根据 runtime_list.md,当前支持以下运行时:

运行时 版本 语言支持
Debian 12.6 en, zh
Ubuntu 22.04 en, zh
Ubuntu CUDA 12.4.1 en, zh
C GCC 12.2.0 en, zh
C++ GCC 12.2.0 en, zh
Go 1.22.5, 1.23.0 en, zh
Java OpenJDK 17 en, zh
.NET 8.0 en, zh
Node.js 18, 20, 22 en, zh
PHP 7.4, 8.2 en, zh
Python 3.10, 3.11, 3.12 en, zh
Rust 1.81.0 en, zh
Nginx 1.22.1 en, zh

⚙️ 依赖检查

脚本会自动检查运行所需的依赖工具,如果缺失会提示:

  • Go: go
  • Python: python3
  • Node.js: node
  • Java: javac, java
  • PHP: php
  • Rust: rustc
  • C: gcc
  • C++: g++
  • .NET: dotnet
  • Nginx: nginx (可选)
  • CUDA: nvidia-smi, nvcc (可选)

🔧 测试流程

  1. 查找测试目录: 根据运行时类型和版本查找对应的测试文件夹
  2. 检查依赖: 验证所需的编译器和运行时是否已安装
  3. CUDA 检查: 如果是 CUDA 运行时,检查 GPU 支持情况
  4. 编译/运行: 根据项目类型执行相应的编译和运行命令
  5. 服务监听: 启动 HTTP 服务器监听 0.0.0.0:8080
  6. 结果反馈: 显示测试结果和服务器状态

📝 注意事项

  1. 端口占用检查: 脚本会自动检查 8080 端口占用情况,如果被占用会提示处理选项
  2. 后台运行: 服务器会在后台运行,使用 Ctrl+C 停止
  3. 权限问题: 某些运行时可能需要特定权限(如 CUDA 需要访问 GPU 设备)
  4. 网络访问: 服务监听在 0.0.0.0,可以从外部访问
  5. 资源清理: 脚本会自动清理临时文件和编译产物
  6. 交互式输入: 端口被占用时需要交互式选择处理方式(非交互式环境会自动退出)

🐛 故障排查

服务无法启动

# 检查端口占用(脚本会自动检查)
lsof -i :8080

# 手动检查端口占用
netstat -tuln | grep 8080
#
ss -tuln | grep 8080

# 检查进程
ps aux | grep <运行时类型>

# 终止占用8080端口的进程
lsof -ti:8080 | xargs kill -9

CUDA 相关问题

# 手动检查 GPU
nvidia-smi

# 检查 CUDA 版本
nvcc --version

# 检查设备文件
ls -la /dev/nvidia*

依赖缺失

根据错误提示安装相应的依赖:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install <package-name>

# 例如:安装 Go
sudo apt-get install golang-go

📄 许可证

本项目用于 Sealos DevBox 运行时测试。

About

Git-related functionality for testing DevBox runtimes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published