
mptcp/mptcp-upstream-virtme-docker该Docker镜像用于通过virtme构建虚拟环境,以验证mptcp_net-next仓库(MPTCP上游内核)。其设计目标是提供自动构建的Docker镜像,供开发人员和CI(持续集成)环境使用。
启动Docker镜像时,需指定以下模式之一:
manual-normal:编译无调试配置的内核,并提供shell提示符manual-debug:编译带调试配置的内核,并提供shell提示符auto-normal:在无调试配置的内核中运行所有自动测试auto-debug:在带调试配置的内核中运行所有自动测试auto-all:同时使用无调试和调试配置运行自动测试make:运行make命令(可带可选参数)make.cross:运行Intel的make.cross命令(可带可选参数)cmd:运行指定命令src: source指定的脚本文件help:显示所有可用命令所有manual-*和auto-*选项接受内核源代码中scripts/config脚本的可选参数,例如-e DEBUG_LOCKDEP。
适用于需要验证MPTCP上游内核代码的开发人员,以及CI流程中对内核进行自动化测试的场景。支持手动交互模式(用于开发调试)和自动测试模式(用于验证流程)。
无需克隆本仓库,可快速获取即用环境:
bashcd <内核源代码目录> docker pull mptcp/mptcp-upstream-virtme-docker:latest docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \ mptcp/mptcp-upstream-virtme-docker:latest \ <上述入口点选项>
说明:该Docker镜像需要
--privileged权限以支持QEmu的KVM加速。
克隆本仓库后使用:
bashcd <内核源代码目录> /PATH/TO/THIS/REPO/run-tests-dev.sh <上述入口点选项>
该命令会构建并启动Docker镜像。
可在内核源代码根目录创建以下3个文件:
.virtme-exec-pre:在测试套件运行前执行.virtme-exec-run:替代测试套件执行.virtme-exec-post:在测试套件运行后执行这些脚本会被source执行,并可使用virtme脚本中的函数。
设置INPUT_NO_BLOCK=1环境变量可在上述文件存在时不阻塞流程,适用于git bisect场景。
INPUT_PACKETDRILL_NO_SYNC=1:不同步Packetdrill与上游,适用于挂载本地Packetdrill仓库INPUT_PACKETDRILL_NO_MORE_TOLERANCE=1:不增加Packetdrill的容错性直接使用Docker命令示例:
bashdocker run \ -e INPUT_PACKETDRILL_NO_SYNC=1 \ -e INPUT_PACKETDRILL_NO_MORE_TOLERANCE=1 \ -v /PATH/TO/packetdrill:/opt/packetdrill:rw \ -v "${PWD}:${PWD}:rw" -w "${PWD}" \ --privileged --rm -it \ mptcp/mptcp-upstream-virtme-docker:latest \ manual cd /opt/packetdrill/gtests/net/ ./packetdrill/run_all.py -lv mptcp/dss # 或其他子目录 # 或 cd /opt/packetdrill/gtests/net/mptcp/dss/ # 或其他子目录 ../../packetdrill/packetdrill -v dss_fin_server.pkt # 或其他测试
使用run.sh脚本示例*:
通过设置VIRTME_PACKETDRILL_PATH实现挂载并配置环境变量:
bashVIRTME_PACKETDRILL_PATH=/PATH/TO/packetdrill \ /PATH/TO/THIS/REPO/run-tests-dev.sh <上述入口点选项>
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务