Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This sample shows how to create a project, run tests, and create a package for submission.
C#
//-----------------------------------------------------------------------
// <copyright file="HelloWorld.cs" company="Microsoft">
// Copyright © Microsoft Corporation. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace Samples
{
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading;
using Microsoft.Windows.Kits.Hardware.ObjectModel;
using Microsoft.Windows.Kits.Hardware.ObjectModel.DBConnection;
using Microsoft.Windows.Kits.Hardware.ObjectModel.Submission;
public class HelloWorld
{
public static void Main(string[] args)
{
string projectName = "my new project";
string operatingSystemType = "Windows 7 x64";
string controllerName = args[1];
// first, connect to the server
ProjectManager manager = new DatabaseProjectManager(controllerName);
//---------------
// computer and machine pool management
//---------------
// now, create a machine pool
MachinePool rootPool = manager.GetRootMachinePool();
MachinePool testPool;
testPool = manager.GetRootMachinePool().GetChildPools().Where(x => x.Name == "TestPool").FirstOrDefault();
if (testPool == null)
{
testPool = manager.GetRootMachinePool().CreateChildPool("TestPool");
}
// the next line enumerates all the computers in the default pool
// where the operating system type of the computer is "Windows 7 x64"
// note that this uses the LINQ Where extension
foreach (Machine machine in rootPool.DefaultPool.GetMachines().Where(x => x.OSPlatform.Description == operatingSystemType))
{
// each of these computers is then moved into the test pool
rootPool.DefaultPool.MoveMachineTo(machine, testPool);
}
// now, make sure that the computers are in a ready state
foreach (Machine machine in testPool.GetMachines())
{
machine.SetMachineStatus(MachineStatus.Ready, -1);
}
//---------------
// creating a project
//---------------
Project project = manager.CreateProject(projectName);
OSPlatform platform = testPool.GetMachines().First().OSPlatform;
ProductInstance pi = project.CreateProductInstance(platform.Name, testPool, platform);
// this is the hardware ID that corresponds to most keyboards, which all systems seem to have
ReadOnlyCollection < TargetData > data = pi.FindTargetFromId(@"HID_DEVICE_SYSTEM_KEYBOARD");
// the findTargetXXX methods return a list of potential targets
// for now, just use the first one that's found
pi.CreateTarget(data.First());
//---------------
// running tests
//---------------
// this will schedule all tests that are associated with this project
project.QueueTest();
// at this point, all jobs should be scheduled to run
// poll to wait to see whether anything is still running
while (project.Info.Status == ProjectStatus.Running)
{
// sleep for 1 minute
Thread.Sleep(60 * 1000);
}
//---------------
// wrapping up results
//---------------
// create wrap-up package
Microsoft.Windows.Kits.Hardware.ObjectModel.Submission.PackageWriter package = new PackageWriter(project);
// note: the .wlkx extension is added automatically
package.Save(project.Name);
}
}
}