public async Task WritesFileOnSuccess() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var console = new TestConsole(); var file = new byte[ushort.MaxValue]; Stream writer(string s) => new MemoryStream(file); var command = new DrillCommand(http, writer, console); var settings = new DrillSettings { URL = new Uri("http://localhost"), RPS = 1, Duration = 1, Filename = "test.png" }; //act var result = await command.ExecuteAsync(null !, settings); //assert var contents = Encoding.UTF8.GetString(file); Assert.Empty(console.Output); Assert.Equal(0, result); Assert.NotEmpty(contents); }
public Driller(HttpClient http, ProgressTask task, DrillSettings settings) { var requests = (uint)settings.RPS * settings.Duration; var delay = Stopwatch.Frequency / settings.RPS; task.MaxValue(requests); _tool = new Drill(http, () => Factory.Message(settings), () => task.Increment(1), requests, delay); }
public DrillsController(IDrillService drillService, IFileProvider fileProvider, IOptions <DrillSettings> drillSettings, ICommandDispatcher commandDispatcher) : base(commandDispatcher) { _drillSettings = drillSettings.Value; _fileProvider = fileProvider; _drillService = drillService; }
public async Task ShowsExceptionOnFailure() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var console = new TestConsole(); var command = new DrillCommand(http, null !, console); var settings = new DrillSettings(); //act var result = await command.ExecuteAsync(null !, settings); //assert Assert.Equal(1, result); Assert.Contains("exception", console.Output, StringComparison.InvariantCultureIgnoreCase); }
public void URLIsRequired() { //arrange var settings = new DrillSettings { RPS = 1, Duration = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.False(result.Successful); }
public void DurationIsRequired() { //arrange var settings = new DrillSettings { URL = new Uri("http://localhost"), RPS = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.False(result.Successful); }
public void SuccessWhenAllExist() { //arrange var settings = new DrillSettings { URL = new Uri("http://localhost"), RPS = 1, Duration = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.True(result.Successful); }
public void CanDrill() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var task = new ProgressTask(123, "test", 0, false); var options = new DrillSettings { URL = new Uri("http://localhost"), RPS = 1, Duration = 1 }; var driller = new Driller(http, task, options); //act var results = driller.Run(); //assert Assert.Equal(1, results.Count); }
public async Task CanCreateComplexMessage() { //arrange var settings = new DrillSettings { URL = new Uri("http://localhost"), Method = HttpMethod.Post.Method, Headers = new[] { "Authorization: Basic a1b2c3d4e5f6" }, Body = $@"{{""key123"":""value456""}}" }; //act var message = Factory.Message(settings); //assert Assert.Equal(HttpMethod.Post, message.Method); Assert.Contains("Authorization", message.Headers.Select(h => h.Key)); Assert.Contains("Basic a1b2c3d4e5f6", message.Headers.Select(h => h.Value.FirstOrDefault())); var json = await JsonSerializer.DeserializeAsync <JsonElement>(await message.Content !.ReadAsStreamAsync()); Assert.Equal("value456", json.GetProperty("key123").GetString()); }