示例#1
0
    public async Task WritesMessagesInBatches()
    {
        var blob    = new Mock <ICloudAppendBlob>();
        var buffers = new List <byte[]>();

        blob.Setup(b => b.AppendAsync(It.IsAny <ArraySegment <byte> >(), It.IsAny <CancellationToken>()))
        .Callback((ArraySegment <byte> s, CancellationToken ct) => buffers.Add(ToArray(s)))
        .Returns(Task.CompletedTask);

        var sink   = new TestBlobSink(name => blob.Object);
        var logger = (BatchingLogger)sink.CreateLogger("Cat");

        await sink.IntervalControl.Pause;

        for (int i = 0; i < 5; i++)
        {
            logger.Log(_timestampOne, LogLevel.Information, 0, "Text " + i, null, (state, ex) => state);
        }

        sink.IntervalControl.Resume();
        await sink.IntervalControl.Pause;

        Assert.Single(buffers);
        Assert.Equal(
            "2016-05-04 03:02:01.000 +00:00 [Information] Cat: Text 0" + Environment.NewLine +
            "2016-05-04 03:02:01.000 +00:00 [Information] Cat: Text 1" + Environment.NewLine +
            "2016-05-04 03:02:01.000 +00:00 [Information] Cat: Text 2" + Environment.NewLine +
            "2016-05-04 03:02:01.000 +00:00 [Information] Cat: Text 3" + Environment.NewLine +
            "2016-05-04 03:02:01.000 +00:00 [Information] Cat: Text 4" + Environment.NewLine,
            Encoding.UTF8.GetString(buffers[0]));
    }
示例#2
0
    public async Task GroupsByHour()
    {
        var blob    = new Mock <ICloudAppendBlob>();
        var buffers = new List <byte[]>();
        var names   = new List <string>();

        blob.Setup(b => b.AppendAsync(It.IsAny <ArraySegment <byte> >(), It.IsAny <CancellationToken>()))
        .Callback((ArraySegment <byte> s, CancellationToken ct) => buffers.Add(ToArray(s)))
        .Returns(Task.CompletedTask);

        var sink = new TestBlobSink(name =>
        {
            names.Add(name);
            return(blob.Object);
        });
        var logger = (BatchingLogger)sink.CreateLogger("Cat");

        await sink.IntervalControl.Pause;

        var startDate = _timestampOne;

        for (int i = 0; i < 3; i++)
        {
            logger.Log(startDate, LogLevel.Information, 0, "Text " + i, null, (state, ex) => state);

            startDate = startDate.AddHours(1);
        }

        sink.IntervalControl.Resume();
        await sink.IntervalControl.Pause;

        Assert.Equal(3, buffers.Count);

        Assert.Equal("appname/2016/05/04/03/42_filename", names[0]);
        Assert.Equal("appname/2016/05/04/04/42_filename", names[1]);
        Assert.Equal("appname/2016/05/04/05/42_filename", names[2]);
    }