[KVM-AUTOTEST PATCH v2 2/5] [RFC] KVM test: DTM machine deletion tool for WHQL tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This C# program should run on a DTM server.  It's used by the
whql_client_install test to delete the client machine from the server's data
store (if listed there) prior to client installation.  This seems to be
necessary to prevent trouble during testing (like failure to contact the client
machine).

Note: the binary is copied to the server at run time, so it doesn't need to be
packaged in winutils.iso.

Signed-off-by: Michael Goldish <mgoldish@xxxxxxxxxx>
---
 client/tests/kvm/deps/whql_delete_machine_15.cs  |   82 ++++++++++++++++++++++
 client/tests/kvm/deps/whql_delete_machine_15.exe |  Bin 0 -> 5632 bytes
 2 files changed, 82 insertions(+), 0 deletions(-)
 create mode 100644 client/tests/kvm/deps/whql_delete_machine_15.cs
 create mode 100644 client/tests/kvm/deps/whql_delete_machine_15.exe

diff --git a/client/tests/kvm/deps/whql_delete_machine_15.cs b/client/tests/kvm/deps/whql_delete_machine_15.cs
new file mode 100644
index 0000000..1d78a6d
--- /dev/null
+++ b/client/tests/kvm/deps/whql_delete_machine_15.cs
@@ -0,0 +1,82 @@
+// DTM machine deletion tool
+// Author: Michael Goldish <mgoldish@xxxxxxxxxx>
+// Based on sample code by Microsoft.
+
+using System;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+using Microsoft.DistributedAutomation.DeviceSelection;
+using Microsoft.DistributedAutomation.SqlDataStore;
+
+namespace automate0
+{
+    class AutoJob
+    {
+        static int Main(string[] args)
+        {
+            if (args.Length != 2)
+            {
+                Console.WriteLine("Error: incorrect number of command line arguments");
+                Console.WriteLine("Usage: {0} serverName clientName",
+                    System.Environment.GetCommandLineArgs()[0]);
+                return 1;
+            }
+            string serverName = args[0];
+            string clientName = args[1];
+
+            try
+            {
+                // Initialize DeviceScript and connect to data store
+                Console.WriteLine("Initializing DeviceScript object");
+                DeviceScript script = new DeviceScript();
+                Console.WriteLine("Connecting to data store");
+                script.ConnectToNamedDataStore(serverName);
+
+                // Find the client machine
+                IResourcePool rootPool = script.GetResourcePoolByName("$");
+                Console.WriteLine("Looking for client machine '{0}'", clientName);
+                IResource machine = rootPool.GetResourceByName(clientName);
+                if (machine == null)
+                {
+                    Console.WriteLine("Client machine not found");
+                    return 0;
+                }
+                Console.WriteLine("Client machine '{0}' found ({1}, {2})",
+                    clientName, machine.OperatingSystem, machine.ProcessorArchitecture);
+
+                // Change the client machine's status to 'unsafe'
+                Console.WriteLine("Changing the client machine's status to 'Unsafe'");
+                try
+                {
+                    machine.ChangeResourceStatus("Unsafe");
+                }
+                catch (Exception e)
+                {
+                    Console.WriteLine("Warning: " + e.Message);
+                }
+                while (machine.Status != "Unsafe")
+                {
+                    try
+                    {
+                        machine = rootPool.GetResourceByName(clientName);
+                    }
+                    catch (Exception e)
+                    {
+                        Console.WriteLine("Warning: " + e.Message);
+                    }
+                    System.Threading.Thread.Sleep(1000);
+                }
+
+                // Delete the client machine from datastore
+                Console.WriteLine("Deleting client machine from data store");
+                script.DeleteResource(machine.Id);
+                return 0;
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine("Error: " + e.Message);
+                return 1;
+            }
+        }
+    }
+}
diff --git a/client/tests/kvm/deps/whql_delete_machine_15.exe b/client/tests/kvm/deps/whql_delete_machine_15.exe
new file mode 100644
index 0000000000000000000000000000000000000000..7f571345dd04b1871c5156556791d97ca2564419
GIT binary patch
literal 5632
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
O#mAO-!uWrbf&T)7*;pL_

literal 0
HcmV?d00001

-- 
1.5.5.6

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux