//Uncomment the following line to cleanup kvp
        //[TestMethod]
        public void CleanupKVP()
        {
            using (var vm = WMIHelper.QueryFirstInstacne(@"root\virtualization\v2", "Msvm_ComputerSystem ", "enabledstate = 2 and caption = 'Virtual Machine'"))
            {
                Assert.IsNotNull(vm);
                Console.WriteLine("Clean up kvp for: " + vm.Properties["ElementName"].Value);
                var writer = KeyValuePairWriter.CreateInstance(new KvpConfiguration());

                var NULL = new Object();

                var data = new Dictionary <String, Object>();
                data.Add(testKey, NULL);
                data.Add(testKey2, NULL);

                var args = new Dictionary <String, Object>()
                {
                    { "VirtualMachinePath", vm.Path.ToString() },
                    { "VirtualMachineName", vm.Properties["Name"].Value },
                };

                writer.Remove(args, data);

                data.Clear();
                for (int i = 0; i < 50; i++)
                {
                    data.Add("Enhanced_Monitoring_Metric_Data_Item_Part_" + i, NULL);
                }
                writer.Remove(args, data);
            }
        }
        public void TestWriteKVP()
        {
            var vm = WMIHelper.QueryFirstInstacne(@"root\virtualization\v2", "Msvm_ComputerSystem ", "enabledstate = 2 and caption = 'Virtual Machine'");

            Assert.IsNotNull(vm);

            var writer = KeyValuePairWriter.CreateInstance(new KvpConfiguration());
            var data   = new Dictionary <String, Object>();

            data.Add(testKey, DateTime.Now.ToString());
            data.Add(testKey2, DateTime.Now.ToString());

            var args = new Dictionary <String, Object>()
            {
                { "VirtualMachinePath", vm.Path.ToString() },
                { "VirtualMachineName", vm.Properties["Name"].Value },
            };

            writer.Remove(args, data);
            writer.Write(args, data);

            vm.Dispose();
        }
        //[TestMethod]
        public void TestOverloadKVP()
        {
            var vm = WMIHelper.QueryFirstInstacne(@"root\virtualization\v2", "Msvm_ComputerSystem ", "enabledstate = 2 and caption = 'Virtual Machine'");

            Assert.IsNotNull(vm);

            var writer = KeyValuePairWriter.CreateInstance(new KvpConfiguration());
            var data   = new Dictionary <String, Object>();

            var chars = new char[1000];

            for (int i = 0; i < chars.Length; i++)
            {
                chars[i] = 'a';
            }
            var val = new String(chars);

            for (int i = 0; i < 1000; i++)
            {
                data.Clear();
                for (int j = 0; j < 10; j++)
                {
                    data.Add(String.Format("TestKVP_{0}", j), val);
                }

                var args = new Dictionary <String, Object>()
                {
                    { "VirtualMachinePath", vm.Path.ToString() },
                    { "VirtualMachineName", vm.Properties["Name"].Value },
                };

                writer.Remove(args, data);
                writer.Write(args, data);
            }
            vm.Dispose();
        }