Changes between Version 51 and Version 52 of HLKTesting


Ignore:
Timestamp:
06/20/19 12:53:22 (2 years ago)
Author:
Samuli Seppänen
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HLKTesting

    v51 v52  
    2020= Getting source code for tap-windows6 =
    2121
    22 Sgstair patched tap-windows6 to pass the HLK tests. At the moment (3rd May 2019) his work is not fully merged yet, so use [https://github.com/sgstair/tap-windows6/tree/hlkwork his branch] as a basis.
     22Sgstair patched tap-windows6 to pass the HLK tests. [https://github.com/sgstair/tap-windows6/tree/hlkwork His work] has now been merged to the upstream tap-windows6 project
    2323
    2424= HLK test environment overview =
     
    3333* Windows 10 desktop (32-bit)
    3434
    35 Wintun was able to pass HLK testing without any ''physical'' HLK clients. But due to wintun's narrower scope it had to pass much fewer HLK tests (~50 in total) than tap-windows6.
    36 
    37 Both Windows Server 2016 and 2012r2 should work fine as the HLK controller. The controller can be virtualized (e.g. Virtualbox or VMWare).
     35Wintun was able to pass HLK testing without any ''physical'' HLK clients. But because Wintun advertised itself as a virtual device it had a  narrower scope and had to pass fewer HLK tests (~50 in total) than tap-windows6.
     36
     37For the HLK controller you can use a virtualized (Virtualbox, VMware) Windows Server 2016 or 2012r2 instance.
    3838
    3939For tap-windows6 testing a support machine is also needed. To be on the safe side use the same OS version and build as the HLK client.
     
    4444* HLK clients need to be physical computers, not virtualized (unverified)
    4545
    46 Also remember to rename the network devices ("MessageDevice", "SupportDevice0") as described [https://docs.microsoft.com/en-us/windows-hardware/test/hlk/testref/lan-testing-prerequisites LAN testing prerequisites].
    47 
    4846Also try to get a quality fast network switch. Slow switches can cause issues on some of the tests. However, a cheap 10€ switch may end up working just fine.
    4947
    5048= Installing HLK software =
    5149
    52 For HLK software installation please refer to the official MS documentation, check out [https://github.com/Puppet-Finland/puppet-hlk/ puppet-hlk] or try out the [https://docs.microsoft.com/en-us/windows-hardware/test/hlk/getstarted/getstarted-vhlk Windows Virtual Hardware Lab Kit].
     50For HLK software installation please refer to the official MS documentation, check out [https://github.com/Puppet-Finland/puppet-hlk/ puppet-hlk] and [https://github.com/Puppet-Finland/puppet-hlk_tap6_openvpn puppet-hlk_tap6_openvpn] or try out the [https://docs.microsoft.com/en-us/windows-hardware/test/hlk/getstarted/getstarted-vhlk Windows Virtual Hardware Lab Kit].
    5351
    5452The version of HLK you need to install depends on the version of Windows you're attempting certify as described in [https://docs.microsoft.com/en-us/windows-hardware/test/hlk/ Microsoft documentation]. To check Windows version from Powershell do:
     
    5856}}}
    5957
    60 = Preparing HLK clients for test-signed drivers =
    61 
    62 Installation of HLK client software automatically enables test signing mode in Windows. Tap-windows6 build system supports test-signing the driver automatically. You need to put the automatically generated test certificate to the Windows certificate store on the HLK clients. After that you can install the test-signed driver without signature errors.
     58= Preparing HLK clients =
     59
     60For multimachine tests you need to name some of the devices on the HLK test client (that actually runs the tests) and support machine (second machine that is connected “back to back” through the VPN). The non-VPN interface through which the nodes communicate with the HLK controller should be named "MessageDevice" and the tap-windows6 adapter on the support machine should be named "SupportDevice0". Details in [https://docs.microsoft.com/en-us/windows-hardware/test/hlk/testref/lan-testing-prerequisites LAN testing prerequisites].
     61
     62You also have to enable test signing so that you can load unsigned ("to be tested") drivers on both HLK client and support machine:
     63
     64{{{
     65PS> bcdedit /set testsigning on
     66PS> shutdown /r
     67}}}
     68
     69Then you need to install the HLK client software from the HLKInstall SMB share on the controller.
     70
     71You also need the automatically generated test certificate ("WDKTest*") from the tap-windows6 build machine to the Windows certificate store on the HLK clients. After all this you can install the test-signed driver without signature errors.
    6372
    6473= Setting up OpenVPN for HLK tests =
     
    101110Some have had more luck with the legacy service (OpenVPNServiceLegacy).
    102111
    103 
    104 
    105 
    106 == Testing OpenVPN connectivity ==
    107 
    108 Assuming the above OpenVPN config you can very correct OpenVPN / tap-windows6 operation easily:
    109 
    110 * Verify that the TAP adapter has an IPv6 address (e.g. using ipconfig)
    111 * Ensure that the HLK client can ping the following VPN server addresses:
    112  * 10.218.112.1
    113  * 2001:db8:6666::2
    114 
    115112= Preparing HLK studio/controller =
    116113
     
    132129
    133130== Multi-machine tests ==
    134 
    135 Setting up multi-machine tests is pretty straightforward to do. You just need to name some of the devices on the test client (that actually runs the tests) and support client (second machine that is connected “back to back” through the VPN). Details in [https://docs.microsoft.com/en-us/windows-hardware/test/hlk/testref/lan-testing-prerequisites LAN testing prerequisites].
    136131
    137132Then when you go to schedule the multimachine test, you can change the “role” dropdown to the support machine, and select the support machine (should be there if you have two ready machines in the pool).
     
    280275The Static Tools Logo Test checks that the driver build is using the static driver code analysis tool (SDV). Even if that is the case it is necessary to copy some files so that it can read the logs and check. Otherwise the test will fail.
    281276
    282 = Various test issues =
     277= Various known issues =
     278
     279== HLK clients can't be activated ==
     280
     281If you upgrade HLK software on both controller and client/support you may end up with a situation where you can't put any of the clients into "Ready" state. You may be able to resolve this by removing the machines from the pool, and deleting them from the default pool, and then restarting HLKSvc service on the clients.
    283282
    284283== Packet transmission too slow ==
     
    365364= HLK logging =
    366365
    367 HLK controller logs problems mostly to event logs, so when tests are failing in an unusual fashion you can possibly find out why in the event viewer. Causes for test failures are generally well visible from the logs in HLK Studio.
     366HLK controller logs problems mostly to event logs, so when tests are failing in an unusual fashion you can possibly find out why in the event viewer. When you have issue putting an HLK client into "Ready" state, for example, have a look at the event log.
     367
     368The HLK tests fortunately provide tons of logging visible for HLK Studio. Check sections "Error", "Task log", "Infrastructure" in the context menu for the test in question to see what you can find.
    368369
    369370= Debugging =
     
    385386The are known to work sometimes, but so far I have not been able to establish any logic here.
    386387
    387 The HLK tests fortunately provide tons of logging. Check sections "Error", "Task log", "Infrastructure" in the context menu for the test in question to see what you can find.
    388 
    389388= Addendum =
    390389
     
    416415* [https://github.com/sgstair/tapdiag tapdiag]: a tool that is used to manipulate tap-windows6 at runtime for some HLK tests
    417416* [https://github.com/Puppet-Finland/puppet-hlk/ puppet-hlk]: Puppet module for setting up HLK controllers and HLK clients
     417* [https://github.com/Puppet-Finland/puppet-hlk_tap6_openvpn puppet-hlk_tap6_openvpn]: Puppet module for setting up OpenVPN and network interface configurations for HLK testing
    418418* [https://docs.microsoft.com/en-us/windows-hardware/test/hlk/getstarted/getstarted-vhlk Windows Virtual Hardware Lab Kit]
    419419* [https://aka.ms/HLKPlaylist] Compatibility Play Lists (Understanding is these are the only ones necessary to get signed)