diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH1547/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH1547/Fixture.cs
new file mode 100644
index 00000000000..8ff5cd8b37e
--- /dev/null
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH1547/Fixture.cs
@@ -0,0 +1,193 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.Diagnostics;
+using System.Linq;
+using System.Reflection;
+using NHibernate.Cfg;
+using NHibernate.Driver;
+using NHibernate.Engine;
+using NHibernate.Engine.Query;
+using NHibernate.SqlCommand;
+using NHibernate.SqlTypes;
+using NHibernate.Util;
+using NSubstitute;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.GH1547
+{
+ using System.Threading.Tasks;
+ using System.Threading;
+ [TestFixture, Explicit("Contains only performances benchmark")]
+ public class FixtureAsync : BugTestCase
+ {
+ protected override void Configure(Configuration configuration)
+ {
+ base.Configure(configuration);
+
+ var driverClass = ReflectHelper.ClassForName(configuration.GetProperty(Cfg.Environment.ConnectionDriver));
+ DriverForSubstitutedCommand.DriverClass = driverClass;
+
+ configuration.SetProperty(
+ Cfg.Environment.ConnectionDriver,
+ typeof(DriverForSubstitutedCommand).AssemblyQualifiedName);
+ }
+
+ protected override void DropSchema()
+ {
+ (Sfi.ConnectionProvider.Driver as DriverForSubstitutedCommand)?.CleanUp();
+ base.DropSchema();
+ }
+
+ [Test]
+ public Task SimpleLinqPerfAsync()
+ {
+ return BenchmarkAsync(
+ "Simple LINQ",
+ s =>
+ s
+ .Query()
+ .Where(e => e.Name == "Bob"));
+ }
+
+ [Test]
+ public Task LinqWithNonParameterizedConstantPerfAsync()
+ {
+ return BenchmarkAsync(
+ "Non parameterized constant",
+ s =>
+ s
+ .Query()
+ .Where(e => e.Name == "Bob")
+ .Select(e => new { e, c = 2 }));
+ }
+
+ [Test]
+ public Task LinqWithListParameterPerfAsync()
+ {
+ try
+ {
+ var names = new[] { "Bob", "Sally" };
+ return BenchmarkAsync(
+ "List parameter",
+ s =>
+ s
+ .Query()
+ .Where(e => names.Contains(e.Name)));
+ }
+ catch (Exception ex)
+ {
+ return Task.FromException