示例#1
0
        //-----------------------------------------------------------------------------------------------

        /// <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);
        }
示例#2
0
        //-----------------------------------------------------------------------------------------------

        //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);
        }
示例#3
0
        public void GetEmbeddedFileDependencyFromFolderTestNullFolderName()
        {
            EmbeddedFileDependency[] result;

            result = EmbeddedFileDependency.GetEmbeddedFileDependencyFromFolder(null);

            Assert.IsNull(result);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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)));
        }
示例#8
0
        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)));
        }