Skip to content

Commit

Permalink
Add tests.
Browse files Browse the repository at this point in the history
Signed-off-by: Bradley Grainger <[email protected]>
  • Loading branch information
bgrainger committed Oct 12, 2024
1 parent 450f375 commit b05b899
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 1 deletion.
162 changes: 162 additions & 0 deletions tests/MySqlConnector.Tests/ConnectionOpenedCallbackTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MySqlConnector.Tests;

public class ConnectionOpenedCallbackTests : IDisposable
{
public ConnectionOpenedCallbackTests()
{
m_server = new();
m_server.Start();

m_csb = new MySqlConnectionStringBuilder()
{
Server = "localhost",
Port = (uint) m_server.Port,
};
m_dataSource = new MySqlDataSourceBuilder(m_csb.ConnectionString)
.UseConnectionOpenedCallback(OnConnectionOpenedAsync)
.Build();
}

public void Dispose()
{
m_dataSource.Dispose();
m_server.Stop();
}

[Fact]
public void CallbackIsInvoked()
{
using (var connection = m_dataSource.CreateConnection())
{
Assert.Equal(0, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.None, m_connectionOpenedConditions);

connection.Open();

Assert.Equal(1, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.New, m_connectionOpenedConditions);
}
}

[Fact]
public void SyncCallbackIsInvoked()
{
var dataSource = new MySqlDataSourceBuilder(m_csb.ConnectionString)
.UseConnectionOpenedCallback((conn, cond) =>
{
m_connectionOpenedCount++;
m_connectionOpenedConditions = cond;
})
.Build();
using (var connection = dataSource.CreateConnection())
{
Assert.Equal(0, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.None, m_connectionOpenedConditions);

connection.Open();

Assert.Equal(1, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.New, m_connectionOpenedConditions);
}
}

[Fact]
public void CallbackIsInvokedForPooledConnection()
{
using (var connection = m_dataSource.CreateConnection())
{
Assert.Equal(0, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.None, m_connectionOpenedConditions);

connection.Open();

Assert.Equal(1, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.New, m_connectionOpenedConditions);
}

using (var connection = m_dataSource.OpenConnection())
{
Assert.Equal(2, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.Reset, m_connectionOpenedConditions);
}

using (var connection = m_dataSource.OpenConnection())
{
Assert.Equal(3, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.Reset, m_connectionOpenedConditions);
}
}

[Fact]
public void CallbackIsInvokedForNonPooledConnection()
{
var csb = new MySqlConnectionStringBuilder(m_csb.ConnectionString)
{
Pooling = false,
};
using var dataSource = new MySqlDataSourceBuilder(csb.ConnectionString)
.UseConnectionOpenedCallback(OnConnectionOpenedAsync)
.Build();

using (var connection = dataSource.OpenConnection())
{
Assert.Equal(1, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.New, m_connectionOpenedConditions);
}

using (var connection = dataSource.OpenConnection())
{
Assert.Equal(2, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.New, m_connectionOpenedConditions);
}

using (var connection = dataSource.OpenConnection())
{
Assert.Equal(3, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.New, m_connectionOpenedConditions);
}
}

[Fact]
public void ConditionsForNonResetConnection()
{
var csb = new MySqlConnectionStringBuilder(m_csb.ConnectionString)
{
ConnectionReset = false,
};
using var dataSource = new MySqlDataSourceBuilder(csb.ConnectionString)
.UseConnectionOpenedCallback(OnConnectionOpenedAsync)
.Build();

using (var connection = dataSource.OpenConnection())
{
Assert.Equal(1, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.New, m_connectionOpenedConditions);
}
using (var connection = dataSource.OpenConnection())
{
Assert.Equal(2, m_connectionOpenedCount);
Assert.Equal(MySqlConnectionOpenedConditions.None, m_connectionOpenedConditions);
}
}

private ValueTask OnConnectionOpenedAsync(MySqlConnection connection, MySqlConnectionOpenedConditions conditions)
{
m_connectionOpenedCount++;
m_connectionOpenedConditions = conditions;
return default;
}

private readonly FakeMySqlServer m_server;
private readonly MySqlConnectionStringBuilder m_csb;
private readonly MySqlDataSource m_dataSource;

private int m_connectionOpenedCount;
private MySqlConnectionOpenedConditions m_connectionOpenedConditions;
}
2 changes: 1 addition & 1 deletion tests/MySqlConnector.Tests/MySqlConnector.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@

<ItemGroup Condition=" '$(Configuration)' == 'MySqlData' ">
<PackageReference Include="MySql.Data" />
<Compile Remove="ByteBufferWriterTests.cs;CachedProcedureTests.cs;CancellationTests.cs;ColumnCountPayloadTests.cs;ColumnReaderTests.cs;ConnectionTests.cs;FakeMySqlServer.cs;FakeMySqlServerConnection.cs;LoadBalancerTests.cs;MySqlConnectionTests.cs;MySqlDecimalTests.cs;MySqlExceptionTests.cs;MySqlParameterAppendBinaryTests.cs;MySqlParameterCollectionNameToIndexTests.cs;NormalizeTests.cs;ServerVersionTests.cs;StatementPreparerTests.cs;TypeMapperTests.cs;UtilityTests.cs" />
<Compile Remove="ByteBufferWriterTests.cs;CachedProcedureTests.cs;CancellationTests.cs;ColumnCountPayloadTests.cs;ColumnReaderTests.cs;ConnectionOpenedCallbackTests.cs;ConnectionTests.cs;FakeMySqlServer.cs;FakeMySqlServerConnection.cs;LoadBalancerTests.cs;MySqlConnectionTests.cs;MySqlDecimalTests.cs;MySqlExceptionTests.cs;MySqlParameterAppendBinaryTests.cs;MySqlParameterCollectionNameToIndexTests.cs;NormalizeTests.cs;ServerVersionTests.cs;StatementPreparerTests.cs;TypeMapperTests.cs;UtilityTests.cs" />
<Compile Remove="Metrics\*.cs" />
<Using Include="MySql.Data.MySqlClient" />
<Using Include="MySql.Data.Types" />
Expand Down

0 comments on commit b05b899

Please sign in to comment.