@@ -83,7 +83,11 @@ protected boolean supportObjectDataTypeTest() {
83
83
84
84
@ Override
85
85
protected JsonNode getConfig () {
86
- return Jsons .jsonNode (ImmutableMap .builder ()
86
+ return getConfigFromTestContainer (db );
87
+ }
88
+
89
+ public static ObjectNode getConfigFromTestContainer (final MySQLContainer <?> db ) {
90
+ return (ObjectNode ) Jsons .jsonNode (ImmutableMap .builder ()
87
91
.put (JdbcUtils .HOST_KEY , HostPortResolver .resolveHost (db ))
88
92
.put (JdbcUtils .USERNAME_KEY , db .getUsername ())
89
93
.put (JdbcUtils .PASSWORD_KEY , db .getPassword ())
@@ -132,23 +136,22 @@ protected List<JsonNode> retrieveRecords(final TestDestinationEnv testEnv,
132
136
}
133
137
134
138
private List <JsonNode > retrieveRecordsFromTable (final String tableName , final String schemaName ) throws SQLException {
135
- try ( final DSLContext dslContext = DSLContextFactory .create (
139
+ final DSLContext dslContext = DSLContextFactory .create (
136
140
db .getUsername (),
137
141
db .getPassword (),
138
142
db .getDriverClassName (),
139
143
String .format (DatabaseDriver .MYSQL .getUrlFormatString (),
140
144
db .getHost (),
141
145
db .getFirstMappedPort (),
142
146
db .getDatabaseName ()),
143
- SQLDialect .MYSQL )) {
144
- return new Database (dslContext ).query (
145
- ctx -> ctx
146
- .fetch (String .format ("SELECT * FROM %s.%s ORDER BY %s ASC;" , schemaName , tableName ,
147
- JavaBaseConstants .COLUMN_NAME_EMITTED_AT ))
148
- .stream ()
149
- .map (this ::getJsonFromRecord )
150
- .collect (Collectors .toList ()));
151
- }
147
+ SQLDialect .MYSQL );
148
+ return new Database (dslContext ).query (
149
+ ctx -> ctx
150
+ .fetch (String .format ("SELECT * FROM %s.%s ORDER BY %s ASC;" , schemaName , tableName ,
151
+ JavaBaseConstants .COLUMN_NAME_EMITTED_AT ))
152
+ .stream ()
153
+ .map (this ::getJsonFromRecord )
154
+ .collect (Collectors .toList ()));
152
155
}
153
156
154
157
@ Override
@@ -163,36 +166,39 @@ protected List<JsonNode> retrieveNormalizedRecords(final TestDestinationEnv test
163
166
protected void setup (final TestDestinationEnv testEnv , final HashSet <String > TEST_SCHEMAS ) {
164
167
db = new MySQLContainer <>("mysql:8.0" );
165
168
db .start ();
166
- setLocalInFileToTrue ();
167
- revokeAllPermissions ();
168
- grantCorrectPermissions ();
169
+ configureTestContainer (db );
170
+ }
171
+
172
+ public static void configureTestContainer (final MySQLContainer <?> db ) {
173
+ setLocalInFileToTrue (db );
174
+ revokeAllPermissions (db );
175
+ grantCorrectPermissions (db );
169
176
}
170
177
171
- private void setLocalInFileToTrue () {
172
- executeQuery ("set global local_infile=true" );
178
+ private static void setLocalInFileToTrue (final MySQLContainer <?> db ) {
179
+ executeQuery (db , "set global local_infile=true" );
173
180
}
174
181
175
- private void revokeAllPermissions () {
176
- executeQuery ("REVOKE ALL PRIVILEGES, GRANT OPTION FROM " + db .getUsername () + "@'%';" );
182
+ private static void revokeAllPermissions (final MySQLContainer <?> db ) {
183
+ executeQuery (db , "REVOKE ALL PRIVILEGES, GRANT OPTION FROM " + db .getUsername () + "@'%';" );
177
184
}
178
185
179
- private void grantCorrectPermissions () {
180
- executeQuery ("GRANT ALTER, CREATE, INSERT, SELECT, DROP ON *.* TO " + db .getUsername () + "@'%';" );
186
+ private static void grantCorrectPermissions (final MySQLContainer <?> db ) {
187
+ executeQuery (db , "GRANT ALTER, CREATE, INSERT, INDEX, UPDATE, DELETE , SELECT, DROP ON *.* TO " + db .getUsername () + "@'%';" );
181
188
}
182
189
183
- private void executeQuery (final String query ) {
184
- try ( final DSLContext dslContext = DSLContextFactory .create (
190
+ private static void executeQuery (final MySQLContainer <?> db , final String query ) {
191
+ final DSLContext dslContext = DSLContextFactory .create (
185
192
"root" ,
186
193
"test" ,
187
194
db .getDriverClassName (),
188
195
String .format (DatabaseDriver .MYSQL .getUrlFormatString (),
189
196
db .getHost (),
190
197
db .getFirstMappedPort (),
191
198
db .getDatabaseName ()),
192
- SQLDialect .MYSQL )) {
193
- new Database (dslContext ).query (
194
- ctx -> ctx
195
- .execute (query ));
199
+ SQLDialect .MYSQL );
200
+ try {
201
+ new Database (dslContext ).query (ctx -> ctx .execute (query ));
196
202
} catch (final SQLException e ) {
197
203
throw new RuntimeException (e );
198
204
}
@@ -208,7 +214,7 @@ protected void tearDown(final TestDestinationEnv testEnv) {
208
214
@ Test
209
215
public void testCustomDbtTransformations () throws Exception {
210
216
// We need to create view for testing custom dbt transformations
211
- executeQuery ("GRANT CREATE VIEW ON *.* TO " + db .getUsername () + "@'%';" );
217
+ executeQuery (db , "GRANT CREATE VIEW ON *.* TO " + db .getUsername () + "@'%';" );
212
218
super .testCustomDbtTransformations ();
213
219
}
214
220
@@ -330,7 +336,7 @@ public void testCheckIncorrectDataBaseFailure() {
330
336
unit = SECONDS )
331
337
@ Test
332
338
public void testUserHasNoPermissionToDataBase () {
333
- executeQuery ("create user '" + USERNAME_WITHOUT_PERMISSION + "'@'%' IDENTIFIED BY '" + PASSWORD_WITHOUT_PERMISSION + "';\n " );
339
+ executeQuery (db , "create user '" + USERNAME_WITHOUT_PERMISSION + "'@'%' IDENTIFIED BY '" + PASSWORD_WITHOUT_PERMISSION + "';\n " );
334
340
final JsonNode config = ((ObjectNode ) getConfigForBareMetalConnection ()).put (JdbcUtils .USERNAME_KEY , USERNAME_WITHOUT_PERMISSION );
335
341
((ObjectNode ) config ).put (JdbcUtils .PASSWORD_KEY , PASSWORD_WITHOUT_PERMISSION );
336
342
final MySQLDestination destination = new MySQLDestination ();
0 commit comments