Skip to content

Commit d3d5f8c

Browse files
committed
HHH-14892 Enable parallel testing for SQL Server
1 parent 7016f92 commit d3d5f8c

File tree

6 files changed

+29
-8
lines changed

6 files changed

+29
-8
lines changed

docker_db.sh

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ mssql_2017() {
577577
do
578578
# We need a database that uses a non-lock based MVCC approach
579579
# https://github.com/microsoft/homebrew-mssql-release/issues/2#issuecomment-682285561
580-
$CONTAINER_CLI exec mssql bash -c 'echo "create database hibernate_orm_test collate SQL_Latin1_General_CP1_CS_AS; alter database hibernate_orm_test set READ_COMMITTED_SNAPSHOT ON" | /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin' && break
580+
$CONTAINER_CLI exec mssql bash -c 'echo "select 1" | /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin' 2>&1 1>/dev/null && break
581581
echo "Waiting for SQL Server to start..."
582582
n=$((n+1))
583583
sleep 5
@@ -587,6 +587,12 @@ mssql_2017() {
587587
else
588588
echo "SQL Server successfully started"
589589
fi
590+
echo "Creating databases..."
591+
for n in $(seq 1 $(($(nproc)/2)))
592+
do
593+
$CONTAINER_CLI exec mssql bash -c "echo \"create database hibernate_orm_test_${n} collate SQL_Latin1_General_CP1_CS_AS; alter database hibernate_orm_test_${n} set READ_COMMITTED_SNAPSHOT ON\" | /opt/mssql-tools/bin/sqlcmd -C -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin"
594+
done
595+
echo "SQL Server is ready"
590596
}
591597

592598
mssql_2022() {
@@ -599,7 +605,7 @@ mssql_2022() {
599605
do
600606
# We need a database that uses a non-lock based MVCC approach
601607
# https://github.com/microsoft/homebrew-mssql-release/issues/2#issuecomment-682285561
602-
$CONTAINER_CLI exec mssql bash -c 'echo "create database hibernate_orm_test collate SQL_Latin1_General_CP1_CS_AS; alter database hibernate_orm_test set READ_COMMITTED_SNAPSHOT ON" | /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin' && break
608+
$CONTAINER_CLI exec mssql bash -c 'echo "select 1" | /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin' 2>&1 1>/dev/null && break
603609
echo "Waiting for SQL Server to start..."
604610
n=$((n+1))
605611
sleep 5
@@ -609,6 +615,12 @@ mssql_2022() {
609615
else
610616
echo "SQL Server successfully started"
611617
fi
618+
echo "Creating databases..."
619+
for n in $(seq 1 $(($(nproc)/2)))
620+
do
621+
$CONTAINER_CLI exec mssql bash -c "echo \"create database hibernate_orm_test_${n} collate SQL_Latin1_General_CP1_CS_AS; alter database hibernate_orm_test_${n} set READ_COMMITTED_SNAPSHOT ON\" | /opt/mssql-tools/bin/sqlcmd -C -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin"
622+
done
623+
echo "SQL Server is ready"
612624
}
613625

614626
mssql_2025() {
@@ -621,7 +633,7 @@ mssql_2025() {
621633
do
622634
# We need a database that uses a non-lock based MVCC approach
623635
# https://github.com/microsoft/homebrew-mssql-release/issues/2#issuecomment-682285561
624-
$CONTAINER_CLI exec mssql bash -c 'echo "create database hibernate_orm_test collate SQL_Latin1_General_CP1_CS_AS; alter database hibernate_orm_test set READ_COMMITTED_SNAPSHOT ON" | /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin' && break
636+
$CONTAINER_CLI exec mssql bash -c 'echo "select 1" | /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin' 2>&1 1>/dev/null && break
625637
echo "Waiting for SQL Server to start..."
626638
n=$((n+1))
627639
sleep 5
@@ -631,6 +643,12 @@ mssql_2025() {
631643
else
632644
echo "SQL Server successfully started"
633645
fi
646+
echo "Creating databases..."
647+
for n in $(seq 1 $(($(nproc)/2)))
648+
do
649+
$CONTAINER_CLI exec mssql bash -c "echo \"create database hibernate_orm_test_${n} collate SQL_Latin1_General_CP1_CS_AS; alter database hibernate_orm_test_${n} set READ_COMMITTED_SNAPSHOT ON\" | /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P Hibernate_orm_test -i /dev/stdin"
650+
done
651+
echo "SQL Server is ready"
634652
}
635653

636654
sybase() {

hibernate-core/hibernate-core.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ tasks.withType( Test.class ).each { test ->
262262
// see GradleParallelTestingResolver for how the test worker id is resolved in JDBC configs
263263
if ( project.db == "h2" || project.db == "hsqldb" || project.db == "pgsql_ci" || project.db == "edb_ci"
264264
|| project.db == "oracle_ci" || project.db == "oracle_xe_ci" || project.db == "mysql_ci" || project.db == "mariadb_ci"
265-
|| project.db == "db2_ci") {
265+
|| project.db == "db2_ci" || project.db == "mssql_ci" ) {
266266
// Most systems have multi-threading and maxing out a core on both threads will hurt performance
267267
// Also, as soon as we hit 16+ threads, the returns are diminishing, so divide by 4
268268
def threadCount = Runtime.runtime.availableProcessors()

hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaExportSqlServerWithSequenceDefaultSchemaCatalog.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
import static org.hamcrest.MatcherAssert.assertThat;
3232
import static org.hamcrest.core.Is.is;
33+
import static org.hibernate.testing.jdbc.GradleParallelTestingResolver.resolveUsername;
3334

3435
/**
3536
* @author Andrea Boriero
@@ -52,7 +53,7 @@ public void shouldCreateIndex() {
5253
public void setUp() {
5354
serviceRegistry = ServiceRegistryUtil.serviceRegistryBuilder()
5455
.applySetting( Environment.DEFAULT_SCHEMA, "dbo" )
55-
.applySetting( Environment.DEFAULT_CATALOG, "hibernate_orm_test" )
56+
.applySetting( Environment.DEFAULT_CATALOG, resolveUsername( "hibernate_orm_test_$worker" ) )
5657
.build();
5758
metadata = (MetadataImplementor) new MetadataSources( serviceRegistry )
5859
.addAnnotatedClass( MyEntity.class )

hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/JoinTableWithDefaultSchemaTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import org.hibernate.tool.schema.TargetType;
3232
import org.junit.Test;
3333

34+
import static org.hibernate.testing.jdbc.GradleParallelTestingResolver.resolveUsername;
35+
3436
/**
3537
* @author Chris Cranford
3638
*/
@@ -41,7 +43,7 @@ public class JoinTableWithDefaultSchemaTest extends BaseUnitTestCase {
4143
@RequiresDialect(SQLServerDialect.class)
4244
public void testGetTableDataForJoinTableWithDefaultSchema() {
4345
StandardServiceRegistry ssr = ServiceRegistryUtil.serviceRegistryBuilder()
44-
.applySetting( AvailableSettings.DEFAULT_CATALOG, "hibernate_orm_test" )
46+
.applySetting( AvailableSettings.DEFAULT_CATALOG, resolveUsername( "hibernate_orm_test_$worker" ) )
4547
.build();
4648
try {
4749
final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr )

hibernate-envers/hibernate-envers.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ tasks.withType( Test.class ).each { test ->
5858
// see GradleParallelTestingResolver for how the test worker id is resolved in JDBC configs
5959
if ( project.db == "h2" || project.db == "hsqldb" || project.db == "pgsql_ci" || project.db == "edb_ci"
6060
|| project.db == "oracle_ci" || project.db == "oracle_xe_ci" || project.db == "mysql_ci" || project.db == "mariadb_ci"
61-
|| project.db == "db2_ci") {
61+
|| project.db == "db2_ci" || project.db == "mssql_ci" ) {
6262
// Most systems have multi-threading and maxing out a core on both threads will hurt performance
6363
// Also, as soon as we hit 16+ threads, the returns are diminishing, so divide by 4
6464
def threadCount = Runtime.runtime.availableProcessors()

local-build-plugins/src/main/groovy/local.databases.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ ext {
314314
'jdbc.driver': 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
315315
'jdbc.user' : 'sa',
316316
'jdbc.pass' : 'Hibernate_orm_test',
317-
'jdbc.url' : 'jdbc:sqlserver://' + dbHost + ';databaseName=hibernate_orm_test;sendTimeAsDatetime=false;trustServerCertificate=true',
317+
'jdbc.url' : 'jdbc:sqlserver://' + dbHost + ';databaseName=hibernate_orm_test_$worker;sendTimeAsDatetime=false;trustServerCertificate=true',
318318
'jdbc.datasource' : 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
319319
// 'jdbc.datasource' : 'com.microsoft.sqlserver.jdbc.SQLServerDataSource',
320320
'connection.init_sql' : ''

0 commit comments

Comments
 (0)