public async Task BuildAndRunClients() { this.configuration = await ConfigurationParser.GetConfiguration(this.configFilePath); Console.WriteLine($"Working with the following Config: {JsonConvert.SerializeObject(this.configuration)}"); Console.WriteLine( $"Creating {this.configuration.ClientCount} clients."); Console.WriteLine($"Test will take {this.configuration.ClientConfiguration.TestDurationInMinutes} minutes."); BrokerFactory brokerFactory = new BrokerFactory(this.configuration.BrokerConfiguration); MessageBuilderFactory messageBuilderFactory = new MessageBuilderFactory(this.configuration.MessageBuilderConfiguration); ClientFactory clientFactory = new ClientFactory(this.configuration.ClientConfiguration, brokerFactory, messageBuilderFactory); var clients = clientFactory.Create(this.configuration.ClientCount); List <Task> taskList = new List <Task>(); foreach (var client in clients) { var clientTask = client.RunAsync(); taskList.Add(clientTask); } try { Task.WaitAll(taskList.ToArray()); } catch (AggregateException e) { for (int j = 0; j < e.InnerExceptions.Count; j++) { Console.WriteLine("\n-------------------------------------------------\n{0}", e.InnerExceptions[j].ToString()); } } Console.WriteLine($"Test ended."); }
public ClientFactory(ClientConfiguration clientConfiguration, BrokerFactory brokerFactory, MessageBuilderFactory messageBuilderFactory) { this.brokerFactory = brokerFactory; this.messageBuilderFactory = messageBuilderFactory; this.clientConfiguration = clientConfiguration; }