public void TestGoodRun() { var clientMock = new Mock <IRSAPIClient>(); var factoryMock = new Mock <IRelativityClientFactory>(); var scriptExecutionRepositoryMock = new Mock <IRelativityScriptRepository>(); factoryMock.Setup(m => m.GetRelativityClient(It.IsAny <ExecutionIdentity>())).Returns(clientMock.Object); factoryMock.Setup(m => m.GetRelativityClient()).Returns(clientMock.Object); var result = new RelativityScriptResult() { Success = true, Message = "unit test result" }; scriptExecutionRepositoryMock .Setup(repo => repo.ExecuteRelativityScript(It.IsAny <RelativityScript>(), It.IsAny <List <RelativityScriptInput> >(), It.IsAny <RelativityWorkspace>())).Returns(result); clientMock.Setup(m => m.APIOptions).Returns(new APIOptions(-1)); var jobScheduleRepositoryMock = new JobScheduleRepositoryMock(); var scriptRunner = new RelativityScriptRunner(jobScheduleRepositoryMock.JobScheduleRepository, factoryMock.Object, scriptExecutionRepositoryMock.Object); var jobSchedule = jobScheduleRepositoryMock.CurrentJobSchedule; scriptRunner.ExecuteScriptJob(jobSchedule); Assert.That(jobSchedule.CurrentJobHistory.ResultText.Equals(result.Message)); Assert.That(!jobSchedule.CurrentJobHistory.HasError); Assert.That(jobScheduleRepositoryMock.JobScheduleStarted && jobScheduleRepositoryMock.JobScheduleFinished); }
/// <summary> /// Runs the relativity script job /// </summary> /// <param name="client">the relativity client</param> /// <param name="job">the scheduled job</param> /// <param name="workspace">the workspace we exect to execute the script in</param> private void ExecuteJobInWorkspace(IRSAPIClient client, JobSchedule job, RelativityWorkspace workspace) { var inputs = this.jobScheduleRepository.GetJobInputs(job); Logger.Trace($"found ${inputs.Count} inputs for job ${job.Id}"); // new relativity script pass in artifact id var maxAttempts = 3; var attempts = 0; RelativityScriptResult scriptResult = null; do { attempts++; try { var script = new kCura.Relativity.Client.DTOs.RelativityScript(job.RelativityScriptId); var scriptInputs = inputs.Select(i => new RelativityScriptInput(i.InputName, i.InputValue)).ToList(); scriptResult = this.relativityScriptRepository.ExecuteRelativityScript(script, scriptInputs, workspace); } catch (Exception ex) { if (attempts < maxAttempts) { Task.Delay(1000 * attempts); Logger.Info($"Attempt ${attempts} failed for job ${job.Id} with exception ${ex.Message}"); continue; } else { throw ex; } } } while (attempts < maxAttempts); if (scriptResult != null) { job.CurrentJobHistory.HasError = !scriptResult.Success; job.CurrentJobHistory.ResultText = scriptResult.Message; if (job.CurrentJobHistory.HasError) { Logger.Info($"Job {job.Id} failed with result {scriptResult.Message}"); } } else { job.CurrentJobHistory.HasError = true; job.CurrentJobHistory.ResultText = "scriptResult Not initialized"; } }
private RelativityScriptResult FilterBySavedSearch(int SavedSearch) { // STEP 1: Find script DTOs.RelativityScript script = this.GetRelativityScriptByName(); // STEP 2: Set parameters and execute script List <RelativityScriptInput> scriptInputs = new List <RelativityScriptInput>(); scriptInputs.Add(new RelativityScriptInput("SavedSearch", SavedSearch.ToString())); RelativityScriptResult scriptResult = Connection.Repositories.RelativityScript.ExecuteRelativityScript(script, scriptInputs); if (!scriptResult.Success) { throw new ApplicationException(scriptResult.Message); } return(scriptResult); }
public RelativityScriptResult ExecuteScript_Update_Duplicate_status(String scriptName, Int32 workspaceArtifactId, String savedSearchName, Guid duplicateStatusFieldGuid, String relationalFieldColumnName, String sortOrderFieldColumnName) { //Retrieve script by name Query <RelativityScript> relScriptQuery = new Query <RelativityScript> { Condition = new TextCondition(RelativityScriptFieldNames.Name, TextConditionEnum.EqualTo, scriptName), Fields = FieldValue.AllFields }; QueryResultSet <RelativityScript> relScriptQueryResults = _client.Repositories.RelativityScript.Query(relScriptQuery); if (!relScriptQueryResults.Success) { throw new Exception(String.Format("An error occurred finding the script: {0}", relScriptQueryResults.Message)); } if (!relScriptQueryResults.Results.Any()) { throw new Exception(String.Format("No results returned: {0}", relScriptQueryResults.Message)); } //Retrieve script inputs var script = relScriptQueryResults.Results[0].Artifact; var inputnames = Execute.GetRelativityScriptInput(_client, scriptName, workspaceArtifactId, dbContext); int savedsearchartifactid = APIHelpers.Query_For_Saved_SearchID(savedSearchName, _client); Int32 duplicateStatusFieldCodeTypeId = GetFieldCodeTypeId(_client, workspaceArtifactId); //Set inputs for script RelativityScriptInput input = new RelativityScriptInput(inputnames[0], savedsearchartifactid.ToString()); RelativityScriptInput input2 = new RelativityScriptInput(inputnames[1], duplicateStatusFieldCodeTypeId.ToString()); RelativityScriptInput input3 = new RelativityScriptInput(inputnames[2], relationalFieldColumnName); RelativityScriptInput input4 = new RelativityScriptInput(inputnames[3], sortOrderFieldColumnName); //Execute the script List <RelativityScriptInput> inputList = new List <RelativityScriptInput> { input, input2, input3, input4 }; RelativityScriptResult scriptResult = _client.Repositories.RelativityScript.ExecuteRelativityScript(script, inputList); return(scriptResult); }
public RelativityScriptResult ExecuteScript_DelimiterCountBySavedSearch(string scriptName, string savedSearchName, string sourceFieldName, string delimiter, string countDestinationFieldName) { _client.APIOptions.WorkspaceID = _workspaceId; //Retrieve script by name Query<RelativityScript> relScriptQuery = new Query<RelativityScript> { Condition = new TextCondition(RelativityScriptFieldNames.Name, TextConditionEnum.EqualTo, scriptName), Fields = FieldValue.AllFields }; QueryResultSet<RelativityScript> relScriptQueryResults = _client.Repositories.RelativityScript.Query(relScriptQuery); if (!relScriptQueryResults.Success) { throw new Exception(String.Format("An error occurred finding the script: {0}", relScriptQueryResults.Message)); } if (!relScriptQueryResults.Results.Any()) { throw new Exception(String.Format("No results returned: {0}", relScriptQueryResults.Message)); } //Retrieve script inputs RelativityScript script = relScriptQueryResults.Results[0].Artifact; var inputnames = GetRelativityScriptInput(_client, scriptName); int savedsearchartifactid = Query_For_Saved_SearchID(savedSearchName, _client); //Set inputs for script RelativityScriptInput input = new RelativityScriptInput(inputnames[0], savedsearchartifactid.ToString()); RelativityScriptInput input2 = new RelativityScriptInput(inputnames[1], sourceFieldName); RelativityScriptInput input3 = new RelativityScriptInput(inputnames[2], delimiter); RelativityScriptInput input4 = new RelativityScriptInput(inputnames[3], countDestinationFieldName); //Execute the script List<RelativityScriptInput> inputList = new List<RelativityScriptInput> { input, input2, input3, input4 }; RelativityScriptResult scriptResult = null; try { scriptResult = _client.Repositories.RelativityScript.ExecuteRelativityScript(script, inputList); } catch (Exception ex) { Console.WriteLine("An error occurred: {0}", ex.Message); } //Check for success. if (!scriptResult.Success) { Console.WriteLine(string.Format(scriptResult.Message)); } else { int observedOutput = scriptResult.Count; Console.WriteLine("Result returned: {0}", observedOutput); } return scriptResult; }