private static void PrintResult(KeyValuePair <string, CalculationUnitStatus> calculation) { if (calculation.Value.Status == CalculationUnitStatus.StatusEnum.Success) { var utilityApi = new UtilityApi(GetEngineApiConfiguration()); ApiResponse <string> resultResponse = utilityApi.GetByUrlWithHttpInfo(calculation.Value.Result); Console.WriteLine($"Calculation Unit Id : {calculation.Key} Succeeded!!!"); Console.WriteLine($"Calculation Unit Id : {calculation.Key} Result"); Console.WriteLine("/****************************************************************/"); // converting the data to Package object var jpSettings = JsonParser.Settings.Default; var jp = new JsonParser(jpSettings.WithIgnoreUnknownFields(true)); var package = jp.Parse <Package>(resultResponse.Data); // To convert package to 2D tables. var tables = package.ConvertToTableFormat(); Console.WriteLine(tables[0]); // Uncomment the following lines to generate an Excel file // foreach (var table in tables) // { // File.WriteAllText($"{Guid.NewGuid():N}.csv", table.ToString()); // } Console.WriteLine("/****************************************************************/"); } }
public void EnginesApi_Get_Calculation_Success() { var runCalculationResponse = RunCalculation(); Assert.IsTrue(runCalculationResponse.StatusCode == HttpStatusCode.Accepted, "Create response status code should be 202 - Created."); var calculationId = runCalculationResponse.Headers["Location"][0].Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last(); Assert.IsTrue(!string.IsNullOrWhiteSpace(calculationId), "Create response calculation id should be present."); ApiResponse <CalculationStatus> getStatus = null; while (getStatus == null || getStatus.Data.Status == CalculationStatus.StatusEnum.Queued || getStatus.Data.Status == CalculationStatus.StatusEnum.Executing) { if (getStatus != null) { Assert.IsTrue(getStatus.Data != null, "Response Data should not be null."); Assert.IsTrue(getStatus.Data.Status == CalculationStatus.StatusEnum.Executing || getStatus.Data.Status == CalculationStatus.StatusEnum.Queued, "Response Data should have batch status as processing or queued."); if (getStatus.Headers.ContainsKey("Cache-Control")) { var maxAge = getStatus.Headers["Cache-Control"][0]; if (string.IsNullOrWhiteSpace(maxAge)) { Console.WriteLine("Sleeping for 2 seconds"); // Sleep for at least 2 seconds. Thread.Sleep(2000); } else { var age = int.Parse(maxAge.Replace("max-age=", "")); Console.WriteLine($"Sleeping for {age} seconds"); Thread.Sleep(age * 1000); } } } getStatus = _calculationsApi.GetCalculationStatusByIdWithHttpInfo(calculationId); } Assert.IsTrue(getStatus.Data.Status == CalculationStatus.StatusEnum.Completed, "Response Data should have calculation status as completed."); Assert.IsTrue(getStatus.Data.Spar.Values.All(s => s.Status == CalculationUnitStatus.StatusEnum.Success), "Response Data should have all Spar calculations status as completed."); Assert.IsTrue(getStatus.Data.Spar.Values.All(s => s.Result != null), "Response Data should have all Spar Calculation results."); foreach (var sparCalculationParameters in getStatus.Data.Spar.Values) { ApiResponse <string> resultResponse = null; resultResponse = _utilityApi.GetByUrlWithHttpInfo(sparCalculationParameters.Result); Assert.IsTrue(resultResponse.StatusCode == HttpStatusCode.OK, "Result response status code should be 200 - OK."); Assert.IsTrue(resultResponse.Data != null, "Result response data should not be null."); var jpSettings = JsonParser.Settings.Default; var jp = new JsonParser(jpSettings.WithIgnoreUnknownFields(true)); var package = jp.Parse <Package>(resultResponse.Data); Assert.IsInstanceOfType(package, typeof(Package), "Result response data should be of type Package."); } }
private Package GetPackage(CalculationUnitStatus calculationUnitStatus) { ApiResponse <string> resultResponse = null; resultResponse = _utilityApi.GetByUrlWithHttpInfo(calculationUnitStatus.Result); Assert.IsTrue(resultResponse.StatusCode == HttpStatusCode.OK, "Result response status code should be 200 - OK."); Assert.IsTrue(resultResponse.Data != null, "Result response data should not be null."); var jpSettings = JsonParser.Settings.Default; var jp = new JsonParser(jpSettings.WithIgnoreUnknownFields(true)); var package = jp.Parse <Package>(resultResponse.Data); Assert.IsInstanceOfType(package, typeof(Package), "Result response data should be of type Package."); return(package); }
public static void Main() { try { var calculationParameters = new Calculation { Pub = new Dictionary <string, PubCalculationParameters> { { "1", GetPubCalculationParameters() } } }; var calculationApi = new CalculationsApi(GetEngineApiConfiguration()); var runCalculationResponse = calculationApi.RunCalculationWithHttpInfo(calculationParameters); var calculationId = runCalculationResponse.Headers["Location"][0].Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last(); Console.WriteLine("Calculation Id: " + calculationId); ApiResponse <CalculationStatus> getStatus = null; while (getStatus == null || getStatus.Data.Status == CalculationStatus.StatusEnum.Queued || getStatus.Data.Status == CalculationStatus.StatusEnum.Executing) { if (getStatus != null) { if (getStatus.Headers.ContainsKey("Cache-Control") && getStatus.Headers["Cache-Control"][0] is var maxAge && !string.IsNullOrWhiteSpace(maxAge)) { var age = int.Parse(maxAge.Replace("max-age=", "")); Console.WriteLine($"Sleeping for {age} seconds"); Thread.Sleep(age * 1000); } else { Console.WriteLine("Sleeping for 2 seconds"); // Sleep for at least 2 seconds. Thread.Sleep(2000); } } getStatus = calculationApi.GetCalculationStatusByIdWithHttpInfo(calculationId); } Console.WriteLine("Calculation Completed"); foreach (var parameters in getStatus.Data.Pub) { if (parameters.Value.Status == CalculationUnitStatus.StatusEnum.Success) { var utilityApi = new UtilityApi(GetEngineApiConfiguration()); ApiResponse <string> resultResponse = utilityApi.GetByUrlWithHttpInfo(parameters.Value.Result); Console.WriteLine($"Calculation Unit Id : {parameters.Key} Succeeded!!!"); Console.WriteLine($"Calculation Unit Id : {parameters.Key} Result"); Console.WriteLine("/****************************************************************/"); File.WriteAllBytes("output.pdf", resultResponse.RawBytes); Console.WriteLine("Calculation output saved to output.pdf"); Console.WriteLine("/****************************************************************/"); } else { Console.WriteLine($"Calculation Unit Id : {parameters.Key} Failed!!!"); Console.WriteLine($"Error message : {parameters.Value.Error}"); } } Console.ReadKey(); }
public void EnginesApi_Get_Calculation_Success() { var runCalculationResponse = RunCalculation(); Assert.IsTrue(runCalculationResponse.StatusCode == HttpStatusCode.Accepted, "Create response status code should be 202 - Created."); var id = runCalculationResponse.Headers["Location"][0] .Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last(); Assert.IsTrue(!string.IsNullOrWhiteSpace(id), "Create response calculation id should be present."); runCalculationResponse.Headers.TryGetValue("Location", out var location); var calculationId = location?[0].Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last(); ApiResponse <CalculationStatus> getStatus = null; while (getStatus == null || getStatus.Data.Status == CalculationStatus.StatusEnum.Queued || getStatus.Data.Status == CalculationStatus.StatusEnum.Executing) { if (getStatus != null) { Assert.IsTrue(getStatus.Data != null, "Response Data should not be null."); Assert.IsTrue( getStatus.Data.Status == CalculationStatus.StatusEnum.Executing || getStatus.Data.Status == CalculationStatus.StatusEnum.Queued, "Response Data should have batch status as processing or queued."); if (getStatus.Headers.ContainsKey("Cache-Control") && !string.IsNullOrWhiteSpace(getStatus.Headers["Cache-Control"][0])) { var maxAge = getStatus.Headers["Cache-Control"][0]; var age = int.Parse(maxAge.Replace("max-age=", "")); Console.WriteLine($"Sleeping for {age} seconds"); Thread.Sleep(age * 1000); } else { Console.WriteLine("Sleeping for 2 seconds"); // Sleep for at least 2 seconds. Thread.Sleep(2000); } } getStatus = _calculationsApi.GetCalculationStatusByIdWithHttpInfo(calculationId); } Assert.IsTrue(getStatus.Data.Status == CalculationStatus.StatusEnum.Completed, "Response Data should have calculation status as completed."); Assert.IsTrue(getStatus.Data.Pub.Values.All(p => p.Status == CalculationUnitStatus.StatusEnum.Success), "Response Data should have all PA calculations status as completed."); Assert.IsTrue(getStatus.Data.Pub.Values.All(p => p.Result != null), "Response Data should have all PA Calculation results."); foreach (var calculationParameters in getStatus.Data.Pub.Values) { var resultResponse = _utilityApi.GetByUrlWithHttpInfo(calculationParameters.Result); Assert.IsTrue(resultResponse.StatusCode == HttpStatusCode.OK, "Result response status code should be 200 - OK."); Assert.IsTrue(resultResponse.RawContent != null, "Result response data should not be null."); Assert.AreEqual("application/pdf", resultResponse.Headers["Content-Type"][0], "Invalid content type"); } }