示例#1
0
            /// <exception cref="System.IO.IOException"/>
            public Job(LocalJobRunner _enclosing, JobID jobid, string jobSubmitDir)
            {
                this._enclosing    = _enclosing;
                this.systemJobDir  = new Path(jobSubmitDir);
                this.systemJobFile = new Path(this.systemJobDir, "job.xml");
                this.id            = jobid;
                JobConf conf = new JobConf(this.systemJobFile);

                this.localFs = FileSystem.GetLocal(conf);
                string user = UserGroupInformation.GetCurrentUser().GetShortUserName();

                this.localJobDir = this.localFs.MakeQualified(new Path(new Path(conf.GetLocalPath
                                                                                    (LocalJobRunner.jobDir), user), jobid.ToString()));
                this.localJobFile = new Path(this.localJobDir, this.id + ".xml");
                // Manage the distributed cache.  If there are files to be copied,
                // this will trigger localFile to be re-written again.
                this.localDistributedCacheManager = new LocalDistributedCacheManager();
                this.localDistributedCacheManager.Setup(conf);
                // Write out configuration file.  Instead of copying it from
                // systemJobFile, we re-write it, since setup(), above, may have
                // updated it.
                OutputStream @out = this.localFs.Create(this.localJobFile);

                try
                {
                    conf.WriteXml(@out);
                }
                finally
                {
                    @out.Close();
                }
                this.job = new JobConf(this.localJobFile);
                // Job (the current object) is a Thread, so we wrap its class loader.
                if (this.localDistributedCacheManager.HasLocalClasspaths())
                {
                    this.SetContextClassLoader(this.localDistributedCacheManager.MakeClassLoader(this
                                                                                                 .GetContextClassLoader()));
                }
                this.profile = new JobProfile(this.job.GetUser(), this.id, this.systemJobFile.ToString
                                                  (), "http://localhost:8080/", this.job.GetJobName());
                this.status = new JobStatus(this.id, 0.0f, 0.0f, JobStatus.Running, this.profile.
                                            GetUser(), this.profile.GetJobName(), this.profile.GetJobFile(), this.profile.GetURL
                                                ().ToString());
                this._enclosing.jobs[this.id] = this;
                this.Start();
            }
        /// <summary>test depricated methods of JobProfile</summary>
        /// <exception cref="System.IO.IOException"/>
        public virtual void TestJobProfile()
        {
            JobProfile profile = new JobProfile("user", "job_001_03", "jobFile", "uri", "name"
                                                );

            NUnit.Framework.Assert.AreEqual("job_001_0003", profile.GetJobId());
            NUnit.Framework.Assert.AreEqual("default", profile.GetQueueName());
            // serialization test
            ByteArrayOutputStream @out = new ByteArrayOutputStream();

            profile.Write(new DataOutputStream(@out));
            JobProfile profile2 = new JobProfile();

            profile2.ReadFields(new DataInputStream(new ByteArrayInputStream(@out.ToByteArray
                                                                                 ())));
            NUnit.Framework.Assert.AreEqual(profile2.name, profile.name);
            NUnit.Framework.Assert.AreEqual(profile2.jobFile, profile.jobFile);
            NUnit.Framework.Assert.AreEqual(profile2.queueName, profile.queueName);
            NUnit.Framework.Assert.AreEqual(profile2.url, profile.url);
            NUnit.Framework.Assert.AreEqual(profile2.user, profile.user);
        }