private void corePrimaryStorageDownloadCommandTestCycle(string downloadURI) { // Arrange HypervResourceController rsrcServer = new HypervResourceController(); dynamic jsonPSDCmd = JsonConvert.DeserializeObject(samplePrimaryDownloadCommand()); jsonPSDCmd.url = downloadURI; // Act dynamic jsonResult = rsrcServer.PrimaryStorageDownloadCommand(jsonPSDCmd); // Assert JObject ansAsProperty = jsonResult[0]; dynamic ans = ansAsProperty.GetValue(CloudStackTypes.PrimaryStorageDownloadAnswer); Assert.IsTrue((bool)ans.result, "PrimaryStorageDownloadCommand did not succeed " + ans.details); // Test that URL of downloaded template works for file creation. dynamic jsonCreateCmd = JsonConvert.DeserializeObject(CreateCommandSample()); jsonCreateCmd.templateUrl = ans.installPath; dynamic jsonAns2 = rsrcServer.CreateCommand(jsonCreateCmd); JObject ansAsProperty2 = jsonAns2[0]; dynamic ans2 = ansAsProperty2.GetValue(CloudStackTypes.CreateAnswer); Assert.IsTrue((bool)ans2.result, (string)ans2.details); FileInfo newFile = new FileInfo((string)ans2.volume.path); Assert.IsTrue(newFile.Length > 0, "The new file should have a size greater than zero"); newFile.Delete(); }
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(); }
public void TestCreateCommand() { // 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(); Assert.IsTrue(Directory.Exists(testLocalStorePath)); string filePath = Path.Combine(testLocalStorePath, (string)JsonConvert.DeserializeObject(testSampleTemplateURLJSON)); Assert.IsTrue(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); JObject ansAsProperty2 = jsonResult[0]; dynamic ans = ansAsProperty2.GetValue(CloudStackTypes.CreateAnswer); Assert.IsNotNull(ans, "Should be an answer object of type CreateAnswer"); Assert.IsTrue((bool)ans.result, "Failed to CreateCommand due to " + (string)ans.result); Assert.AreEqual(Directory.GetFiles(testLocalStorePath).Length, fileCount + 1); FileInfo newFile = new FileInfo((string)ans.volume.path); Assert.IsTrue(newFile.Length > 0, "The new file should have a size greater than zero"); newFile.Delete(); }