RDP Test Suite Cross Platform
Vivian TianSenior Software Engineer
Windows Protocol Test Suite Team
Zhenhua HuSoftware Engineer II
Windows Protocol Test Suite Team
Agenda
Cross Platform Background
RDP Test Suite Cross Platform Status
How to Use?
Demo
Q&A
Release 4.21.1.0
• Migrated to .NET 5.0
• Support cross platform
• Add new MS-RDPELE test cases
Test suite 4.21.1.0 GitHub
• PTF v2.1.0 on NuGet
• Test Suite Release v4.21.1.0 on GitHub
• RDP Client Test Suite
• Test suite
• Sut control agent
• Codec tool (web service)
• RDP Server Test Suite
• PTM GUI v4.21.1.0
• PTM Cli v4.21.1.0
• Docker Images on Docker Hub
RDP Cross
Platform
RDPClient
Test Suite
RDPServer
Test Suite
Codec
Web
Service
SUT
Control
Agent
PTM
GUI/Cli
Docker
Images
RDP Test Suites Release
GitHub Activities
Interoperability Testing
Protocol Implementations
Automation Testing
Test Suite Infrastructure: .NET Framework
.NET Framework
Protocol Test Framework
FileServer
Test Suite
RDP Test
Suite……
Windows
Proto SDK
PTM GUI/CLI
Prerequisites
• Visual Studio 2017 or higher version
• .NET Framework 3.5.1
• Spec Explorer
• Protocol Test Framework (PTF)
• Wix Toolset
• Wix Toolset Visual Studio Extension
.NET Framework is a Windows-only version of
.NET for building any type of app that runs on
Windows.
Test Suite Infrastructure: .NET.NET is a single unified platform to build desktop, web, cloud, mobile, gaming, IoT, and AI apps.
Test Suite Infrastructure: .NET
Windows Linux MacOS
.NET SDK
Proto SDK
FileServer
Test SuiteRDP Test Suite ……
Protocol Test
Framework
PTM CLI
WindowsProtocolTestSuites 4.21.1.0
aka.ms/wpts
Protocol Test FrameworkFeatures .NET Framework
Version Features
.NET
Version Features
Release GitHub MSI NuGet Package
Install Explicitly install MSI Side-by-side with test suites
WiX Dependency Yes No
Spec Explorer Yes No
Test Environment ✓ ✓
Configuration (ptfconfig) ✓ ✓
Checking ✓ ✓
Power Shell Adapter ✓ ✓
Managed Adapter ✓ ✓
Shell Adapter ✓ ✓
Interactive Adapter ✓ ✓
File Logging ✓ ✓
Console Logging ✓ ✓
Beacon Logging ✓
ETW logging ✓
Automatic Network Capturing ✓
Protocol SDK
Protocol SDK
Remove
Spec Explorer
dependency
Rewrite SSP & SSPI with C#
• NTLM
• Kerberos
• Negotiate
Fix .NET
Incompatible APIs
Protocol Test Suites
RDP Client, RDP Server Test Suites
Migrated to .NET 5
Removed Spec Explorer dependency
Removed WiX dependency
Enabled all cases on multiple platforms
Support Docker image
Codec service, SUT control agent
Migrated to .NET 5 and ASP.NET Core
Enable to run on multiple platforms
RDP Codec service: http://192.168.142.72
PTM GUI / PTMCli
.NET Framework Test Suite .NET Test Suite
Similar Experience as Before:
GUI, Auto Detect, Run case, Profile, etc.
PTM GUI
Windows
Windows Linux macOS
Run case with profile, Multiple Instance
PTMCli
Open source to GitHub
Linux Integration Solution
.NET Core 3
.NET 5
ASP .NET Core
…
Test Suite Cross Platform StatusSep 2020
Test Suite 4.20.9.0
PTF 2.0.0
Docker Image fileserver
Jan 2021
Test Suite 4.21.1.0
Docker Image rdpclient/rdpserver
Sep 2016
Test Suite 1.0
PTF 1.0.5000.0
Sep 2019
Test Suite 3.19.9.0
SUT Control Agent
Remotely Trigger
PTF 1.0.7000.0
How to use ? - Build and Run from Scratch
Install
Clone
Config
Build
Run
•Install .NET 5
•Clone source code from GitHub repo: aka.ms/wpts
•Modify ptfconfig file
•Run with Scripts, PTMCli or PTM (Windows)• ./RunTestCasesByFilter.sh "TestCategory=BVT&FullyQualifiedName~BVT_ConnectionTest"
• .\RunTestCasesByFilter.ps1 -Filter "TestCategory=BVT&FullyQualifiedName~BVT_ConnectionTest"
• PtmCli.exe <-p|--profile profileName> [-s|--selected] [--categories categories] [-r|--report reportFile]
•Build test suite •Build.ps1, Build.sh
•Install .NET 5
•Download and extract the latest test suite package
Install
•Modify ptfconfig fileConfig
Run
How to use ? - Run with Released Binaries
•Run with Scripts, PTMCli or PTM (Windows)• ./RunTestCasesByFilter.sh "TestCategory=BVT&FullyQualifiedName~BVT_ConnectionTest"
• .\RunTestCasesByFilter.ps1 -Filter "TestCategory=BVT&FullyQualifiedName~BVT_ConnectionTest"
• PtmCli.exe <-p|--profile profileName> [-s|--selected] [--categories categories] [-r|--report reportFile]
How to use ? – Run with Docker
Host
Host\VM OS files & libs
Container
(test suite
instance1)
Container
(test suite
instance 2)
Container
(test suite
instance 3)
Unassigned
•Install Docker Desktop
•Modify ptfconfig file
•Run Test Cases•Docker run
•Pull image from Docker Hub & Config Network•docker pull testsuiteimage.azurecr.io/windowsprotocoltestsuites:rdpclient
•docker pull testsuiteimage.azurecr.io/windowsprotocoltestsuites:rdpserver
•Start Container•Docker container create
•Docker container start
Install
Pull
Config
Start
Run
IO Lab Environment Topology
RDP Client Testing Environments
RDP Client Test Suite Driver RDP Client Test Suite SUT
RDP Client Meetup Environments
RDP Client Test SuiteMeetup Driver Computer
RDP Client Test SuiteMeetup SUT
Protocol Testing Environments on Azure
VPN
VPN connection
VPN connection
RDP Server Test Suite Environments
RDP Server Test Suite Driver RDP Server Test Suite SUT
Router
RDP implementation
RDP port: 4488 RDP port: 3389 RDP port: 3389 RDP port: 3389
RDP port: 4488 RDP port:3389
Reserve Meetup Environment
Domain Controller
SUT 2 Driver 2
SUT 1 Driver 1
Meetup Environment
Demo SUT Demo Driver
Protocol Testing Environments on Azure
VPN Gateway
Connect to Meetup Environment
1. Dial In Azure Test Environment via VPN
2. Remote to Driver Computer
3. Run Cases on Driver Computer against SUT
Run Test
Run Test
DEMO
Zhenhua HuSoftware Engineer IIWindows Protocol Test Suite Team
Run RDPClient Test Suite with
PTMCli
on Linux Driver
Run RDPClient Test Suite with
Docker Image
on Linux Driver
What’s Next?
•WSP Test Suite
• …
Support More Test Suites
•More Features
PTF
•GUI
• Cli
PTM Cross Platform Enhancement
Build an Active Community
Report Issues Pull Requests
Feature
Requests
Cases
Requests
© Copyright Microsoft Corporation. All rights reserved.
Q&A