//----------------------------------------------------------------------------------------------- /// <summary> /// Creates a task on the Manager from the provided XML task representation and returns its Id. /// </summary> /// <param name="manager"></param> /// <param name="sc">Security Credentials</param> /// <param name="taskXml"></param> /// <returns>application id</returns> public static string CreateTask(IManager manager, SecurityCredentials sc, string taskXml) { // TODO: validate against schema string taskId = manager.Owner_CreateApplication(sc); XmlDocument doc = new XmlDocument(); doc.LoadXml(taskXml); FileDependencyCollection manifest = new FileDependencyCollection(); foreach (XmlNode manifestFile in doc.SelectNodes("task/manifest/embedded_file")) { EmbeddedFileDependency dep = new EmbeddedFileDependency(manifestFile.Attributes["name"].Value); dep.Base64EncodedContents = manifestFile.InnerText; manifest.Add(dep); logger.Debug("Added dependency to manifest: " + dep.FileName); } manager.Owner_SetApplicationManifest(sc, taskId, manifest); foreach (XmlNode jobXml in doc.SelectNodes("task/job")) { int jobId = int.Parse(jobXml.Attributes["id"].Value); jobXml.Attributes.Remove(jobXml.Attributes["id"]); // TODO: allow setting of priority in xml file AddJob(manager, sc, taskId, jobId, 0, jobXml.OuterXml); logger.Debug("Added job to manager: " + jobId); } return(taskId); }
//----------------------------------------------------------------------------------------------- //Gets the GJob object from the given xml private static GJob JobFromXml(int jobId, string jobXml) { // TODO: validate against schema GJob job = new GJob(); job.SetId(jobId); XmlDocument doc = new XmlDocument(); doc.LoadXml(jobXml); logger.Debug("Getting JobFromXML..."); foreach (XmlNode inputFile in doc.SelectNodes("job/input/embedded_file")) { EmbeddedFileDependency dep = new EmbeddedFileDependency(inputFile.Attributes["name"].Value); dep.Base64EncodedContents = inputFile.InnerText; job.InputFiles.Add(dep); logger.Debug("adding input filedep:" + dep.FileName); } job.RunCommand = doc.SelectSingleNode("job/work").Attributes["run_command"].Value; logger.Debug("Job run command=" + job.RunCommand); foreach (XmlNode outputFile in doc.SelectNodes("job/output/embedded_file")) { EmbeddedFileDependency dep = new EmbeddedFileDependency(outputFile.Attributes["name"].Value); job.OutputFiles.Add(dep); logger.Debug("adding output filedep:" + dep.FileName); } return(job); }
public void GetEmbeddedFileDependencyFromFolderTestNullFolderName() { EmbeddedFileDependency[] result; result = EmbeddedFileDependency.GetEmbeddedFileDependencyFromFolder(null); Assert.IsNull(result); }
public void GetEmbeddedFileDependencyFromFolderTestNonExistentFolder() { EmbeddedFileDependency[] result; string folderName = Path.Combine(Path.GetTempPath(), "does_Not_Exist"); // make sure that the folder does not exist Assert.IsFalse(Directory.Exists(folderName)); result = EmbeddedFileDependency.GetEmbeddedFileDependencyFromFolder(folderName); Assert.IsNull(result); }
public void GetEmbeddedFileDependencyFromFolderTestRecursiveFolders() { EmbeddedFileDependency[] result; string fileName = @"someFolder\anotherFolder\test1.txt"; CreateDummyFileUnderRootFolder(fileName); result = EmbeddedFileDependency.GetEmbeddedFileDependencyFromFolder(_rootFolderName); Assert.AreEqual(1, result.Length); Assert.AreEqual(fileName, result[0].FileName); }
public void GetEmbeddedFileDependencyFromFolderTestMultipleFiles() { EmbeddedFileDependency[] result; string fileName1 = @"someFolder3\anotherFolder1\test1.txt"; string fileName2 = @"someFolder1\test2.txt"; string fileName3 = @"someFolder2\test3.txt"; string fileName4 = @"test4.txt"; CreateDummyFileUnderRootFolder(fileName1); CreateDummyFileUnderRootFolder(fileName2); CreateDummyFileUnderRootFolder(fileName3); CreateDummyFileUnderRootFolder(fileName4); result = EmbeddedFileDependency.GetEmbeddedFileDependencyFromFolder(_rootFolderName); Assert.AreEqual(4, result.Length); // all files above should exist in the resulting array bool fileName1Found = false; bool fileName2Found = false; bool fileName3Found = false; bool fileName4Found = false; foreach (EmbeddedFileDependency dep in result) { if (dep.FileName == fileName1) { fileName1Found = true; } if (dep.FileName == fileName2) { fileName2Found = true; } if (dep.FileName == fileName3) { fileName3Found = true; } if (dep.FileName == fileName4) { fileName4Found = true; } } Assert.IsTrue(fileName1Found); Assert.IsTrue(fileName2Found); Assert.IsTrue(fileName3Found); Assert.IsTrue(fileName4Found); }
public void UnPackToFolderTestNoFolders() { string fileName = @"test1.txt"; // create the file string fileLocation = CreateDummyFileUnderRootFolder(fileName); FileDependency fd = new EmbeddedFileDependency(fileName, fileLocation); fd.UnPackToFolder(_rootFolderNameToExtractTo); // just make sure the file is there Assert.IsTrue(File.Exists(Path.Combine(_rootFolderNameToExtractTo, fileName))); }
public void UnPackToFolderTestFolders() { string fileName1 = @"test1.txt"; string fileName2 = @"somefolder\And another with spaces\test1.txt"; // create the file string fileLocation1 = CreateDummyFileUnderRootFolder(fileName1); string fileLocation2 = CreateDummyFileUnderRootFolder(fileName2); FileDependency fd1 = new EmbeddedFileDependency(fileName1, fileLocation1); FileDependency fd2 = new EmbeddedFileDependency(fileName2, fileLocation2); fd1.UnPackToFolder(_rootFolderNameToExtractTo); fd2.UnPackToFolder(_rootFolderNameToExtractTo); // just make sure the files are there Assert.IsTrue(File.Exists(Path.Combine(_rootFolderNameToExtractTo, fileName1))); Assert.IsTrue(File.Exists(Path.Combine(_rootFolderNameToExtractTo, fileName2))); }