WI-FI Direct 性能方案测试

设计和使用说明 - Microsoft,2011/12

方案测试

该测试使用以下选择变量来设置测试组合。 请注意,如果没有专门选择这些变量中的任何一个,TE 将按顺序循环访问所有“不受限的”可能性。

方案测试流

WFDScenarioTestDriver 类布局为一系列按顺序运行的测试方法:

  • LoadSettings

    • 读取此测试实例的命令行参数

    • 加载文件/验证参数/等

  • PreSetup

    • 删除默认 GO 配置文件并重启服务(如有必要)

    • 创建默认 GO 配置文件(如有必要)

    • 设置 ExtSTA 端口(断开连接/添加配置文件)

  • PreConnectAP

    • 连接到测试 WLAN 配置文件(如有必要)

    • 建立 L2 后,执行同步 ping 会话 30 秒

  • RunScenario

    • 按顺序运行 IWFDScenarioTest 函数

      • 侦听器方案

        • 初始化

        • RunListenerScenario

      • 连接器方案

        • 初始化

        • RunConnectorScenario

    • 建立 L2 后,WFD 客户端执行到 GO 的网关地址的 ping 会话 30 秒

    • 如果方案是 Pre-AP-Connect,则还要执行到 AP 的并发 ping 会话

  • PostAPConnect

    • 连接到测试 WLAN 配置文件(如有必要)

    • 建立 L2 后,WFD 客户端执行到 GO 的网关地址的 ping 会话 30 秒

    • 如果方案是 Post-AP-Connect,WFD 客户端还会执行到 GO 的并发会话

  • WaitForClientDisconnect

    • Post-WFD GO 等待来自 WFD 客户端的断开连接通知(指示客户端已完成其 ping 会话的信号)
  • CalculatePerformance

    • 检查测试中之前存储的性能数据
  • 清理

    • IWFDScenarioTest.Cleanup

    • 从 AP 断开连接

此方案流的代码位于 \wireless\wifidirect\tests\perfscenarios\scenariotest.cs

所需的测试参数

TargetDeviceAddress

这是电脑到电脑方案中其他设备的设备地址。 此变量用于在建立 WFD 配对后检查堆栈状态。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:TargetDeviceAddress=11:22:33:44:55:66

可选测试参数

WaitForInput

指定此标志将强制 LoadSettings 函数在继续测试之前等待控制台输入。 这对于手动批量运行测试非常有用,因为测试之间没有同步。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:WaitForInput=true

DisablePerfCheck

指定此标志将跳过 CheckPerformance 函数中的数据传输和连接性能检查。 它还将跳过跟踪 ping 会话。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:DisablePerfCheck=true

DisableDataPerf

指定此标志将跳过 CheckPerformance 函数中的数据传输检查。 它还将跳过跟踪 ping 会话。 仍会进行连接性能检查。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:DisableDataPerf=true

置换选择参数

方案

这定义了要使用的基础 Wi-Fi Direct 方案。 为了确保验证正确的方案,此值应在两台电脑之间匹配。

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:Scenario = 'Value' [and]...“ ...

可能值

GONegotation - 此值设置堆栈,以便在配对期间在 2 台电脑之间通过 Wi-Fi Direct 协议执行 GO 协商。 这将检查是否存在默认 GO 配置文件。如果存在,则在继续测试之前,将删除默认 GO 配置文件注册表项,并重置 wlansvc/其他相关服务。 由于 GO 协商发生在具有相同意图值的 2 台电脑之间,因此 GO 协商的结果是未知的。 连续运行两次 GO 协商测试将确保两个结果都得到正确执行。

邀请 - 此值设置堆栈,以便在配对期间在 2 台电脑之间通过 Wi-Fi Direct 协议执行邀请。 这将检查是否存在默认 GO 配置文件。如果没有,则在继续测试之前,将打开/关闭自治 GO 来创建默认 GO 配置文件。

JoinExitingGO - 此值设置堆栈,以便在配对期间在 2 台电脑之间执行“加入现有 GO”方案。 请注意,由于 WFDP2P/PeerFinder 方案层中可发现性的使用模式(始终设置可发现),以及配对 API 在加入现有 GO 之前执行 GO 协商的首选项,因此只能使用 WFDPlatform 方案层进行这种更具体的设置。

LocalRole

这定义了本地电脑是方案测试中的侦听器还是连接器。

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:LocalRole = 'Value' [and]...“ ...

可能值

连接器 - 此值将准备测试,使其成为给定电脑到电脑方案的连接器。 每个方案层的实际步骤略有不同,但基本上可归纳如下:

  1. 循环发现最长 45 秒,直到找到目标侦听器计算机。

  2. 如果找到,则配对到该设备。

  3. 验证是否已成功建立连接。

侦听器 - 此值将准备测试,使其成为给定电脑到电脑方案的侦听器。 每个方案层的实际步骤略有不同,但基本上可归纳如下:

  1. 注册有关传入连接的通知。

  2. 等待传入连接 2 分钟。

  3. 如果收到传入连接,请接受该连接请求。

  4. 验证是否已成功建立连接。

ScenarioLayer

这定义了将运行测试的操作系统层。 它选择在调用 RunScenario 函数时要使用的具体 IWFDScenarioTest 实现。

IWFDScenarioTest 定义的代码位于 wireless\wifidirect\tests\PerfScenarios\ScenarioTest.cs

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[and] @Data:ScenarioLayer = 'Value' [and]...“ ...

可能值

WFDPlatform

此值会导致测试使用 Wi-Fi Direct 平台 API 来运行给定方案。

此方案的实现类是 WFDPlatformScenarioTest。

  • 代码位于 wireless\wifidirect\tests\PerfScenarios\WFDPlatformScenarioTest.cs

实现类使用互操作帮助程序 WFDPlatformScenarioHelper 类从 C# 调用 WFD 平台 API。

  • 代码位于 common\sharedcomponents\sharedcomponents\WFDWrapper.cpp

WFDP2P

此值会导致测试使用 WFDP2P API 来运行给定方案。

此方案的实现类是 WFDP2PScenarioTest。

  • 代码位于 wireless\wifidirect\tests\PerfScenarios\WFDP2PScenarioTest.cs

实现类使用互操作帮助程序 WFDP2PScenarioHelper 类从 C# 调用 WFDP2P API。

  • 代码位于 common\sharedcomponents\sharedcomponents\WFDWrapper.cpp

不支持的 WFD 方案

由于 2 台计算机这一测试限制和 WFDP2P/PeerFinder API 的使用模式,此方案层不支持 JoinExistingGO 方案。

所需的测试参数

APPID

此参数指定要使用的 PeerFinder 应用程序标识符。 这是跨电脑匹配所必需的,否则 PeerFinder 发现将失败。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:APPID=SomeAppId

PeerFinder

此值会导致测试使用 PeerFinder API 集来运行给定方案。

此方案的实现类是 WFDPeerFinderScenarioTest。

  • 代码位于 wireless\wifidirect\tests\PerfScenarios\WFDPeerFinderScenarioTest.cs

实现类使用内置的 WinRT API 来运行实际方案。

但是,需要一个解决方法才能使这些 API 在非 Mosh 设置中工作。 实现类使用互操作帮助程序 WFDPeerFinderScenarioHelper 来调用所需的解决方法 API。

  • 代码位于 common\sharedcomponents\sharedcomponents\WFDWrapper.cpp

不支持的 WFD 方案

由于 2 台计算机这一测试限制和 WFDP2P/PeerFinder API 的使用模式,此方案层不支持 JoinExistingGO 方案。

所需的测试参数

APPID

此参数指定要使用的 PeerFinder 应用程序标识符。 这是跨电脑匹配所必需的,否则 PeerFinder 发现将失败。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:APPID=SomeAppId

APConnectSetting

这定义了本地计算机在方案测试中的基础结构 AP 连接尝试的排序/存在。

请务必注意,变量在不同的电脑之间可能不同(电脑 1 在 WFD 之前连接,电脑 2 在 WFD 之后连接)。 这允许在 2 台计算机上为 APConnectSetting 提供 3x3 的测试验证矩阵。

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[and] @Data:APConnectSetting = 'Value' [and]...“ ...

可能值

NoAPConnection

不尝试 AP 连接。 这是最简单的测试组合。

APConnectBeforeWFD

在 Wi-Fi Direct 方案发生之前尝试 AP 连接。 为 AP 连接建立 L2 后,将对基线数据性能数据进行采样。

建立 WFD 后,还将采用新的并发数据样本。

所需的测试参数

ChannelNumber

这将指定 AP 的预期信道号。

这将在建立 AP 连接后进行验证。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:ChannelNumber=3

SSID 和 PSK

使用这对变量将创建手动连接 WPA2PSK, AES WLAN 配置文件,该配置文件将在测试的生存期内临时添加到 WLAN 配置文件存储中。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:SSID=SomeSSID /p:PSK=SomePSK

ProfilePath

可以提供此变量来代替 SSID 和 PSK。

指定它将加载指向此处的文件

它将从此配置文件中提取 SSID、密钥和密钥类型,并生成包含此信息的临时配置文件。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:ProfilePath=path\to\profile.xml

APConnectAfterWFD

在 Wi-Fi Direct 方案发生之后尝试 AP 连接。

建立 Post-WFD AP 连接后,将采用新的并发数据样本。

所需的测试参数

ChannelNumber

这将指定 AP 的预期信道号。

这将在建立 AP 连接后进行验证。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:ChannelNumber=3

SSID 和 PSK

使用这对变量将创建手动连接 WPA2PSK, AES WLAN 配置文件,该配置文件将在测试的生存期内临时添加到 WLAN 配置文件存储中。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:SSID=SomeSSID /p:PSK=SomePSK

ProfilePath

可以提供此变量来代替 SSID 和 PSK。

指定它将加载指向此处的文件

它将从此配置文件中提取 SSID、密钥和密钥类型,并生成包含此信息的临时配置文件。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:ProfilePath=path\to\profile.xml

发现测试

发现测试流

查找器设备

DiscoverStress 类布局为一系列必须按顺序运行的测试方法:

  • LoadSettings

    • 读取命令行参数
  • SynchronizeDevices

    • 执行发现操作,直到一次性(最长 30 秒)找到预期设备列表中的所有条目

    • 这样,在收集发现成功信息之前,测试就知道所有设备都是可发现的

    • 到最后,如果所有设备都已找到,但从未一次性找到,则测试会将设备视为已同步(但是,如果在同步步骤中无法同时找到所有设备,则可预计结果不佳)

  • DiscoverStress

    • 使用给定的发现参数执行 1 分钟的连续发现,跟踪每个发现的结果
  • 计算性能

    • 分析预期设备列表中每台设备存储的发现信息

    • 如果预期设备列表中任何一台设备的成功率低于 95%,则测试失败

目标设备

还包括一个帮助程序测试,用于在一定时间内轻松设置侦听器设备。

  • 侦听器

    • Set Discoverable(true)

    • Sleep(listen time)

    • Set Discoverable(false)

所需的测试参数

预期设备

此参数是预期要发现的设备地址的以分号分隔的列表。 必须找到所有这些设备。

用法

Te WFD.Perf.Scenario.Tests.dll … /p:ExpectedDevices=11:22:33:44:55:66

Te WFD.Perf.Scenario.Tests.dll … /p:ExpectedDevices=11:22:33:44:55:66;aa:bb:cc:dd:ee:ff;12:34:56:78:90:a0

置换选择参数

DiscoverRole

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverRole = 'Value' [and]...“ ...

可能值

FinderDevice - 此角色将“执行查找”。 此值将持续发现并计算性能数据。

TargetDevice - 此角色将“执行侦听”。 它仅执行一段时间,然后关闭。 此测试不需要任何其他置换选择参数。

DiscoverSpeed

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverSpeed = 'Value' [and]...“ ...

可能值

FastDiscovery - 已发出发现操作,超时时间为 1000 毫秒。

BetaFastDiscovery - 已发出发现操作,超时时间为 2500 毫秒。

StandardDiscovery - 已发出发现操作,超时时间为 10000 毫秒。

DiscoverType

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverType = 'Value' [and]...“ ...

可能值

通配符 - 已发出发现操作,且没有采用设备筛选器。

目标 - 已发出发现操作,且每个设备条目应用一个设备筛选器。

DiscoverMode

用法

Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverMode = 'Value' [and]...“ ...

可能值

NoPreference - 如果未指定首选项,则根据 DiscoverSpeed 设置指定以下内容:

  • FastDiscovery - ScanOnly

  • BetaFastDiscovery - ScanOnly

  • StandardDiscovery - Auto

ScanOnly - 发现通过 dot11_wfd_discover_type_scan_only 发出。

FindOnly - 发现通过 dot11_wfd_discover_type_find_only 发出。

Auto - 发现通过 dot11_wfd_discover_type_auto 发出。

ScanSocialChannels - 发现通过 dot11_wfd_discover_type_scan_social_channels 发出。

测试示例

方案测试

以下示例将在 1 个侦听器和 1 台连接器电脑上运行以下内容:

  • 方案:GO 协商

  • ScenarioLayer:WFD 平台

  • PC1 AP 连接设置:APConnectBeforeWFD

  • PC2 AP 连接设置:APConnectAfterWFD

连接器

Te WFD.Perf.Scenario.Tests.dll /select:“@Data:Scenario = 'GONegotiation' and @Data:LocalRole = 'Connector' and @Data:ScenarioLayer = 'WFDPlatform' and @Data:APConnectSetting = 'APConnectAfterWFD'” /p:TargetDeviceAddres 11:22:33:44:55:66 /p:SSID=APSSID1 /p:PSK=PSKForSSID1 /p:ChannelNumber=6

侦听器

Te WFD.Perf.Scenario.Tests.dll /select:“@Data:Scenario = 'GONegotiation' and @Data:LocalRole = 'Connector' and @Data:ScenarioLayer = 'WFDPlatform' and @Data:APConnectSetting = 'APConnectAfterWFD'” /p:TargetDeviceAddres 66:44:22:11:22:33 /p:SSID=APSSID2 /p:PSK=PSKForSSID2 /p:ChannelNumber=3

发现测试

FinderDevice

Te WFD.Perf.Scenario.Tests.dll /select:“@Data:DiscoverRole = 'FinderDevice' and @Data:DiscoverSpeed = 'FastDiscovery' and @Data:DiscoverType = 'Wildcard' and @Data:DiscoverMode = 'NoPreference'” /p:ExpectedDevices=11:22:33:44:55:66;ab:cd:ef:gh:ab:cd

TargetDevice

Te WFD.Perf.Scenario.Tests.dll /select:"@Data:DiscoverRole = 'TargetDevice'" /p:ListenTimeSeconds=200

发现测试组合:

发现角色 发现速度 发现类型 参数

FinderDevice

FastDiscovery

通配符

预期的 MAC 列表

FinderDevice

FastDiscovery

目标

预期的 MAC 列表

FinderDevice

BetaFastDiscovery

通配符

预期的 MAC 列表

FinderDevice

BetaFastDiscovery

目标

预期的 MAC 列表

FinderDevice

StandardDiscovery

通配符

预期的 MAC 列表

FinderDevice

StandardDiscovery

目标

预期的 MAC 列表

TargetDevice

不适用

不适用

侦听时间

性能方案测试组合:

方案 ScenarioLayer PC1_APConnectivity PC2_APConnectivity 方案结果

GONegotiation

WFDPlatform

NoAPConnection

NoAPConnection

GONegotiation

WFDPlatform

NoAPConnection

APConnectBeforeWFD

GONegotiation

WFDPlatform

NoAPConnection

APConnectAfterWFD

GONegotiation

WFDPlatform

APConnectBeforeWFD

NoAPConnection

GONegotiation

WFDPlatform

APConnectBeforeWFD

APConnectBeforeWFD

GONegotiation

WFDPlatform

APConnectBeforeWFD

APConnectAfterWFD

GONegotiation

WFDPlatform

APConnectAfterWFD

NoAPConnection

GONegotiation

WFDPlatform

APConnectAfterWFD

APConnectBeforeWFD

GONegotiation

WFDPlatform

APConnectAfterWFD

APConnectAfterWFD

邀请

WFDPlatform

NoAPConnection

NoAPConnection

邀请

WFDPlatform

NoAPConnection

APConnectBeforeWFD

邀请

WFDPlatform

NoAPConnection

APConnectAfterWFD

邀请

WFDPlatform

APConnectBeforeWFD

NoAPConnection

邀请

WFDPlatform

APConnectBeforeWFD

APConnectBeforeWFD

邀请

WFDPlatform

APConnectBeforeWFD

APConnectAfterWFD

邀请

WFDPlatform

APConnectAfterWFD

NoAPConnection

邀请

WFDPlatform

APConnectAfterWFD

APConnectBeforeWFD

邀请

WFDPlatform

APConnectAfterWFD

APConnectAfterWFD

JoinExistingGO

WFDPlatform

NoAPConnection

NoAPConnection

JoinExistingGO

WFDPlatform

NoAPConnection

APConnectBeforeWFD

JoinExistingGO

WFDPlatform

NoAPConnection

APConnectAfterWFD

JoinExistingGO

WFDPlatform

APConnectBeforeWFD

NoAPConnection

JoinExistingGO

WFDPlatform

APConnectBeforeWFD

APConnectBeforeWFD

JoinExistingGO

WFDPlatform

APConnectBeforeWFD

APConnectAfterWFD

JoinExistingGO

WFDPlatform

APConnectAfterWFD

NoAPConnection

JoinExistingGO

WFDPlatform

APConnectAfterWFD

APConnectBeforeWFD

JoinExistingGO

WFDPlatform

APConnectAfterWFD

APConnectAfterWFD

GONegotiation

WFDP2P

NoAPConnection

NoAPConnection

GONegotiation

WFDP2P

NoAPConnection

APConnectBeforeWFD

GONegotiation

WFDP2P

NoAPConnection

APConnectAfterWFD

GONegotiation

WFDP2P

APConnectBeforeWFD

NoAPConnection

GONegotiation

WFDP2P

APConnectBeforeWFD

APConnectBeforeWFD

GONegotiation

WFDP2P

APConnectBeforeWFD

APConnectAfterWFD

GONegotiation

WFDP2P

APConnectAfterWFD

NoAPConnection

GONegotiation

WFDP2P

APConnectAfterWFD

APConnectBeforeWFD

GONegotiation

WFDP2P

APConnectAfterWFD

APConnectAfterWFD

邀请

WFDP2P

NoAPConnection

NoAPConnection

邀请

WFDP2P

NoAPConnection

APConnectBeforeWFD

邀请

WFDP2P

NoAPConnection

APConnectAfterWFD

邀请

WFDP2P

APConnectBeforeWFD

NoAPConnection

邀请

WFDP2P

APConnectBeforeWFD

APConnectBeforeWFD

邀请

WFDP2P

APConnectBeforeWFD

APConnectAfterWFD

邀请

WFDP2P

APConnectAfterWFD

NoAPConnection

邀请

WFDP2P

APConnectAfterWFD

APConnectBeforeWFD

邀请

WFDP2P

APConnectAfterWFD

APConnectAfterWFD

GONegotiation

PeerFinder

NoAPConnection

NoAPConnection

GONegotiation

PeerFinder

NoAPConnection

APConnectBeforeWFD

GONegotiation

PeerFinder

NoAPConnection

APConnectAfterWFD

GONegotiation

PeerFinder

APConnectBeforeWFD

NoAPConnection

GONegotiation

PeerFinder

APConnectBeforeWFD

APConnectBeforeWFD

GONegotiation

PeerFinder

APConnectBeforeWFD

APConnectAfterWFD

GONegotiation

PeerFinder

APConnectAfterWFD

NoAPConnection

GONegotiation

PeerFinder

APConnectAfterWFD

APConnectBeforeWFD

GONegotiation

PeerFinder

APConnectAfterWFD

APConnectAfterWFD

邀请

PeerFinder

NoAPConnection

NoAPConnection

邀请

PeerFinder

NoAPConnection

APConnectBeforeWFD

邀请

PeerFinder

NoAPConnection

APConnectAfterWFD

邀请

PeerFinder

APConnectBeforeWFD

NoAPConnection

邀请

PeerFinder

APConnectBeforeWFD

APConnectBeforeWFD

邀请

PeerFinder

APConnectBeforeWFD

APConnectAfterWFD

邀请

PeerFinder

APConnectAfterWFD

NoAPConnection

邀请

PeerFinder

APConnectAfterWFD

APConnectBeforeWFD

邀请

PeerFinder

APConnectAfterWFD

APConnectAfterWFD