Skip to content

Commit 273ab24

Browse files
committed
[#255] Enable tests for batching
1 parent 5097cd6 commit 273ab24

File tree

4 files changed

+27
-30
lines changed

4 files changed

+27
-30
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/pool/impl/PostgresParameters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
public class PostgresParameters extends Parameters {
99

10-
static final PostgresParameters INSTANCE = new PostgresParameters();
10+
public static final PostgresParameters INSTANCE = new PostgresParameters();
1111

1212
private PostgresParameters() {
1313
}

hibernate-reactive-core/src/main/java/org/hibernate/reactive/pool/impl/SQLServerParameters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
public class SQLServerParameters extends Parameters {
99

10-
static final SQLServerParameters INSTANCE = new SQLServerParameters();
10+
public static final SQLServerParameters INSTANCE = new SQLServerParameters();
1111

1212
private SQLServerParameters() {
1313
}

hibernate-reactive-core/src/test/java/org/hibernate/reactive/BatchQueryOnConnectionTest.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66
package org.hibernate.reactive;
77

88
import java.math.BigDecimal;
9+
import java.math.RoundingMode;
910
import java.util.ArrayList;
1011
import java.util.List;
1112
import java.util.concurrent.CompletionStage;
1213
import javax.persistence.Entity;
1314
import javax.persistence.Id;
1415

1516
import org.hibernate.cfg.Configuration;
16-
import org.hibernate.reactive.containers.DatabaseConfiguration;
1717
import org.hibernate.reactive.pool.ReactiveConnection;
18-
import org.hibernate.reactive.testing.DatabaseSelectionRule;
18+
import org.hibernate.reactive.pool.impl.PostgresParameters;
19+
import org.hibernate.reactive.pool.impl.SQLServerParameters;
1920

2021
import org.junit.After;
21-
import org.junit.Rule;
2222
import org.junit.Test;
2323

2424
import io.vertx.ext.unit.TestContext;
@@ -27,9 +27,6 @@
2727

2828
public class BatchQueryOnConnectionTest extends BaseReactiveTest {
2929

30-
@Rule // Not supported at the moment
31-
public DatabaseSelectionRule skip = DatabaseSelectionRule.skipTestsFor( DatabaseConfiguration.DBType.SQLSERVER );
32-
3330
private static final int BATCH_SIZE = 20;
3431

3532
@After
@@ -67,10 +64,7 @@ public void testBatchInsertUpdateSizeGtMultiple(TestContext context) {
6764
}
6865

6966
public List<List<Object[]>> doBatchInserts(TestContext context, int nEntities, int nEntitiesMultiple) {
70-
final String insertSql = "insert into DataPoint (description, x, y, id) values ";
71-
final String sql = dbType().requiresDollarSyntax()
72-
? insertSql + "($1, $2, $3, $4)"
73-
: insertSql + "(?, ?, ?, ?)";
67+
final String insertSql = process( "insert into DataPoint (description, x, y, id) values (?, ?, ?, ?)" );
7468

7569
List<List<Object[]>> paramsBatches = new ArrayList<>();
7670
List<Object[]> paramsBatch = new ArrayList<>( BATCH_SIZE );
@@ -79,8 +73,8 @@ public List<List<Object[]>> doBatchInserts(TestContext context, int nEntities, i
7973

8074
DataPoint dp = new DataPoint(i);
8175
dp.description = "#" + i;
82-
dp.setX(new BigDecimal(i * 0.1d).setScale(19, BigDecimal.ROUND_DOWN));
83-
dp.setY(new BigDecimal(dp.getX().doubleValue()*Math.PI).setScale(19, BigDecimal.ROUND_DOWN));
76+
dp.setX( new BigDecimal( i * 0.1d ).setScale( 19, RoundingMode.DOWN ) );
77+
dp.setY( new BigDecimal( dp.getX().doubleValue() * Math.PI ).setScale( 19, RoundingMode.DOWN ) );
8478
//uncomment to expose bug in DB2 client:
8579
// dp.setY(new BigDecimal(Math.cos(dp.getX().doubleValue())).setScale(19, BigDecimal.ROUND_DOWN));
8680

@@ -98,7 +92,7 @@ public List<List<Object[]>> doBatchInserts(TestContext context, int nEntities, i
9892

9993
CompletionStage<ReactiveConnection> stage = connection();
10094
for ( List<Object[]> batch : paramsBatches ) {
101-
stage = stage.thenCompose( connection -> connection.update( sql, batch )
95+
stage = stage.thenCompose( connection -> connection.update( insertSql, batch )
10296
.thenApply( updateCounts -> {
10397
context.assertEquals( batch.size(), updateCounts.length );
10498
for ( int updateCount : updateCounts ) {
@@ -123,6 +117,17 @@ public List<List<Object[]>> doBatchInserts(TestContext context, int nEntities, i
123117
return paramsBatches;
124118
}
125119

120+
private String process(String sql) {
121+
switch ( dbType() ) {
122+
case POSTGRESQL:
123+
case COCKROACHDB:
124+
return PostgresParameters.INSTANCE.process( sql );
125+
case SQLSERVER:
126+
return SQLServerParameters.INSTANCE.process( sql );
127+
}
128+
return sql;
129+
}
130+
126131
protected Configuration constructConfiguration() {
127132
Configuration configuration = super.constructConfiguration();
128133
configuration.addAnnotatedClass( DataPoint.class );

hibernate-reactive-core/src/test/java/org/hibernate/reactive/containers/DatabaseConfiguration.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,23 @@ public class DatabaseConfiguration {
1818
public static final boolean USE_DOCKER = Boolean.getBoolean("docker");
1919

2020
public enum DBType {
21-
DB2( DB2Database.INSTANCE, 50000, false ),
22-
MYSQL( MySQLDatabase.INSTANCE, 3306, false ),
23-
MARIA( MariaDatabase.INSTANCE, 3306, false, "mariadb" ),
24-
POSTGRESQL( PostgreSQLDatabase.INSTANCE, 5432, true, "POSTGRES", "PG" ),
25-
COCKROACHDB( CockroachDBDatabase.INSTANCE, 26257, true, "COCKROACH" ),
26-
SQLSERVER( MSSQLServerDatabase.INSTANCE, 1433, false, "MSSQL", "MSSQLSERVER" );
21+
DB2( DB2Database.INSTANCE, 50000 ),
22+
MYSQL( MySQLDatabase.INSTANCE, 3306 ),
23+
MARIA( MariaDatabase.INSTANCE, 3306, "mariadb" ),
24+
POSTGRESQL( PostgreSQLDatabase.INSTANCE, 5432, "POSTGRES", "PG" ),
25+
COCKROACHDB( CockroachDBDatabase.INSTANCE, 26257, "COCKROACH" ),
26+
SQLSERVER( MSSQLServerDatabase.INSTANCE, 1433, "MSSQL", "MSSQLSERVER" );
2727

2828
private final TestableDatabase configuration;
2929
private final int defaultPort;
3030

3131
// A list of alternative names that can be used to select the db
3232
private final String[] aliases;
3333

34-
// True if the database requires '$' style parameters for SQL queries
35-
private boolean requiresDollarSyntax;
36-
37-
DBType(TestableDatabase configuration, int defaultPort, boolean requiresDollarSyntax, String... aliases) {
34+
DBType(TestableDatabase configuration, int defaultPort, String... aliases) {
3835
this.configuration = configuration;
3936
this.defaultPort = defaultPort;
4037
this.aliases = aliases;
41-
this.requiresDollarSyntax = requiresDollarSyntax;
4238
}
4339

4440
@Override
@@ -70,10 +66,6 @@ public static DBType fromString(String dbName) {
7066
public int getDefaultPort() {
7167
return defaultPort;
7268
}
73-
74-
public boolean requiresDollarSyntax() {
75-
return requiresDollarSyntax;
76-
}
7769
}
7870

7971
public static final String USERNAME = "hreact";

0 commit comments

Comments
 (0)