public void TestStopCommand() { //string vmName = "Test VM"; var counter = 0; wmiCallsV2.When(x => x.DestroyVm(Arg.Any <Object>())).Do(x => counter++); // Arrange HypervResourceController rsrcServer = new HypervResourceController(); HypervResourceController.wmiCallsV2 = wmiCallsV2; String sampleStop = "{\"isProxy\":false,\"vmName\":\"i-2-17-VM\",\"contextMap\":{},\"checkBeforeCleanup\":false,\"wait\":0}"; dynamic jsonStopCmd = JsonConvert.DeserializeObject(sampleStop); // Act dynamic stopAns = rsrcServer.StopCommand(jsonStopCmd); // Assert VM is gone! Assert.NotNull(stopAns[0][CloudStackTypes.StopAnswer]); Assert.True((bool)stopAns[0][CloudStackTypes.StopAnswer].result, "StopCommand did not succeed " + stopAns[0][CloudStackTypes.StopAnswer].details); Assert.Null((string)stopAns[0][CloudStackTypes.StopAnswer].details); Assert.Equal <int>(counter, 1); }
public void TestDestroyCommand() { testSampleVolumeTempURIJSON = "\"storagepool\""; // Arrange String destoryCmd = //"{\"volume\":" + getSampleVolumeObjectTO() + "}"; "{\"volume\":{\"name\":\"" + testSampleVolumeTempUUIDNoExt + "\",\"storagePoolType\":\"Filesystem\"," + "\"mountPoint\":" + testLocalStorePathJSON + ",\"path\":" + testSampleVolumeTempURIJSON + ",\"storagePoolUuid\":\"" + testLocalStoreUUID + "\"," + "\"type\":\"ROOT\",\"id\":9,\"size\":0}}"; ImageManagementService imgmgr = new ImageManagementService(); wmiCallsV2.GetImageManagementService().Returns(imgmgr); HypervResourceController rsrcServer = new HypervResourceController(); HypervResourceController.wmiCallsV2 = wmiCallsV2; dynamic jsonDestoryCmd = JsonConvert.DeserializeObject(destoryCmd); // Act dynamic destoryAns = rsrcServer.DestroyCommand(jsonDestoryCmd); // Assert JObject ansAsProperty2 = destoryAns[0]; dynamic ans = ansAsProperty2.GetValue(CloudStackTypes.Answer); String path = jsonDestoryCmd.volume.path; Assert.True((bool)ans.result, "DestroyCommand did not succeed " + ans.details); Assert.True(!File.Exists(path), "Failed to delete file " + path); }
public static void ConfigServerResource() { // For simplicity, ServerResource config and settings file are tightly coupled. // An alternative is to pass a dictionary to the server resource and let it find // required settings. In contrast, the approach below is strongly typed and makes // use of VisualStudio settings designer. The designer allows us to avoid // accessing config using their key strings. HypervResourceControllerConfig rsrcCnf = new HypervResourceControllerConfig(); rsrcCnf.RootDeviceReservedSpaceBytes = AgentSettings.Default.RootDeviceReservedSpaceBytes; rsrcCnf.RootDeviceName = AgentSettings.Default.RootDeviceName; rsrcCnf.ParentPartitionMinMemoryMb = AgentSettings.Default.dom0MinMemory; rsrcCnf.LocalSecondaryStoragePath = AgentSettings.Default.local_secondary_storage_path; // Side effect: loads the assembly containing HypervResourceController, which // allows HttpSelfHostServer to route requests to the controller. HypervResourceController.Configure(rsrcCnf); }
public void TestStartCommand() { ComputerSystem system = new ComputerSystem(); wmiCallsV2.DeployVirtualMachine(Arg.Any <Object>(), Arg.Any <string>()).Returns(system); // Arrange HypervResourceController rsrcServer = new HypervResourceController(); HypervResourceController.wmiCallsV2 = wmiCallsV2; String sample = getSampleStartCommand(); dynamic jsonStartCmd = JsonConvert.DeserializeObject(sample); // Act dynamic startAns = rsrcServer.StartCommand(jsonStartCmd); // Assert Assert.NotNull(startAns[0][CloudStackTypes.StartAnswer]); Assert.True((bool)startAns[0][CloudStackTypes.StartAnswer].result, "StartCommand did not succeed " + startAns[0][CloudStackTypes.StartAnswer].details); Assert.Null((string)startAns[0][CloudStackTypes.StartAnswer].details); }
public void TestCreateCommand() { DirectoryInfo localStorePath = new DirectoryInfo(testLocalStorePath); if (!localStorePath.Exists) { try { localStorePath.Create(); } catch (System.IO.IOException ex) { throw new NotImplementedException("Need to be able to create the folder " + localStorePath.FullName + " failed due to " + ex.Message); } } FileInfo sampleTemplateFile = new FileInfo(Path.Combine(testLocalStorePath, testSampleTemplateUUID)); if (!sampleTemplateFile.Exists) { //Create a file to write to. using (StreamWriter sw = sampleTemplateFile.CreateText()) { sw.WriteLine("This is fake template file for test"); } } var counter = 0; wmiCallsV2.When(x => x.CreateDynamicVirtualHardDisk(Arg.Any <ulong>(), Arg.Any <String>())).Do(x => counter++); // TODO: Need sample to update the test. // Arrange String createCmd = "{\"volId\":10,\"pool\":{\"id\":201,\"uuid\":\"" + testLocalStoreUUID + "\",\"host\":\"" + HypervResourceController.config.StorageIpAddress + "\"" + ",\"path\":" + testLocalStorePathJSON + ",\"port\":0,\"type\":\"Filesystem\"},\"diskCharacteristics\":{\"size\":0," + "\"tags\":[],\"type\":\"ROOT\",\"name\":\"ROOT-9\",\"useLocalStorage\":true,\"recreatable\":true,\"diskOfferingId\":11," + "\"volumeId\":10,\"hyperType\":\"Hyperv\"},\"templateUrl\":" + testSampleTemplateURLJSON + ",\"contextMap\":{},\"wait\":0}"; dynamic jsonCreateCmd = JsonConvert.DeserializeObject(createCmd); HypervResourceController rsrcServer = new HypervResourceController(); HypervResourceController.wmiCallsV2 = wmiCallsV2; Assert.True(Directory.Exists(testLocalStorePath), testLocalStorePath + " does not exist "); string filePath = Path.Combine(testLocalStorePath, (string)JsonConvert.DeserializeObject(testSampleTemplateURLJSON)); Assert.True(File.Exists(filePath), "The template we make volumes from is missing from path " + filePath); int fileCount = Directory.GetFiles(testLocalStorePath).Length; s_logger.Debug(" test local store has " + fileCount + "files"); // Act // Test requires there to be a template at the tempalteUrl, which is its location in the local file system. dynamic jsonResult = rsrcServer.CreateCommand(jsonCreateCmd); s_logger.Debug("CreateDynamicVirtualHardDisk method is called " + counter + " times"); //Assert.Equal(counter, 1); JObject ansAsProperty2 = jsonResult[0]; dynamic ans = ansAsProperty2.GetValue(CloudStackTypes.CreateAnswer); Assert.NotNull(ans); Assert.True((bool)ans.result, "Failed to CreateCommand due to " + (string)ans.result); Assert.Equal(Directory.GetFiles(testLocalStorePath).Length, fileCount + 1); FileInfo newFile = new FileInfo((string)ans.volume.path); Assert.True(newFile.Length > 0, "The new file should have a size greater than zero"); newFile.Delete(); sampleTemplateFile.Delete(); }