Vivian Feng Huiren JIANG RDP Test Suites Embrace Open Source

Vivian TIAN Yan ZENG Window Protocol Test Suite Developers Agenda

Windows Test Suite Open Source

Open Source Community

Linux Integration Solution

Workshop Q&A Windows Protocol Test Suites Open Source

PTF Test Suite Test Suite Test Suite Test Suite Test Suite Test Suite Kickoff 1.0.5000.0 1.0.5000.0 … 3.18.3.0 3.18.6.0 3.18.9.0 3.19.1.0 3.19.3.0 Jan 2016 May 2016 June 2016 Mar 2018 Jun 2018 Sep 2018 Jan 2018 Mar 2019

• 10 releases since 2016 GitHub Download Number Trend 4781 • Total download number increased by 111% last year 6000 4670 4566 4468 • 48/48 issues closed 5000 4003 4351 4000 • 5 pull requests from external partners 2660 3000 2397 2455 2618 2261 2328 • Always a new release before every event 2000 • GitHub http://aka.ms/wptf 1000 0 • GitHub http://aka.ms/wpts Windows Protocol Test Suites Open Source

MIT License

• 11

• 45

• 2 Open Source Community

Protocol Implementations Open Source Community Privileges

Interoperability Testing 1. Privileges to trigger regression on GitHub 2. Issues will be handled with higher priority 3. Meetup Automation Testing • Workshop with 1-1 support • Private build for fresh artifacts • Gift Open Source Community

Clone Make change Build Pull Request

GitHub

Merge Regression Approve Review

• GitHub http://aka.ms/wptf • GitHub http://aka.ms/wpts * Check more details on GitHub about how to build test suites: Windows Protocol Test Suites/Readme.md Build an Active Community

Report Pull Issues Requests

Feature Cases Requests Requests Other Open Source Community Contribution

https://github.com/FreeRDP/FreeRDP/pull/5275 https://github.com/rdesktop/rdesktop/pull/317 Linux Integration Solution

Linux Lab Machine Test Suite RDP Client (SUT)

Remote Run Control SUT Status Control SUT Status

SUT Control Adapter • Used to control SUT status during testing. Example • Screen shot on RDP Client

4 Types: Test Suite 1. PowerShell RDP Client (SUT) 2. Interactive 3. Managed • Protocol Based • C#, Java

4. Shell Change Status SUT Control Adapter Protocol Based

https://github.com/Microsoft/WindowsProtocolTestSuites/tree/staging/TestSuites/RDP/RDPSUTControlAgent

Command Value Meaning START_RDP_CONNECTION 0x0001 Trigger SUT to start a RDP connection CLOSE_RDP_CONNECTION 0x0002 Trigger SUT to close all RDP connection AUTO_RECONNECT 0x0003 Trigger SUT to start an auto reconnect BASIC_INPUT 0x0004 Trigger SUT to do basic input on RDP client

SCREEN_SHOT 0x0005 Do a screen shot on RDP client and send graphic data back TOUCH_EVENT_SINGLE 0x0101 Ask SUT to trigger single touch event on RDP client TOUCH_EVENT_MULTIPLE 0x0102 Ask SUT to trigger multiple touch event on RDP client

TOUCH_EVENT_DISMISS_HOVERING_CONTACT 0x0103 Ask SUT to trigger a dismiss hovering contact event on RDP client

DISPLAY_UPDATE_RESOLUTION 0x0201 Ask SUT to trigger RDPEDISP message to update display resolution

Ask SUT to trigger RDPEDISP message to update monitor setting, DISPLAY_UPDATE_MONITORS 0x0202 such as add a monitor, remove a monitor or change monitor position DISPLAY_FULLSCREEN 0x0203 Ask SUT to change RDP client to full screen. SUT Control Adapter Protocol Based • Need to implement a simple program as an Agent to control SUT • C# and Java implementation

RDP Protocols Test Cases RDP Client SUT Remote Call Control Protocol Method Operate SUT Control Request Message SUT control Agent adapter SUT Control Response Message

Test Suite SUT SUT Control Adapter • Need Shell scripts and SSH Server on SUT Shell

RDP Protocols Test Cases RDP Client Call Method Operate SSH SUT control SSH adapter Public key authentication Server

Test Suite SUT Linux Integration Solution

Linux Lab Machine Windows Driver Computer Linux SUT

Remote Run Control SUT Status

• OpenSSH Client • OpenSSH Server/Client • OpenSSH Server • Shell • WSL • Shell or JRE • Windows Protocol Test Suites • PTM, profile file

Remote trigger script • Private Test Suite build with Shell Adapter • Shell scripts for SUT control • Trigger Windows test cases run • Private PTM Or Java Agent (.jar) • Copy logs back • Configuration scripts

* Get private build on GitHub: http://aka.ms/wpts and http://aka.ms/wptf branch shell-adapter Demo

• SUT Control Adapter: Java, Shell • Remote run test cases on Linux Automatically

Demo-Trigger Demo-Driver Demo-SUT Open Source Community Workshop

1. SUT control adapter 2. Remote run 3. Codec Tool http://10.10.0.70 http://192.168.0.9 http://192.168.0.8 Vivian TIAN Yan ZENG Feng HAN Huiren JIANG

• Beta Build

• PTF 1.0.6500.0 (supports Shell adapter) • PTM 3.19.6.0 • RDP client test suite 3.19.6.0 • Protocol based control adapter (.jar) • Shell scripts for remote run on Linux • Source code

• Release 3.19.3.0 MSI • PTF • PTM • Test Suites • Source code

• Azure VPN