private void SubmitHiveJob(string query) { var parameters = new HiveJobSubmissionParameters { Query = query }; // submitting the Hive job to the cluster JobSubmissionResponse jobResponse = _hdiJobManagementClient.JobManagement.SubmitHiveJob(parameters); string jobId = jobResponse.JobSubmissionJsonResponse.Id; // wait for job completion JobDetailRootJsonObject jobDetail = _hdiJobManagementClient.JobManagement.GetJob(jobId).JobDetail; while (!jobDetail.Status.JobComplete) { Thread.Sleep(1000); jobDetail = _hdiJobManagementClient.JobManagement.GetJob(jobId).JobDetail; } // get job output Stream output = jobDetail.ExitValue == 0 ? _hdiJobManagementClient.JobManagement.GetJobOutput(jobId, _storageAccess) : _hdiJobManagementClient.JobManagement.GetJobErrorLogs(jobId, _storageAccess); // handle output using (var reader = new StreamReader(output, Encoding.UTF8)) { string value = reader.ReadToEnd(); if (!string.IsNullOrEmpty(value)) { throw new BatchViewCalculationException(value); } } }
public void StartJob() { // Update HDInsight Management properties for Job. SetupManagementClientForJobTests(); var cmdlet = new StartAzureHDInsightJobCommand { CommandRuntime = commandRuntimeMock.Object, HDInsightJobClient = hdinsightJobManagementMock.Object, HDInsightManagementClient = hdinsightManagementMock.Object, HttpCredential = new PSCredential("httpuser", string.Format("Password1!").ConvertToSecureString()), ClusterName = ClusterName }; var args = new[] { "arg1", "arg2" }; const string query = "show tables;"; const string name = "hivejob"; var hivedef = new AzureHDInsightHiveJobDefinition { JobName = name, Query = query, }; foreach (var arg in args) { hivedef.Arguments.Add(arg); } cmdlet.JobDefinition = hivedef; const string jobid = "jobid_1984120_001"; var jobsub = new JobSubmissionResponse { JobSubmissionJsonResponse = new JobSubmissionJsonResponse { Id = jobid }, StatusCode = HttpStatusCode.OK }; hdinsightJobManagementMock.Setup( c => c.SubmitHiveJob( It.Is <AzureHDInsightHiveJobDefinition>( def => def.JobName == name && def.Query == query && def.Arguments.Count == args.Length))) .Returns(jobsub) .Verifiable(); var getresponse = new JobGetResponse { StatusCode = HttpStatusCode.OK, JobDetail = new JobDetailRootJsonObject { Completed = "false", User = cmdlet.HttpCredential.UserName, Id = jobid, Status = new Status(), Userargs = new Userargs() } }; hdinsightJobManagementMock.Setup(c => c.GetJob(jobsub.JobSubmissionJsonResponse.Id)).Returns(getresponse).Verifiable(); cmdlet.ExecuteCmdlet(); commandRuntimeMock.VerifyAll(); commandRuntimeMock.Verify( f => f.WriteObject( It.Is <AzureHDInsightJob>( job => job.Cluster == ClusterName && job.JobId == jobid && job.Completed == "false"))); }