Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #3
0
 public DrillsController(IDrillService drillService,
                         IFileProvider fileProvider,
                         IOptions <DrillSettings> drillSettings,
                         ICommandDispatcher commandDispatcher) : base(commandDispatcher)
 {
     _drillSettings = drillSettings.Value;
     _fileProvider  = fileProvider;
     _drillService  = drillService;
 }
Пример #4
0
    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);
    }
Пример #9
0
    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());
    }