Skip to content

Commit

Permalink
test: remove connectionstring tests and add settings test
Browse files Browse the repository at this point in the history
  • Loading branch information
olavloite authored and jskeet committed Jul 21, 2021
1 parent 6016ef0 commit fc7a41b
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public async Task EqualOptions_SameSessionPool()
factoryCalls++;
return Task.FromResult<SpannerClient>(new FailingSpannerClient());
};
var manager = new SessionPoolManager(new SessionPoolOptions(), Logger.DefaultLogger, factory);
var manager = new SessionPoolManager(new SessionPoolOptions(), SessionPoolManager.DefaultSpannerSettings(), Logger.DefaultLogger, factory);

var options1 = new SpannerClientCreationOptions(new SpannerConnectionStringBuilder(ConnectionString));
var options2 = new SpannerClientCreationOptions(new SpannerConnectionStringBuilder(ConnectionString));
Expand All @@ -59,7 +59,7 @@ public async Task DifferentOptions_DifferentSessionPools()
factoryCalls++;
return Task.FromResult<SpannerClient>(new FailingSpannerClient());
};
var manager = new SessionPoolManager(new SessionPoolOptions(), Logger.DefaultLogger, factory);
var manager = new SessionPoolManager(new SessionPoolOptions(), SessionPoolManager.DefaultSpannerSettings(), Logger.DefaultLogger, factory);

var options1 = new SpannerClientCreationOptions(new SpannerConnectionStringBuilder(ConnectionString));
var options2 = new SpannerClientCreationOptions(new SpannerConnectionStringBuilder(ConnectionString) { Port = 1234 });
Expand All @@ -71,10 +71,24 @@ public async Task DifferentOptions_DifferentSessionPools()
Assert.Equal(2, manager.GetStatistics().Count);
}

[Fact]
public async Task UsesSpannerSettings()
{
ClientFactory factory = (options, settings, logger) =>
{
return Task.FromResult<SpannerClient>(new FailingSpannerClient(settings));
};
var customSettings = new SpannerSettings();
var manager = new SessionPoolManager(new SessionPoolOptions(), customSettings, Logger.DefaultLogger, factory);

var pool = await manager.AcquireSessionPoolAsync(new SpannerClientCreationOptions(new SpannerConnectionStringBuilder(ConnectionString)));
Assert.Same(customSettings, pool.Client.Settings);
}

[Fact]
public async Task ReleaseDecreasesCount()
{
var manager = new SessionPoolManager(new SessionPoolOptions(), Logger.DefaultLogger, FailingSpannerClient.Factory);
var manager = new SessionPoolManager(new SessionPoolOptions(), SessionPoolManager.DefaultSpannerSettings(), Logger.DefaultLogger, FailingSpannerClient.Factory);

var options = new SpannerClientCreationOptions(new SpannerConnectionStringBuilder(ConnectionString));
var pool = await manager.AcquireSessionPoolAsync(options);
Expand All @@ -96,7 +110,7 @@ public async Task ReleaseDecreasesCount()
public async Task EmulatorDetection_AlwaysUsesRegularOptions(string emulatorHost)
{
var regularOptions = new SessionPoolOptions();
var manager = new SessionPoolManager(regularOptions, Logger.DefaultLogger, FailingSpannerClient.Factory);
var manager = new SessionPoolManager(regularOptions, SessionPoolManager.DefaultSpannerSettings(), Logger.DefaultLogger, FailingSpannerClient.Factory);

var builder = new SpannerConnectionStringBuilder(ConnectionString)
{
Expand All @@ -116,9 +130,9 @@ private class FailingSpannerClient : SpannerClient
// A simple non-counting factory.
internal static ClientFactory Factory { get; } = (options, settings, logger) => Task.FromResult<SpannerClient>(new FailingSpannerClient());

public FailingSpannerClient()
public FailingSpannerClient(SpannerSettings settings = null)
{
Settings = SpannerSettings.GetDefault();
Settings = settings ?? SpannerSettings.GetDefault();
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ public void Equality_CustomHostAndPort()
new SpannerConnectionStringBuilder { DataSource = dataSource, Host = "h1", Port = 500, MaximumGrpcChannels = 5 },
new SpannerConnectionStringBuilder { DataSource = dataSource, Host = "h1", Port = 500, MaxConcurrentStreamsLowWatermark = 25 },
new SpannerConnectionStringBuilder { DataSource = dataSource, Host = "h1", Port = 500, CredentialFile = "creds.json" },
new SpannerConnectionStringBuilder($"Data Source={dataSource}; Host = h1; Port = 500", new ComputeCredential().ToChannelCredentials()),
new SpannerConnectionStringBuilder { DataSource = dataSource, Host = "h1", Port = 500, VersionHeader = "efcore/1.0" }
new SpannerConnectionStringBuilder($"Data Source={dataSource}; Host = h1; Port = 500", new ComputeCredential().ToChannelCredentials())
};

var options = new SpannerClientCreationOptions(builder);
Expand All @@ -62,8 +61,7 @@ public void Equality_DefaultHostAndPort()
var unequalBuilders = new[]
{
new SpannerConnectionStringBuilder { DataSource = dataSource, CredentialFile = "creds.json" },
new SpannerConnectionStringBuilder($"Data Source={dataSource}", new ComputeCredential().ToChannelCredentials()),
new SpannerConnectionStringBuilder { DataSource = dataSource, VersionHeader = "efcore/1.0" }
new SpannerConnectionStringBuilder($"Data Source={dataSource}", new ComputeCredential().ToChannelCredentials())
};

var options = new SpannerClientCreationOptions(builder);
Expand Down Expand Up @@ -108,40 +106,5 @@ public async Task CredentialFileNotFound()
var options = new SpannerClientCreationOptions(builder);
await Assert.ThrowsAsync<FileNotFoundException>(() => options.GetCredentialsAsync());
}

[Theory]
[InlineData("efcore/1.0", "efcore", "1.0")]
[InlineData("efcore/2.0", "efcore", "2.0")]
[InlineData("efcore/1", "efcore", "1")]
[InlineData("efcore/1.0.0.0", "efcore", "1.0.0.0")]
public void ValidVersionHeader(string header, string name, string version)
{
var dataSource = "projects/p1/instances/i1/databases/d1";
var connectionString = $"DataSource={dataSource};VersionHeader={header}";
var builder = new SpannerConnectionStringBuilder(connectionString);

Assert.Equal(header, builder.VersionHeader);
Assert.Equal(name, builder.VersionHeaderName);
Assert.Equal(version, builder.VersionHeaderVersion);

var options = new SpannerClientCreationOptions(builder);
Assert.Equal(name, options.AdditionalVersionHeaderName);
Assert.Equal(version, options.AdditionalVersionHeaderVersion);
}

[Theory]
[InlineData("some-header/2.0")]
[InlineData("some-header")]
[InlineData("2.0")]
[InlineData("/")]
[InlineData("efcore")]
[InlineData("efcore/")]
[InlineData("/1.0")]
public void InvalidVersionHeaderName(string header)
{
var dataSource = "projects/p1/instances/i1/databases/d1";
var connectionString = $"DataSource={dataSource};VersionHeader={header}";
Assert.Throws<ArgumentException>(() => new SpannerConnectionStringBuilder(connectionString));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -694,7 +694,7 @@ public void ClientCreatedWithEmulatorDetection()
};

var sessionPoolManager = new SessionPoolManager(
sessionPoolOptions, spannerClient.Settings.Logger,
sessionPoolOptions, spannerClient.Settings, spannerClient.Settings.Logger,
(_o, _s, _l) =>
{
Assert.True(_o.UsesEmulator);
Expand Down Expand Up @@ -799,7 +799,7 @@ internal static SpannerConnection BuildSpannerConnection(Mock<SpannerClient> spa
MaintenanceLoopDelay = TimeSpan.Zero
};

var sessionPoolManager = new SessionPoolManager(sessionPoolOptions, spannerClient.Settings.Logger, (_o, _s, _l) => Task.FromResult(spannerClient));
var sessionPoolManager = new SessionPoolManager(sessionPoolOptions, spannerClient.Settings, spannerClient.Settings.Logger, (_o, _s, _l) => Task.FromResult(spannerClient));
sessionPoolManager.SpannerSettings.Scheduler = spannerClient.Settings.Scheduler;
sessionPoolManager.SpannerSettings.Clock = spannerClient.Settings.Clock;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,21 +201,6 @@ public void EmulatorDetectionProperty()
Assert.Throws<ArgumentException>(() => connectionStringBuilder.EmulatorDetection = (EmulatorDetection)(-1));
}

[Fact]
public void VersionHeader()
{
var connectionStringBuilder = new SpannerConnectionStringBuilder("VersionHeader=efcore/1.0");
Assert.Equal("efcore/1.0", connectionStringBuilder.VersionHeader);
Assert.Equal("efcore", connectionStringBuilder.VersionHeaderName);
Assert.Equal("1.0", connectionStringBuilder.VersionHeaderVersion);
Assert.Equal("versionheader=efcore/1.0", connectionStringBuilder.ToString());

connectionStringBuilder = new SpannerConnectionStringBuilder("");
Assert.Null(connectionStringBuilder.VersionHeader);
Assert.Null(connectionStringBuilder.VersionHeaderName);
Assert.Null(connectionStringBuilder.VersionHeaderVersion);
}

[Fact]
public void WithDatabase()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ private SpannerConnection BuildSpannerConnection(Mock<SpannerClient> spannerClie
MaintenanceLoopDelay = TimeSpan.Zero
};

var sessionPoolManager = new SessionPoolManager(sessionPoolOptions, spannerClient.Settings.Logger, (_o, _s, _l) => Task.FromResult(spannerClient));
var sessionPoolManager = new SessionPoolManager(sessionPoolOptions, spannerClient.Settings, spannerClient.Settings.Logger, (_o, _s, _l) => Task.FromResult(spannerClient));
sessionPoolManager.SpannerSettings.Scheduler = spannerClient.Settings.Scheduler;
sessionPoolManager.SpannerSettings.Clock = spannerClient.Settings.Clock;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ private static SpannerSettings AppendVersionHeader(SpannerSettings settings)
return settings;
}

private static SpannerSettings DefaultSpannerSettings() => new SpannerSettings();
internal static SpannerSettings DefaultSpannerSettings() => new SpannerSettings();

/// <summary>
/// Constructor for test purposes, allowing the SpannerClient creation to be customized (e.g. for
Expand Down

0 comments on commit fc7a41b

Please sign in to comment.