private static void ConfigureServices(IServiceCollection services, IHttpStatusResultService httpStatusResultService, string databaseFile) { var connectionString = $"Data Source={databaseFile};cache=shared"; var readerConnection = new SqliteConnection(connectionString); services.AddSingleton <IDbReader>(new Db(readerConnection)); services.AddSingleton(provider => httpStatusResultService ?? new HttpStatusResultNullService()); services.AddSingleton <IIterationResultRepository>(CreateIterationResultRepository(databaseFile, out var dbWriter)); services.AddSingleton <IDbWriter>(dbWriter); services.AddSingleton <IHttpStatusResultStatisticsFactory, HttpStatusResultStatisticsFactory>(); services.AddSingleton <IResultRepository, ResultRepository>(); services.AddSingleton <IRequestResultRepository, RequestResultRepository>(); services.AddSingleton <ITestResultRepository, TestResultRepository>(); services.AddSingleton <IHostedService, ExecuteTestsService>(); services.AddSingleton <ISimpleTransaction, SimpleTransaction>(); services.AddSingleton <ISaveIterationQueue, SaveIterationQueueQueue>(); services.AddSingleton <IHostedService, SaveIterationResultBackgroundService>(ioc => { var transaction = ioc.GetRequiredService <ISimpleTransaction>(); var repo = ioc.GetRequiredService <IIterationResultRepository>(); var queue = ioc.GetRequiredService <ISaveIterationQueue>(); return(new SaveIterationResultBackgroundService(transaction, repo, queue, "File")); }); Domain.GraphStats.ConfigureGraphStats.ConfigureServices(services); }
internal static Task StartAsync ( ILoadTestExecution loadTestExecution, IReadOnlyList <ISchedule> schedules, IHttpStatusResultService httpStatusResultService, CancellationToken cancellationToken, ClientOptions options ) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup <Startup>() .UseUrls("http://localhost:5000") .ConfigureServices(services => { ConfigureServices(services, httpStatusResultService, options.DatabaseFile); services.AddSingleton <ICancelTokenReference>(new CancelTokenReference(cancellationToken)); services.AddSingleton(loadTestExecution); services.AddSingleton(schedules); services.AddSingleton(options); }) .Build(); var stopWebUi = new CancellationTokenSource(); cancellationToken.Register(Cancel(stopWebUi)); return(host.RunAsync(stopWebUi.Token)); }
public ResultRepository( IDbReader dbConnection, IHttpStatusResultStatisticsFactory statisticsFactory, IHttpStatusResultService service, IRequestResultRepository requestResultRepository, ITestResultRepository testResultRepository) { _dbConnection = dbConnection.Connection; _statisticsFactory = statisticsFactory; _service = service; _requestResultRepository = requestResultRepository; _testResultRepository = testResultRepository; }
private static void ConfigureServices(IServiceCollection services, IHttpStatusResultService httpStatusResultService) { var now = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"); services.AddSingleton <IDbConnection>(new SqliteConnection($"Data Source=Test_{now}.db")); services.AddSingleton(provider => httpStatusResultService ?? new HttpStatusResultNullService()); services.AddSingleton <IIterationResultRepository, IterationResultRepository>(); services.AddSingleton <IHttpStatusResultStatisticsFactory, HttpStatusResultStatisticsFactory>(); services.AddSingleton <IHttpStatusResultRepository, HttpStatusResultRepository>(); Domain.GraphStats.ConfigureGraphStats.ConfigureServices(services); }
private static void ConfigureServices(IServiceCollection services, IHttpStatusResultService httpStatusResultService, string databaseFile) { var connectionString = $"Data Source={databaseFile};cache=shared"; var readerConnection = new SqliteConnection(connectionString); services.AddSingleton <IDbReader>(new Db(readerConnection)); var iterationResultRepository = CreateFileRepository(databaseFile); services.AddSingleton(provider => httpStatusResultService ?? new HttpStatusResultNullService()); services.AddSingleton <IIterationResultRepository>(iterationResultRepository); services.AddSingleton <IHttpStatusResultStatisticsFactory, HttpStatusResultStatisticsFactory>(); services.AddSingleton <IHttpStatusResultRepository, HttpStatusResultRepository>(); services.AddSingleton <IHostedService, ExecuteTestsService>(); var inMemorySave = new SaveIterationResultBackgroundService(iterationResultRepository, "File"); services.AddSingleton <ISaveIterationResult>(inMemorySave); services.AddSingleton <IHostedService>(inMemorySave); Domain.GraphStats.ConfigureGraphStats.ConfigureServices(services); }
internal static void Start(ILoadTestExecution loadTestExecution, IHttpStatusResultService httpStatusResultService, CancellationToken?cancellationToken = null) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup <Startup>() .UseUrls("http://localhost:5000") .ConfigureServices(services => { ConfigureServices(services, httpStatusResultService); InitializeWithServices(loadTestExecution, services); }) .Build(); if (cancellationToken.HasValue) { host.Run(cancellationToken.Value); } else { host.Run(); } }
public static void Run(ILoadTestExecution testExecution, IReadOnlyList <ISchedule> schedule, IHttpStatusResultService httpStatusResultService, string[] args) { var config = new ConfigurationBuilder() .AddCommandLine(args) .Build(); Patch1.Frequency = config.GetValue <long?>("frequency"); var clientOptions = new ClientOptions(config.GetValue <string>("databaseFile")); Run(testExecution, schedule, httpStatusResultService, clientOptions); }
public static void Run(ILoadTestExecution testExecution, IReadOnlyList <ISchedule> schedule, IHttpStatusResultService httpStatusResultService, ClientOptions clientOptions) { var cancellationSource = new CancellationTokenSource(); Console.CancelKeyPress += ((sender, cancelEventArgs) => { cancellationSource.Cancel(); cancelEventArgs.Cancel = true; }); //var t = new Timer(_ => { cancellationSource.Cancel(); }, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(0)); var webUi = Program.StartAsync(testExecution, schedule, httpStatusResultService, cancellationSource.Token, clientOptions); Task.WaitAll(webUi); }
public RequestResultRepository(IDbReader dbConnection, IHttpStatusResultService service) { _dbConnection = dbConnection.Connection; _service = service; }
public HttpStatusResultRepository(IDbConnection dbConnection, IHttpStatusResultStatisticsFactory statisticsFactory, IHttpStatusResultService service) { _dbConnection = dbConnection; _statisticsFactory = statisticsFactory; _service = service; }
public static void Run(ILoadTestExecution testExecution, IReadOnlyList <ISchedule> schedule, IHttpStatusResultService httpStatusResultService) { var cancellationSource = new CancellationTokenSource(); Console.CancelKeyPress += ((sender, args) => { cancellationSource.Cancel(); args.Cancel = true; }); var options = new ParallelOptions { CancellationToken = cancellationSource.Token }; Parallel.Invoke ( options, () => testExecution.Execute(schedule, cancellationSource.Token), () => Program.Start(testExecution, httpStatusResultService, cancellationSource.Token) ); }