File: Logging\LogRecordPoolingTest.cs
Web Access
Project: src\test\Libraries\Microsoft.Extensions.Http.Diagnostics.Tests\Microsoft.Extensions.Http.Diagnostics.Tests.csproj (Microsoft.Extensions.Http.Diagnostics.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Collections.Generic;
using AutoFixture;
using FluentAssertions;
using Microsoft.Extensions.Http.Logging.Internal;
using Microsoft.Shared.Pools;
using Xunit;
 
namespace Microsoft.Extensions.Http.Logging.Test;
 
public class LogRecordPoolingTest
{
    [Fact]
    public void LogRecordInPool_ResetsItsState()
    {
        var pool = PoolFactory.CreateResettingPool<LogRecord>();
        var testObject = new Fixture().Create<LogRecord>();
        testObject.RequestHeaders!.Add(new KeyValuePair<string, string>("key1", "value1"));
        testObject.ResponseHeaders!.Add(new KeyValuePair<string, string>("key2", "value2"));
        testObject.EnrichmentTags!.AddTag("key3", "value3");
 
        var logRecord1 = pool.Get();
        logRecord1.Host = testObject.Host;
        logRecord1.Method = testObject.Method;
        logRecord1.Path = testObject.Path;
        logRecord1.Duration = testObject.Duration;
        logRecord1.StatusCode = testObject.StatusCode;
        logRecord1.RequestHeaders = testObject.RequestHeaders;
        logRecord1.ResponseHeaders = testObject.ResponseHeaders;
        logRecord1.RequestBody = testObject.RequestBody;
        logRecord1.ResponseBody = testObject.ResponseBody;
        logRecord1.EnrichmentTags = testObject.EnrichmentTags;
        pool.Return(logRecord1);
 
        var logRecord2 = pool.Get();
        logRecord2.Host.Should().Be(string.Empty);
        logRecord2.Method.Should().Be(default);
        logRecord2.Path.Should().Be(string.Empty);
        logRecord2.Duration.Should().Be(default);
        logRecord2.StatusCode.Should().BeNull();
        logRecord2.RequestHeaders.Should().BeNull();
        logRecord2.ResponseHeaders.Should().BeNull();
        logRecord2.RequestBody.Should().BeNull();
        logRecord2.ResponseBody.Should().BeNull();
        logRecord2.EnrichmentTags.Should().BeNull();
    }
}