forked from npgsql/npgsql
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMultiplexingTestBase.cs
More file actions
38 lines (31 loc) · 1.25 KB
/
MultiplexingTestBase.cs
File metadata and controls
38 lines (31 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System.Collections.Concurrent;
using NUnit.Framework;
namespace Npgsql.Tests
{
[TestFixture(MultiplexingMode.NonMultiplexing)]
[TestFixture(MultiplexingMode.Multiplexing)]
public abstract class MultiplexingTestBase : TestBase
{
protected bool IsMultiplexing => MultiplexingMode == MultiplexingMode.Multiplexing;
protected MultiplexingMode MultiplexingMode { get; }
readonly ConcurrentDictionary<(string ConnString, bool IsMultiplexing), string> _connStringCache
= new();
public override string ConnectionString { get; }
protected MultiplexingTestBase(MultiplexingMode multiplexingMode)
{
MultiplexingMode = multiplexingMode;
// If the test requires multiplexing to be on or off, use a small cache to avoid reparsing and
// regenerating the connection string every time
ConnectionString = _connStringCache.GetOrAdd((base.ConnectionString, IsMultiplexing),
tup => new NpgsqlConnectionStringBuilder(tup.ConnString)
{
Multiplexing = tup.IsMultiplexing
}.ToString());
}
}
public enum MultiplexingMode
{
NonMultiplexing,
Multiplexing
}
}