Page 97 - 《软件学报》2020年第9期
P. 97

2718                                 Journal of Software  软件学报 Vol.31, No.9,  September 2020

         为测试用例进行说明.其中,ipv4_lpm 指定了该命令是向 ipv4_lpm 这张表插入表项,ipv4_forward 指定了表项匹
         配成功时执行的动作为 ipv4_forward,0xffffffff/32 指定了匹配字段是 16 进制的 ffffffff,⇒是命令的格式需要所定
         义的箭头形状,⇒后的 0x0 0x0 指定了 ipv4_forward 动作的两个参数均为 0,命令中的动作需要几个参数,⇒符号
         后就应当给出几个参数.命令中/后的数字如 0/32 表示的是该数长度为 32 位.
             •   table_delete 表项删除命令
             合法的删除表项的命令格式如下:
                                      table_delete〈table name〉〈entry handle〉.
             删除一个表项需要确定表项所在表的表名以及该表项在表中的编号,在这里被称为 entry handle.以命令
         “table_delete ipv4_lpm  0”为测试用例进行说明.其中,ipv4_lpm 指定了该命令删除的表项在表 ipv4_lpm 中,0 说
         明了该命令会删除表中编号为 0 的表项.
             •   table_dump 表项查询命令
             合法的查询表项的命令格式如下:
                                            table_dump〈table name〉.
             查询表项需要确定需要查询的表项所在表的表名.以命令“table_dump ipv4_lpm”为测试用例进行说明.其
         中,ipv4_lpm 指定了该命令查询的是名为 ipv4_lpm 这张表中的所有表项.
             •   table_modify 表项修改命令
             合法的修改表项的命令格式如下:
                         table_modify〈table name〉〈action name〉〈entry handle〉[action parameters].
             修改表项需要确定表项所在表的表名、表项中的动作名、表项的编号、动作的参数.以命令“table_modify
         ipv4_lpm ipv4_forward 0  0x123456654321 1”为测试用例进行说明.其中,ipv4_lpm 指定了该命令修改的是表
         ipv4_lpm 中的表项,ipv4_forward 说明了该命令修改的表项中的动作为 ipv4_forward,0 指定了该命令修改的是
         表 ipv4_lpm 中编号为 0 的表项,0x123456654321 1 指定了该命令是将 ipv4_forward 的两个参数改成
         0x123456654321 1.命令要修改的表项中的动作有几个参数,就要给出几个参数.
         4.3   生成测试用例集

             如图 12 所示为测试用例生成的算法映射图,以测试用例类型命令合法、表名不合法、动作不合法、匹配
         域不合法、参数不合法为组织单位,以一个个命令信息实体为信息体,构造对应类型的 TABLE_NAME,
         ACTION_NAME,MATCH_KEY,PARAMETERS 字段,生成 table_add,table_delete,table_dump,table_modify 命令.
             如图 13 所示,本节以增删改查命令类型的测试用例生成过程为例进行说明.在完成了对 P4 信息文件
         (.p4info 文件)的解析后,以测试用例类型为组织单位,构造符合测试用例类型的字段,依据命令信息实体的命令
         格式,生成测试用例.表项的增加和修改动作需要用到表名、匹配字段、动作名和动作参数,而表项的查询和删
         除命令需要用到表名.本节实现的 SDN 数据平面软件一致性测试用例生成工具不直接依赖于 P4 程序,而是直
         接依赖于编译后的 P4 信息文件(.p4info 文件).
             •   参数默认值的设定原则
             命令中,用户需要自行填写的参数有匹配字段(match_field)和动作参数(action_params),这两个参数不能
         由.p4info 确定,需要用户根据从.p4info 文件中提取出参数的位数自行填入.程序可以识别十进制数并转换成十
         六进制,但是交换机中记录的是十六进制的格式,目前的 IP 地址格式是 32 位二进制数.为了方便也分成了 4 段,
         每段 8 位.考虑到以十进制数表示 IP 地址不直观也非当今主流,所以需要根据参数的位数给出一个默认的参数,
         以确定一个参数的格式.匹配字段中的参数往往是目的地址或者是源地址之类的 IP 地址.匹配字段的长度必须
         是 8bits 的整数倍.参考参数见表 1.
   92   93   94   95   96   97   98   99   100   101   102