UNH-IOL Reservation 一致性测试用例【9】- Reservation Notification Log Page(LID 0x80)

Reservation 系列导航

UNH-IOL Reservation 一致性测试用例【1】- Reservation Report 命令验证
UNH-IOL Reservation 一致性测试用例【2】- Reservation注册
UNH-IOL Reservation 一致性测试用例【3】- 取消注册
UNH-IOL Reservation 一致性测试用例【4】- Reservation Acquire 验证
UNH-IOL Reservation 一致性测试用例【5】- Reservation Release
UNH-IOL Reservation 一致性测试用例【6】- 抢占 Reservation
UNH-IOL Reservation 一致性测试用例【7】- 清除Reservation
UNH-IOL Reservation 一致性测试用例【8】- 在不同 Reservation Types 下的命令行为
UNH-IOL Reservation 一致性测试用例【9】- Reservation Notification Log Page(LID 0x80)

Test 7.9 -- Reservation Notification Log Page (FYI, OF-FYI)

Reservation Notification log page 按发生时间顺序排列报告 reservation notification log pages(如果有)。每当 Controller 上的任何 namespace 发生未屏蔽的 reservation notification 时,都会创建一个新的 Reservation Notification log page,并添加到 reservation notifications 队列的末尾。Get Log Page Reservation Notification:

  • 返回一个 data buffer,其中包含一个 log page,该 log page 与 reservation notification 队列中最旧的 log page(即包含最低 Log Page Count 字段的 log page;考虑到环绕)相对应;
  • 从队列中删除该 Reservation Notification log page。

如果在发出 Get Log Page 命令时没有可用的 Reservation Notification log page 条目,则将返回一个空 log page(即 log page 中的所有字段均清为 0h)。

Case 1: Retrieve Log (FYI, OF-FYI)

测试步骤

  1. 检查 Identify controller data structure(CNS 01) ONCS 字段确定 controller 是否支持 reservation;检查DUT当前是否为多个ports
  2. 在 DUT 上配置两个 Hosts ( Controllers), 为这两个 hosts 创建一个 shared namespace。
  3. 针对 NVMe Subsystem 里的每个 NVMe Controller:
    1. NVMe Host 向 Controller 发出 Set Features Host Identifier, 以便为该 Controller 注册一个 Host Identifier
    2. 对于 atttach 到该 Controller 的每个 shared namespace:
      1. 至少两个 Hosts 发 Reservation Register 命令,Register Action (RREGA) 字段设为 000b (即. Register Reservation Key),在 New Reservation Key (NRKEY) 字段中向 namesapce 的 NVMe Controller 提供 reservation key,以使 host 成为该 shared namespace 的 registrant。
      2. 一个是 registrant 的 Host 发出 Reservation Acquire 命令,将 Reservation Acquire Action (RACQA) 字段设为 000b (Acquire),向 Current Reservation Key (CRKEY) 字段提供当前 Host 的 reservation key,并将 Reservation Type (RTYPE) 字段设为 namespace 支持的 Write Exclusive 或 Exclusive Access,以便 host 在 namespace 获取该 reservation 类型的 reservation
      3. 相同的 Host 发送 Reservation Release 命令来清除 reservation,其中 Reservation Release Action (RRELA) 字段设为 000b (Release),Current Reservation Key (CRKEY) 字段设为 host 当前的 reservation key
      4. 相同的 Host 向 Controller 发送 Reservation Report 命令。
  4. 执行 Reservation Release 命令,将所有现有 reservations 的 RRELA 字段设置为 001b(清除)。Reservation release 命令将生成 Reservation Notification。
  5. 第二次重复步骤 1-3。
  6. Get Reservation Notification Log Page

预期结果

验证 Reservation Notification Log Page 返回的内容:

  1. Log Page Count 为 2
  2. Log Page Type 为 2(Reservation Released)
  3. Number of Available Log Pages 为 1
  4. Namespace ID 正确

Case 2: Empty Log (FYI, OF-FYI)

测试步骤

  1. 检查 Identify controller data structure(CNS 01) ONCS 字段确定 controller 是否支持 reservation;检查DUT当前是否为多个ports
  2. 在 DUT 上配置两个 Hosts ( Controllers), 为这两个 hosts 创建一个 shared namespace。
  3. 针对 NVMe Subsystem 里的每个 NVMe Controller:
    1. NVMe Host 向 Controller 发出 Set Features Host Identifier, 以便为该 Controller 注册一个 Host Identifier
    2. 对于 atttach 到该 Controller 的每个 shared namespace:
      1. Hosts 发 Reservation Register 命令,Register Action (RREGA) 字段设为 000b (即. Register Reservation Key),在 New Reservation Key (NRKEY) 字段中向 namesapce 的 NVMe Controller 提供 reservation key,以使 host 成为该 shared namespace 的 registrant。
      2. 一个是 registrant 的 Host 发出 Reservation Acquire 命令,将 Reservation Acquire Action (RACQA) 字段设为 000b (Acquire),向 Current Reservation Key (CRKEY) 字段提供当前 Host 的 reservation key,并将 Reservation Type (RTYPE) 字段设为 namespace 支持的 reservation 类型,以便 host 在 namespace 获取该 reservation 类型的 reservation
      3. 相同的 Host 发送 Reservation Release 命令来释放 reservation,其中 Reservation Release Action (RRELA) 字段设为 000b (Release),Current Reservation Key (CRKEY) 字段设为 host 当前的 reservation key
      4. 相同的 Host 向 Controller 发送 Reservation Report 命令。
  4. 执行 Reservation Release 命令,将所有现有 reservations 的 RRELA 字段设置为 001b(清除)。Reservation release 命令将生成 Reservation Notification。
  5. Get Reservation Notification Log Page
  6. Get Reservation Notification Log Page

预期结果

验证第二笔get log page 返回全0字段

Case 3: Wrapped Log Count (FYI, OF-FYI)

测试步骤

  1. 检查 Identify controller data structure(CNS 01) ONCS 字段确定 controller 是否支持 reservation;检查DUT当前是否为多个ports
  2. 在 DUT 上配置两个 Hosts ( Controllers), 为这两个 hosts 创建一个 shared namespace。
  3. 针对 NVMe Subsystem 里的每个 NVMe Controller:
    1. NVMe Host 向 Controller 发出 Set Features Host Identifier, 以便为该 Controller 注册一个 Host Identifier
    2. 对于 atttach 到该 Controller 的每个 shared namespace:
      1. Hosts 发 Reservation Register 命令,Register Action (RREGA) 字段设为 000b (即. Register Reservation Key),在 New Reservation Key (NRKEY) 字段中向 namesapce 的 NVMe Controller 提供 reservation key,以使 host 成为该 shared namespace 的 registrant。
      2. 一个是 registrant 的 Host 发出 Reservation Acquire 命令,将 Reservation Acquire Action (RACQA) 字段设为 000b (Acquire),向 Current Reservation Key (CRKEY) 字段提供当前 Host 的 reservation key,并将 Reservation Type (RTYPE) 字段设为 namespace 支持的 reservation 类型,以便 host 在 namespace 获取该 reservation 类型的 reservation
      3. 相同的 Host 发送 Reservation Release 命令来释放 reservation,其中 Reservation Release Action (RRELA) 字段设为 000b (Release),Current Reservation Key (CRKEY) 字段设为 host 当前的 reservation key
      4. 相同的 Host 向 Controller 发送 Reservation Report 命令。
  4. 执行 Reservation Release 命令,将所有现有 reservations 的 RRELA 字段设置为 001b(清除)。Reservation release 命令将生成 Reservation Notification。
  5. 重复步骤 1-3 1000遍 直到出现 Reservation Notification Log Queue 环绕
  6. Get Reservation Notification Log Page

预期结果

如果 log page count 出现了环绕,下次增加会滚动至 1,否则就是正常增加。

相关推荐
测试199815 小时前
如何写出一个完整的测试用例?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
tealcwu17 小时前
【Unity踩坑】Unity测试用例命名空间错误解决方案
unity·游戏引擎·测试用例
财经三剑客21 小时前
深蓝汽车10月全球销量36792辆 S05销量突破2万辆
汽车
NewCarRen21 小时前
自动驾驶汽车与利益相关者互动的功能安全与网络安全分析方法
安全·网络安全·自动驾驶·汽车
天才测试猿1 天前
Jmeter基础知识详解
自动化测试·软件测试·测试工具·jmeter·测试用例·接口测试·性能测试
程序员三藏2 天前
软件测试之环境搭建及测试流程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
武子康2 天前
AI研究-116 特斯拉 HW3.0 与 HW4.0 区别详解:摄像头分辨率、FSD算力、雷达与Vision泊车
人工智能·深度学习·计算机视觉·ai·自动驾驶·汽车·视觉检测
乐吾乐科技2 天前
乐吾乐3D可视化案例【智慧汽车三维可视化】
3d·汽车
卓码软件测评2 天前
单元测试、集成测试和系统测试的联系和区别是什么?
功能测试·单元测试·测试用例·集成测试·可用性测试
程序员三藏3 天前
如何使用Selenium做自动化测试?
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例