Open jiewu9823 opened 7 months ago
openvpn | oe_test_openvpn |
---|
bash mugen.sh -c --ip 10.0.2.15 --password openEuler12#$ --user root --port 22
bash mugen.sh -c --ip 192.168.31.28 --password openEuler12#$ --user root --port 22
bash mugen.sh -f openvpn -r oe_test_openvpn -x
x86下测试失败
riscv64下测试失败
riscv64下检查log信息
报错显示没有额外未使用的网卡,查看脚本信息
其中eth_use=$(TEST_NIC 1 | grep -v -E 'lo|bond|virbr|vnet|br\\[0-9\\]|docker|br-|veth' | awk '{print $NF}')
用于获取一个可用的网络接口(网卡),并确保它不是一些特定类型的虚拟或管理接口
不需要的接口包括:
lo
:本地环回接口
bond
:绑定接口
virbr
:虚拟桥接接口
vnet
:虚拟网络接口
br[0-9]
:匹配名称中包含 br
和一个数字的接口
docker
:Docker 容器网络接口
br-
:桥接接口
veth
:虚拟以太网接口
可以看出,这些被过滤掉的接口通常是用于虚拟化、容器化或网络管理的接口,脚本中不希望使用这些接口,换句话说,满足要求的接口是物理网络接口
查找TEST_NIC
的定义
function TEST_NIC() {
id=${1-1}
python3 "${OET_PATH}"/libs/locallibs/get_test_device.py \
--device nic --node "$id"
}
get_test_device.py
中对应的获取网卡的函数为
def get_test_nic(node=1):
"""获取可测试使用的网卡
Args:
node (int, optional): 节点号. Defaults to 1.
Returns:
[str]: 网卡名
"""
exitcode, tmpfile = rpm_manage.rpm_install(pkgs="lshw", node=node)
if exitcode != 0:
mugen_log.logging(
"error",
"Failed to install the dependent software package required to obtain the network card.",
)
sys.exit(exitcode)
if os.environ.get("NODE" + str(node) + "_LOCALTION") == "local":
output = subprocess.getoutput(
"lshw -class network | grep -A 5 'description: Ethernet interface' | grep 'logical name:' | awk '{print $NF}' | grep -v '"
+ os.environ.get("NODE" + str(node) + "_NIC")
+ "'"
).replace("\n", " ")
else:
conn = ssh_cmd.pssh_conn(
os.environ.get("NODE" + str(node) + "_IPV4"),
os.environ.get("NODE" + str(node) + "_PASSWORD"),
os.environ.get("NODE" + str(node) + "_SSH_PORT"),
os.environ.get("NODE" + str(node) + "_USER"),
)
output = ssh_cmd.pssh_cmd(
conn,
"lshw -class network | grep -A 5 'description: Ethernet interface' | grep 'logical name:' | awk '{print $NF}' | grep -v '"
+ os.environ.get("NODE" + str(node) + "_NIC")
+ "'",
)[1].replace("\n", " ")
ssh_cmd.pssh_close(conn)
if tmpfile is not None:
rpm_manage.rpm_remove(node=node, tmpfile=tmpfile)
return output
手动检查是否有满足要求的物理接口:
eth_use=$(ip link show | grep -v -E 'lo|bond|virbr|vnet|br[0-9]|docker|br-|veth' | awk -F: '/^[0-9]+: / { print $2 }' | awk '{print $1}')
echo "Filtered network interfaces: ${eth_use}"
输出结果为:
Filtered network interfaces: eth0
可见本地其实是有满足要求的物理接口的,正则表达式也正确,但是使用eth_use=$(TEST_NIC 1 | grep -v -E 'lo|bond|virbr|vnet|br\\[0-9\\]|docker|br-|veth' | awk '{print $NF}')
却没有获得输出
目前不知道应该如何修改,TEST_NIC函数不能轻易修改,不理解为何没有输出
这个看你个人配置的。你可以注意到上面的那一片很长的代码里面有这个
os.environ.get("NODE" + str(node) + "_NIC")
然后前面还有grep -v,默认情况node是1,如果你的env.json的第一个节点是eth0,那么这里刚好就排除了,所以你看不见任何输出。 补充一点:os.environ.get除了获取系统的环境变量,还会获取你程序运行时设置的环境变量,mugen的源码有关conf的那些函数里面就有设置了一些环境变量(在程序刚运行的时候),这些都是运行时的,程序结束就失效了。
因为我想做的issue也有这个问题,恰好发现你也遇到了。或许你可以试试环境配置的时候,第一个节点放其它设备?虚拟设备也好,然后第二个节点才是eth0,如果你只有eth0这一个物理网络接口的话。 @yangfan-ruan
需求:
要求:
该项任务要求产出:
完成该项任务后,请在 2403_mugen失败测试用例清单 里找到相应测试套和测试用例栏位,并填写riscv复测结果,Failure Reason,Owner(填写中文名),Gitee ID,Issue/PR(填写提交issue或者PR的url),x86 测试情况。Issue/PR这个栏位可能已经填有内容,是之前在23.09版本上其他实习生同学分析的结果,供参考
说明: