Skip to content

Commit e9a1b31

Browse files
committed
Add test cases for MariaDB database CF Service
1 parent 1c87c37 commit e9a1b31

6 files changed

Lines changed: 189 additions & 3 deletions

File tree

java-cfenv-jdbc/src/test/java/io/pivotal/cfenv/jdbc/MySqlJdbcTests.java

Lines changed: 147 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void mysqlServiceCreation() {
4848
assertThat(cfJdbcService.getUsername()).isEqualTo(username);
4949
assertThat(cfJdbcService.getPassword()).isEqualTo(password);
5050
assertThat(cfJdbcService.getDriverClassName())
51-
.isEqualTo("org.mariadb.jdbc.Driver");
51+
.isEqualTo(MySqlJdbcUrlCreator.MARIADB_DRIVER_CLASS_NAME);
5252

5353
assertThatThrownBy(() -> {
5454
cfJdbcEnv.findJdbcServiceByName("mysql.*");
@@ -160,7 +160,7 @@ public void mysqlServiceCreationWithJdbcUrlOnly() {
160160
assertThat(cfJdbcService.getUsername()).isNull();
161161
assertThat(cfJdbcService.getPassword()).isNull();
162162
assertThat(cfJdbcService.getDriverClassName())
163-
.isEqualTo("org.mariadb.jdbc.Driver");
163+
.isEqualTo(MySqlJdbcUrlCreator.MARIADB_DRIVER_CLASS_NAME);
164164
}
165165

166166
@Test
@@ -178,6 +178,91 @@ public void mysqlServiceCreationWithJdbcUrlOnlyWithSpecialChars() {
178178
passwordWithSpecialChars)).isEqualTo(jdbcUrlMysql);
179179
}
180180

181+
182+
@Test
183+
public void mariaDbServiceCreation() {
184+
String name1 = "database-1";
185+
String name2 = "database-2";
186+
187+
mockVcapServices(getServicesPayload(
188+
getMariaDbServicePayload("mariadb-1", hostname, port, username, password,
189+
name1),
190+
getMariaDbServicePayload("mariadb-2", hostname, port, username, password,
191+
name2)));
192+
193+
assertJdbcServiceValuesMariaDb(name1, name2);
194+
195+
CfJdbcEnv cfJdbcEnv = new CfJdbcEnv();
196+
CfJdbcService cfJdbcService = cfJdbcEnv.findJdbcServiceByName("mariadb-1");
197+
assertThat(cfJdbcService.getUsername()).isEqualTo(username);
198+
assertThat(cfJdbcService.getPassword()).isEqualTo(password);
199+
assertThat(cfJdbcService.getDriverClassName())
200+
.isEqualTo(MySqlJdbcUrlCreator.MARIADB_DRIVER_CLASS_NAME);
201+
}
202+
@Test
203+
public void mariaDbServiceCreationWithJdbcUrl() {
204+
String name1 = "database-1";
205+
String name2 = "database-2";
206+
mockVcapServices(getServicesPayload(
207+
getMariaDbServicePayloadWithJdbcUrl("mariadb-1", hostname, port, username,
208+
password, name1),
209+
getMariaDbServicePayloadWithJdbcUrl("mariadb-2", hostname, port, username,
210+
password, name2)));
211+
212+
assertJdbcServiceValuesMariaDb(name1, name2);
213+
}
214+
215+
@Test
216+
public void mariaDbServiceCreationWithLabelNoTags() {
217+
String name1 = "database-1";
218+
String name2 = "database-2";
219+
mockVcapServices(getServicesPayload(
220+
getMariaDbServicePayloadWithLabelNoTags("mariadb-1", hostname, port, username,
221+
password, name1),
222+
getMariaDbServicePayloadWithLabelNoTags("mariadb-2", hostname, port, username,
223+
password, name2)));
224+
assertJdbcServiceValuesMariaDb(name1, name2);
225+
226+
}
227+
228+
@Test
229+
public void mariaDbServiceCreationWithUriOnly() {
230+
String name1 = "database-1";
231+
String name2 = "database-2";
232+
mockVcapServices(getServicesPayload(
233+
getMariaDbServicePayloadUri("mariadb-1", hostname, port, username,
234+
password, name1),
235+
getMariaDbServicePayloadUri("mariadb-2", hostname, port, username,
236+
password, name2)));
237+
238+
assertJdbcServiceValuesMariaDb(name1, name2);
239+
240+
CfJdbcEnv cfJdbcEnv = new CfJdbcEnv();
241+
CfJdbcService cfJdbcService = cfJdbcEnv.findJdbcServiceByName("mariadb-1");
242+
assertThat(cfJdbcService.getDriverClassName())
243+
.isEqualTo(MySqlJdbcUrlCreator.MARIADB_DRIVER_CLASS_NAME);
244+
}
245+
246+
@Test
247+
public void mariaDbServiceCreationWithJdbcUrlOnly() {
248+
String name1 = "database-1";
249+
String name2 = "database-2";
250+
mockVcapServices(getServicesPayload(
251+
getMariaDbServicePayloadWithJdbcUrlOnly("mariadb-1", hostname, port, username,
252+
password, name1),
253+
getMariaDbServicePayloadWithJdbcUrlOnly("mariadb-2", hostname, port, username,
254+
password, name2)));
255+
256+
assertJdbcServiceValuesMariaDb(name1, name2);
257+
258+
CfJdbcEnv cfJdbcEnv = new CfJdbcEnv();
259+
CfJdbcService cfJdbcService = cfJdbcEnv.findJdbcServiceByName("mariadb-1");
260+
assertThat(cfJdbcService.getUsername()).isNull();
261+
assertThat(cfJdbcService.getPassword()).isNull();
262+
assertThat(cfJdbcService.getDriverClassName())
263+
.isEqualTo(MySqlJdbcUrlCreator.MARIADB_DRIVER_CLASS_NAME);
264+
}
265+
181266
// Utility methods
182267

183268
private void assertJdbcServiceValues(String name1, String name2) {
@@ -209,7 +294,40 @@ private void assertJdbcServiceValues(String name1, String name2) {
209294

210295
CfJdbcService cfJdbcService = cfJdbcEnv.findJdbcServiceByName("mysql-1");
211296
assertThat(cfJdbcService.getDriverClassName())
212-
.isEqualTo("org.mariadb.jdbc.Driver");
297+
.isEqualTo(MySqlJdbcUrlCreator.MARIADB_DRIVER_CLASS_NAME);
298+
299+
}
300+
301+
private void assertJdbcServiceValuesMariaDb(String name1, String name2) {
302+
CfJdbcEnv cfJdbcEnv = new CfJdbcEnv();
303+
String jdbcUrlMysql1 = cfJdbcEnv.findJdbcServiceByName("mariadb-1").getJdbcUrl();
304+
String jdbcUrlMysql2 = cfJdbcEnv.findJdbcServiceByName("mariadb-2").getJdbcUrl();
305+
306+
assertThat(getExpectedJdbcUrl(MySqlJdbcUrlCreator.MARIADB_SCHEME, name1))
307+
.isEqualTo(jdbcUrlMysql1);
308+
assertThat(getExpectedJdbcUrl(MySqlJdbcUrlCreator.MARIADB_SCHEME, name2))
309+
.isEqualTo(jdbcUrlMysql2);
310+
311+
CfJdbcService cfJdbcService1 = cfJdbcEnv.findJdbcServiceByName("mariadb-1");
312+
CfJdbcService cfJdbcService2 = cfJdbcEnv.findJdbcServiceByName("mariadb-2");
313+
jdbcUrlMysql1 = cfJdbcService1.getJdbcUrl();
314+
jdbcUrlMysql2 = cfJdbcService2.getJdbcUrl();
315+
assertThat(getExpectedJdbcUrl(MySqlJdbcUrlCreator.MARIADB_SCHEME, name1))
316+
.isEqualTo(jdbcUrlMysql1);
317+
assertThat(getExpectedJdbcUrl(MySqlJdbcUrlCreator.MARIADB_SCHEME, name2))
318+
.isEqualTo(jdbcUrlMysql2);
319+
320+
List<CfJdbcService> cfJdbcServices = cfJdbcEnv.findJdbcServices();
321+
assertThat(cfJdbcServices.size()).isEqualTo(2);
322+
323+
assertThatThrownBy(() -> {
324+
cfJdbcEnv.findJdbcService().getJdbcUrl();
325+
}).isInstanceOf(IllegalArgumentException.class).hasMessage(
326+
"No unique database service found. Found database service names [mariadb-1, mariadb-2]");
327+
328+
CfJdbcService cfJdbcService = cfJdbcEnv.findJdbcServiceByName("mariadb-1");
329+
assertThat(cfJdbcService.getDriverClassName())
330+
.isEqualTo(MySqlJdbcUrlCreator.MARIADB_DRIVER_CLASS_NAME);
213331

214332
}
215333

@@ -255,6 +373,32 @@ private String getMysqlServicePayloadWithJdbcUrlOnly(String serviceName,
255373
hostname, port, user, password, name);
256374
}
257375

376+
private String getMariaDbServicePayloadWithJdbcUrl(String serviceName, String hostname, int port, String user, String password, String name) {
377+
//Test by MariaDB JDBC url with DB uri
378+
return getTemplatedPayload("test-mariadb-info-jdbc-url.json", serviceName, hostname, port, user, password, name);
379+
}
380+
381+
private String getMariaDbServicePayloadWithLabelNoTags(String serviceName, String hostname, int port, String user, String password, String name) {
382+
//Test by presence of mariadb string in beginning of service label
383+
return getTemplatedPayload("test-mariadb-info-with-label-no-tags.json", serviceName, hostname, port, user, password, name);
384+
}
385+
386+
private String getMariaDbServicePayload(String serviceName, String hostname, int port, String user, String password, String name) {
387+
//Test by MariaDB tag (alongside mysql)
388+
return getTemplatedPayload("test-mariadb-info.json", serviceName, hostname, port, user, password, name);
389+
}
390+
391+
private String getMariaDbServicePayloadUri(String serviceName, String hostname, int port, String user, String password, String name) {
392+
//Test by MariaDB uri
393+
return getTemplatedPayload("test-mariadb-info-uri.json", serviceName, hostname, port, user, password, name);
394+
}
395+
396+
private String getMariaDbServicePayloadWithJdbcUrlOnly(String serviceName, String hostname, int port, String user, String password, String name) {
397+
//Test by MariaDB jdbc url
398+
return getTemplatedPayload("test-mariadb-info-jdbc-url-only.json", serviceName,
399+
hostname, port, user, password, name);
400+
}
401+
258402
@Override
259403
protected String getExpectedJdbcUrl(String databaseType, String name) {
260404
return "jdbc:" + databaseType + "://" + hostname + ":" + port + "/" + name
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "$serviceName",
3+
"credentials": {
4+
"jdbcUrl": "jdbc:mariadb://$hostname:$port/$name?user=$user&password=$password"
5+
}
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "$serviceName",
3+
"credentials": {
4+
"jdbcUrl": "jdbc:mariadb://$hostname:$port/$name?user=$user&password=$password",
5+
"uri": "mariadb://$user:$password@$hostname:$port/$name"
6+
}
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "$serviceName",
3+
"label": "cleardb",
4+
"plan": "free",
5+
"credentials": {
6+
"uri": "mariadb://$user:$password@$hostname:$port/$name"
7+
}
8+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"name": "$serviceName",
3+
"label": "mariadb-10.11",
4+
"tags": [],
5+
"plan": "free",
6+
"credentials": {
7+
"uri": "mysql://$user:$password@$hostname:$port/$name"
8+
}
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "$serviceName",
3+
"label": "cleardb",
4+
"tags": [
5+
"mariadb",
6+
"mysql"
7+
],
8+
"plan": "free",
9+
"credentials": {
10+
"uri": "mysql://$user:$password@$hostname:$port/$name"
11+
}
12+
}

0 commit comments

Comments
 (0)