RDP Test Suite Cross Platform

Vivian Tian Zhenhua Hu Senior Software Engineer Software Engineer II

Windows Protocol Test Suite Team Windows Protocol Test Suite Team Cross Platform Background

RDP Test Suite Cross Platform Status

Agenda How to Use?

Demo

Q&A Test suite 4.21.1.0 GitHub Release 4.21.1.0

• Migrated to .NET 5.0 • Support cross platform • Add new MS-RDPELE test cases RDP Test Suites Release

• PTF v2.1.0 on NuGet

• Test Suite Release v4.21.1.0 on GitHub RDPClient • RDP Client Test Suite Test Suite • Test suite • Sut control agent Docker RDPServer Images Test Suite • Codec tool (web service) • RDP Server Test Suite RDP Cross Platform

• PTM GUI v4.21.1.0 Codec PTM Web • PTM Cli v4.21.1.0 GUI/Cli Service • Docker Images on Docker Hub SUT Control Agent GitHub Activities

Protocol Implementations

Interoperability Testing

Automation Testing Test Suite Infrastructure: .NET Framework

PTM GUI/CLI .NET Framework is a Windows-only version of .NET for building any type of app that runs on Windows. FileServer RDP Test …… Test Suite Suite Prerequisites Proto SDK • Visual Studio 2017 or higher version • .NET Framework 3.5.1 Protocol Test Framework • Spec Explorer • Protocol Test Framework (PTF) • Wix Toolset .NET Framework • Wix Toolset Visual Studio Extension

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

PTM CLI

FileServer RDP Test Suite …… Test Suite WindowsProtocolTestSuites 4.21.1.0

Protocol Test aka.ms/wpts Proto SDK Framework

.NET SDK

Windows Linux MacOS Protocol Test Framework Features .NET Framework .NET Version Features 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

Rewrite SSP & SSPI with C# • NTLM • Kerberos • Negotiate

Remove Fix .NET Spec Explorer Incompatible APIs dependency

Protocol SDK Protocol Test Suites

RDP Client, RDP Server Test Suites Codec service, SUT control agent

Migrated to .NET 5

Migrated to .NET 5 and ASP.NET Core Removed Spec Explorer dependency

Removed WiX dependency

Enabled all cases on multiple platforms Enable to run on multiple platforms

Support Docker image

RDP Codec service: http://192.168.142.72 PTM GUI / PTMCli

PTM GUI PTMCli

Similar Experience as Before: GUI, Auto Detect, Run case, Profile, etc. Run case with profile, Multiple Instance

.NET Framework Test Suite .NET Test Suite

Windows Linux macOS Windows Test Suite Cross Platform Status Jan 2021 Sep 2020 Test Suite 4.21.1.0 Test Suite 4.20.9.0 Docker Image rdpclient/rdpserver PTF 2.0.0 … Sep 2019 Docker Image fileserver Test Suite 3.19.9.0 .NET 5 SUT Control Agent ASP .NET Core Remotely Trigger .NET Core 3 PTF 1.0.7000.0

Sep 2016 Linux Integration Test Suite 1.0 Solution PTF 1.0.5000.0

Open source to GitHub How to use ? - Build and Run from Scratch

•Install .NET 5 Install

•Clone source code from GitHub repo: aka.ms/wpts Clone

Config •Modify ptfconfig file

•Build test suite Build •Build.ps1, Build.sh

Run •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] [-|--report reportFile] How to use ? - Run with Released Binaries

Install •Install .NET 5 •Download and extract the latest test suite package

Config •Modify ptfconfig file

Run •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

•Install Docker Desktop Install •Pull image from Docker Hub & Config Network Pull •docker pull testsuiteimage.azurecr.io/windowsprotocoltestsuites:rdpclient •docker pull testsuiteimage.azurecr.io/windowsprotocoltestsuites:rdpserver

Config •Modify ptfconfig file

Container Container Container Start •Start Container (test suite (test suite (test suite Unassigned •Docker container create instance1) instance 2) instance 3) •Docker container start Run •Run Test Cases •Docker run Host\VM OS files & libs

Host WindowsProtocolTestSuites GitHub aka.ms/wpts IO Lab Environment Topology

Protocol Testing Environments on Azure

RDP Client Testing Environments RDP Server Test Suite Environments

VPN connection

RDP Client Test Suite Driver RDP Client Test Suite SUT RDP Server Test Suite Driver RDP Server Test Suite SUT VPN connection RDP port: 4488 RDP port: 3389 RDP port: 3389 RDP port: 3389

VPN

Router

RDP Client Test Suite RDP Client Test Suite RDP implementation Meetup Driver Computer Meetup SUT RDP port: 4488 RDP port:3389

RDP Client Meetup Environments Reserve Meetup Environment Connect to Meetup Environment

Protocol Testing Environments on Azure

Meetup Environment

Run Test

Domain Controller SUT 1 Driver 1

Run Test VPN Gateway

Demo SUT Demo Driver SUT 2 Driver 2 1. Dial In Azure Test Environment via VPN 2. Remote to Driver Computer 3. Run Cases on Driver Computer against SUT DEMO Run RDPClient Test Suite with Run RDPClient Test Suite with PTMCli Docker Image on Linux Driver on Linux Driver

Zhenhua Hu Software Engineer II Windows Protocol Test Suite Team What’s Next?

Support More Test Suites

• WSP Test Suite • …

PTF

• More Features

PTM Cross Platform Enhancement

• GUI • Cli Build an Active Community

Report Issues Pull Requests

Feature Cases Requests Requests Q&A

© Copyright Corporation. All rights reserved.