熟悉一下如何测试,并且查看一些测试配置。文章参照Ansible Playbooks for Testing SONiC。

物理拓扑

  • 上图中的各个硬件介绍

    • testbed servers是用来跑测试用例的。
    • root fanout switch是根交换机。
    • leaf fanout switches是用来连接被测试交换机。
    • DUTs是指被测试的交换机。
  • DUT端口和leaf是一一对应的。
  • 每个leaf都有一个唯一的VLAN tag
  • root fanout交换机使用802.1Q trunks
  • 这就意味着任何testbed server能通过发送带有vlan的报文到达任意DUT端口。

testbed setup

这块就略过了,详细请查看Testbed Setup。

主要是拓扑部署命令:

  • 部署拓扑,比如T1拓扑:./testbed-cli.sh add-topo vms-t1 ~/.password,password文件为空就可以。
  • 删除拓扑,./testbed-cli.sh remove-topo vms-t1 ~/.password
  • 拓扑配置存在于文件sonic-mgmt/ansible/testbed.csv

testbed.csv文件配置解释:

  • conf-name是拓扑的名字,标识拓扑关键字
  • group-name是internal name,表示用vm还是ptf还是啥
  • topo是指定部署的拓扑
  • ptf_image_name指定ptf docker类型
  • ptf_ip指定容器的管理IP
  • server指定服务器名称,与ansible/veos中定义的服务器名称匹配
  • vm_base指定vm编号
  • dut指定连接到测试品台的DUT名称
  • comment注释字段

逻辑拓扑

  • testbed拓扑的配置定义可见testbed.csv。
  • 一键运行所有testbeds的脚本可见testbed-cli.sh。
  • 灵活的拓扑允许使用VM_SET和PTF container作为实体。
  • 所有的VM管理IP都放在一个地方veos。
  • PTF container是通用的,并且每个拓扑都会使用。
  • 能自动配置fanout switch

补充

VMs

VM使用Arista vEOS。用于建立协议测试,比如BGP、LACP、LLDP,使用testbed-cli.sh start-vms创建。每个VM使用2G RAM并具有10个网络接口

PTF

PTF container用于向可用的DUT数据平面收发报文。

PTF with direct port

PTF with direct port

DUT前面板端口直接连接一个PTF container端口。通常是PTF container的eth0口连接DUT的Ethernet0,PTF container的eth1口连接DUT的Ethernet4端口等等。

PTF with injected port

PTF with injected port

DUT前面板端口直接连接一个VM的端口。报文从屋里端口发送到VM和PTF docker;报文从VM和PTF docker发送到屋里端口。

t1

t1

  • 需要32个VMs
  • 所有的DUT端口都连接到VMs

t1-lag

t1-lag

  • 需要24个VMs
  • 所有的DUT端口都连接到VMs

ptf32

ptf32

  • 不需要VM
  • 所有的DUT端口都直连PTF container

ptf64

ptf64

  • 不需要VM
  • 所有的DUT端口都直连PTF container

t0

t0

  • 需要4个VM
  • 4个DUT端口连接到VM
  • PTF container 连接到DUT 28个端口

生成和部署minigraph

根据创建的拓扑,运行playbook为SONiC DUT生成minigraph.xml,已匹配新拓扑。使用命令如下:

ansible-playbook -i lab config_sonic_basedon_testbed.yml -l sonic_dut_name -e vm_base=VM0300 -e topo=t0 [-e deploy=true -e save=true]-l str-msn2700-01          - 指定DUT的名字,与上面testbed.csv对应
-e vm_base=VM0300          - VM的起始名称,也是与testbed.csv对应
-e topo=t0                 - 拓扑名称,对应testbed.csv
-e deploy=True             - 不指定默认是false
-e save=True               - 是否保存为开机启动,不指定默认是false

运行测试用例

所有的测试用例名称和调用变量以及应用拓扑都定义在ansible/roles/test/vars/testcases.yml

运行测试用例的时候,根据testbed_name,能获取与testbed相关的信息(比如pf_host testbed_type, VMs info)。testbed_name继承了ansible/testbed.csv文件。每行的第一列是测试平台的唯一名称,在运行测试用例的时候使用。

ansible-playbook -i lab -l str-sonic-1 test_sonic.yml -e testbed_name={TESTBED_NAME} -e testcase_name={TESTCASE_NAME}

SONiC testbed相关推荐

  1. 如何使用vs来运行box2d中Testbed的案例

    0 环境 vs: vs2012 box2d: Box2D_v2.1.2 1 得到box2d编译版本 可以参考: https://blog.csdn.net/sty945/article/details ...

  2. 比较零知识证明算法zkSNARK,zkSTARKs,zkBoo,Sonic,BulletProofs

    本文分为两部分,第一部分说明零知识能干什么,为什么它这么强大,在区块链中这么火:第二部分比较零知识证明的算法zkSNARK, zkSTARKs, zkBoo, Sonic和BulletProofs的特 ...

  3. 手机QQ会员H5加速方案——sonic技术内幕

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文由况鹰原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/communit ...

  4. 思维导图 - 测试技术扩展:Postman接口测试、Sonar白盒测试、Sonic移动测试、Python操作FTP服务器

    给大家整理了下测试技术扩展相关的学习文档. 第一章: Postman 接口测试工具 测试工具 - Postman 接口测试入门使用手册,Postman 如何进行数据关联.自动更新 cookies.简单 ...

  5. Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解

    Sonic 开源移动端云真机测试平台 - Agent端服务部署与安卓设备接入演示 一加8手机连接效果图展示 第一章:环境准备 ① agent-sources 资源包下载 ② Android SDK安装 ...

  6. Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示

    Sonic 开源移动端云真机测试平台快速部署演示 第一章:Sonic 平台的准备工作与快速部署 ① Docker 的安装 ② MySQL 的安装 ③ docker-compose.yml 文件配置 ④ ...

  7. CNCF推出云原生网络功能(CNF)Testbed

    开源计划验证了在Kubernetes上运行ONAP网络功能对电信运营商的好处 巴塞罗那,2019年2月25日 - 移动世界大会 - 支持Kubernetes®和Prometheus™等开源技术的的CN ...

  8. Angular jasmine TestBed.configureTestingModule的工作原理

    TestBed.compileComponents 一次性异步编译所有组件.返回一个promise,可以等其完成时,执行更多的额外任务. 调试入口: 单元测试代码里定义的imports和provide ...

  9. Angular jasmine单元测试框架TestBed.inject的执行原理

    单步调试这段代码: TestBed用于单元测试代码里创建Component和service实例. injectionToken即传入TestBed.inject的function: 还是delegat ...

  10. 使用TestBed测试具有依赖关系的Angular服务

    具有依赖关系的Service源代码: import { Injectable } from '@angular/core';@Injectable() export class MasterServi ...

最新文章

  1. 解决PyCharm中报出 “Shadows built-in name xxx“ 的警告
  2. Spaly_Tree 模版
  3. 代价敏感多标签主动学习的代码开发跟踪
  4. 每个前端工程师都应该懂的前端性能优化总结:
  5. Win7 32位下DebugView和DriverMinitor不能打印调试信息的问题
  6. c语言jam的随机数,c – 如何重置随机数引擎?
  7. java有关问题,Java常见有关问题和解决方法
  8. ehcache 实现缓存共享
  9. MyEclipse中的ant初识
  10. Node.js框架之Egg.js
  11. Atitit mybatis 翻页解决法 目录 1.1. 翻页模式还有js翻页前端翻页更加简单 1 1.2. 逻辑分页使用类RowBounds vs 物理分页 offset模式 1 1.3.
  12. VirtualBox下安装Windows Server 2008
  13. 大庆金桥:基于 SpreadJS 开发实现计量器具检定证书的在线生成与打印
  14. 解决导入protobuf源代码Unity报错的问题
  15. hadoop中HDFS的NameNode原理
  16. TCP 三次握手和四次挥手,中间失败了会发生什么?
  17. 《NFL橄榄球》:田纳西泰坦·橄榄1号位
  18. 经典网络命令(搜集、概括)
  19. OpenCV 最小二乘+距离最小拟合圆
  20. 1-1 medium vs. modality笔记

热门文章

  1. 计算机组成码距,计算机组成原理:2.3.2 纠错码原理.ppt
  2. 计算机网络原理视频学习教程
  3. 人人都可以参与开源!龙蜥社区最不容错过的开发者活动来了
  4. 地理信息系统概论 - 地理信息系统(1)
  5. 机器学习教程 之 随机森林: 算法及其特征选择原理
  6. 哲学中的推理规则 —— 《自然哲学之数学原理》
  7. 【复习笔记】画法几何与土木水利工程制图知识点总结
  8. 二维傅里叶变换深度研究-图像与其频域关系
  9. 最强的Python 办公自动化之 PDF 攻略来了(全)
  10. win7+VS2008安装boost