static void Main(string[] args) { try { if ((args == null) || (args.Length == 0)) { System.Console.WriteLine("Please pass the first argument as DB connection string in the format Server=PG_HOST;Port=PG_PORT;Database=PG_DB;User Id=PG_USER;Password=PG_PASS"); Environment.Exit(-1); } _connectionstring = args.First(); System.Console.WriteLine($"Using DB connection string: {_connectionstring}"); int numberOfGoes = 1; if (args.Length > 1) { int.TryParse(args.Skip(1).First(), out numberOfGoes); } _ldapQueries = GetLdapQueries(); _spineConfiguration = GetSpineConfiguration(); System.Console.WriteLine($"Running {numberOfGoes} iteration(s)."); RunLdapQueries(numberOfGoes); } catch (InterThreadException e) { System.Console.WriteLine($"An InterThreadException has occurred: {e}"); throw; } catch (LdapException e) { System.Console.WriteLine($"An LdapException has occurred: {e}"); throw; } catch (Exception e) { System.Console.WriteLine($"An Exception has occurred: {e}"); throw; } }
private static void ExecuteParallelRoutine(string[] args) { _connectionstring = args.First(); _ldapQueries = GetLdapQueries(); _spineConfiguration = GetSpineConfiguration(); System.Console.WriteLine($"Using DB connection string: {_connectionstring}"); var providerCodes = new List <string> { "A20047", "X26", "J82132", "B82619", "B82617", "B82614", "RR8", "G82809", "RYEA3", "G82796", "G82719", "RX8", "M84040", "B85033" }; var consumerCodes = new List <string> { "A20047", "X26", "J82132", "B82619", "B82617", "B82614", "RR8", "G82809", "RYEA3", "G82796", "G82719", "RX8", "M84040", "B85033" }; var stopWatch = new Stopwatch(); stopWatch.Start(); var providerOrganisationResults = RunParallel <Organisation>(providerCodes, "GetOrganisationDetailsByOdsCode"); var consumerOrganisationResults = RunParallel <Organisation>(consumerCodes, "GetOrganisationDetailsByOdsCode"); var providerEndpointResults = RunParallel <Spine>(providerCodes, "GetGpProviderEndpointAndPartyKeyByOdsCode"); var consumerEndpointResults = RunParallel <Spine>(consumerCodes, "GetGpProviderEndpointAndPartyKeyByOdsCode"); var capabilityStatementResults = RunParallelAPICall(providerCodes, "GetGpProviderAsIdByOdsCodeAndPartyKey"); stopWatch.Stop(); System.Console.WriteLine("Provider Organisation Details"); System.Console.WriteLine("============================="); for (var i = 0; i < providerOrganisationResults.Count; i++) { System.Console.WriteLine($"[{i + 1}] {providerOrganisationResults[i]?.OdsCode} {providerOrganisationResults[i]?.OrganisationTypeCode} {providerOrganisationResults[i]?.OrganisationName} {providerOrganisationResults[i]?.PostalAddress} {providerOrganisationResults[i]?.PostalCode}"); } System.Console.WriteLine("Consumer Organisation Details"); System.Console.WriteLine("============================="); for (var i = 0; i < consumerOrganisationResults.Count; i++) { System.Console.WriteLine($"[{i + 1}] {consumerOrganisationResults[i]?.OdsCode} {consumerOrganisationResults[i]?.OrganisationTypeCode} {consumerOrganisationResults[i]?.OrganisationName} {consumerOrganisationResults[i]?.PostalAddress} {consumerOrganisationResults[i]?.PostalCode}"); } System.Console.WriteLine("Provider Endpoint Details"); System.Console.WriteLine("========================="); for (var i = 0; i < providerEndpointResults.Count; i++) { System.Console.WriteLine($"[{i + 1}] {providerEndpointResults[i]?.AsId} {providerEndpointResults[i]?.SspHostname}"); } System.Console.WriteLine("Consumer Endpoint Details"); System.Console.WriteLine("========================="); for (var i = 0; i < consumerEndpointResults.Count; i++) { System.Console.WriteLine($"[{i + 1}] {consumerEndpointResults[i]?.AsId} {consumerEndpointResults[i]?.SspHostname}"); } System.Console.WriteLine("Capability Statement Details"); System.Console.WriteLine("============================"); for (var i = 0; i < capabilityStatementResults.Count; i++) { System.Console.WriteLine($"[{i + 1}] {capabilityStatementResults[i]?.Name} {capabilityStatementResults[i]?.Description} {capabilityStatementResults[i]?.ResourceType}"); } System.Console.WriteLine($"{providerCodes.Count + consumerCodes.Count} ODS code(s) took {stopWatch.Elapsed.TotalSeconds} seconds"); }