@@ -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
0 commit comments