77import com .typesafe .config .Config ;
88import com .typesafe .config .ConfigFactory ;
99import com .typesafe .config .ConfigValueFactory ;
10+
1011import static com .typesafe .config .ConfigValueFactory .fromAnyRef ;
12+
1113import com .zaxxer .hikari .HikariConfig ;
1214import com .zaxxer .hikari .HikariDataSource ;
15+
1316import static org .easymock .EasyMock .expect ;
17+
1418import org .jooby .Env ;
1519import org .jooby .test .MockUnit ;
1620import org .jooby .test .MockUnit .Block ;
@@ -70,7 +74,7 @@ public void memdb() throws Exception {
7074 "sa" , "" , false ))
7175 .expect (hikariConfig ())
7276 .expect (hikariDataSource ())
73- .expect (serviceKey ("db" ))
77+ .expect (serviceKey ("db" , "h2" ))
7478 .expect (serviceKey ("123" ))
7579 .expect (onStop )
7680 .run (unit -> {
@@ -93,7 +97,7 @@ public void fsdb() throws Exception {
9397 "sa" , "" , false ))
9498 .expect (hikariConfig ())
9599 .expect (hikariDataSource ())
96- .expect (serviceKey ("db" ))
100+ .expect (serviceKey ("db" , "h2" ))
97101 .expect (serviceKey ("jdbctest" ))
98102 .expect (onStop )
99103 .expect (unit -> {
@@ -138,7 +142,7 @@ public void dbWithCallback() throws Exception {
138142 .expect (hikariConfig ())
139143 .expect (hikariDataSource ())
140144 .expect (serviceKey ("jdbctest" ))
141- .expect (serviceKey ("db" ))
145+ .expect (serviceKey ("db" , "h2" ))
142146 .expect (onStop )
143147 .expect (unit -> {
144148 HikariConfig h = unit .get (HikariConfig .class );
@@ -172,7 +176,7 @@ public void databaseWithCredentials() throws Exception {
172176 .expect (mysql )
173177 .expect (hikariConfig ())
174178 .expect (hikariDataSource ())
175- .expect (serviceKey ("db" ))
179+ .expect (serviceKey ("db" , "mysql" ))
176180 .expect (onStop )
177181 .run (unit -> {
178182 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -195,7 +199,7 @@ public void derby() throws Exception {
195199 .expect (hikariConfig ())
196200 .expect (hikariDataSource ())
197201 .expect (serviceKey ("testdb" ))
198- .expect (serviceKey ("db" ))
202+ .expect (serviceKey ("db" , "derby" ))
199203 .expect (onStop )
200204 .run (unit -> {
201205 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -223,7 +227,7 @@ public void connectionString() throws Exception {
223227 expect (hconf .getDataSourceProperties ()).andReturn (props );
224228 })
225229 .expect (hikariDataSource ())
226- .expect (serviceKey ("testdb" ))
230+ .expect (serviceKey ("testdb" , "derby" ))
227231 .expect (onStop )
228232 .run (unit -> {
229233 new Jdbc ("jdbc:derby:testdb" ).configure (unit .get (Env .class ), config ,
@@ -248,7 +252,7 @@ public void db2() throws Exception {
248252 .expect (hikariConfig ())
249253 .expect (hikariDataSource ())
250254 .expect (serviceKey ("SAMPLE" ))
251- .expect (serviceKey ("db" ))
255+ .expect (serviceKey ("db" , "db2" ))
252256 .expect (onStop )
253257 .run (unit -> {
254258 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -272,7 +276,7 @@ public void hsql() throws Exception {
272276 .expect (hikariConfig ())
273277 .expect (hikariDataSource ())
274278 .expect (serviceKey ("file" ))
275- .expect (serviceKey ("db" ))
279+ .expect (serviceKey ("db" , "hsqldb" ))
276280 .expect (onStop )
277281 .run (unit -> {
278282 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -295,7 +299,7 @@ public void mariadb() throws Exception {
295299 "mariadb.db" , null , "" , false ))
296300 .expect (hikariConfig ())
297301 .expect (hikariDataSource ())
298- .expect (serviceKey ("db" ))
302+ .expect (serviceKey ("db" , "mariadb" ))
299303 .expect (onStop )
300304 .run (unit -> {
301305 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -320,7 +324,7 @@ public void mysql() throws Exception {
320324 .expect (mysql )
321325 .expect (hikariConfig ())
322326 .expect (hikariDataSource ())
323- .expect (serviceKey ("db" ))
327+ .expect (serviceKey ("db" , "mysql" ))
324328 .expect (onStop )
325329 .run (unit -> {
326330 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -352,7 +356,7 @@ public void dbspecific() throws Exception {
352356 })
353357 .expect (hikariConfig ())
354358 .expect (hikariDataSource ())
355- .expect (serviceKey ("db" ))
359+ .expect (serviceKey ("db" , "mysql" ))
356360 .expect (onStop )
357361 .run (unit -> {
358362 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -390,7 +394,7 @@ public void setHikariOptions() throws Exception {
390394 .expect (hikariConfig ())
391395 .expect (hikariDataSource ())
392396 .expect (serviceKey ("jdbctest" ))
393- .expect (serviceKey ("db" ))
397+ .expect (serviceKey ("db" , "h2" ))
394398 .expect (onStop )
395399 .run (unit -> {
396400 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -419,7 +423,7 @@ public void overrideDataSource() throws Exception {
419423 .expect (hikariConfig ())
420424 .expect (hikariDataSource ())
421425 .expect (serviceKey ("jdbctest" ))
422- .expect (serviceKey ("db" ))
426+ .expect (serviceKey ("db" , "h2" ))
423427 .expect (onStop )
424428 .run (unit -> {
425429 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -452,7 +456,7 @@ public void twoDatabases() throws Exception {
452456 .expect (hikariConfig ())
453457 .expect (hikariDataSource ())
454458 .expect (serviceKey ("audit" ))
455- .expect (serviceKey ("db.audit" ))
459+ .expect (serviceKey ("db.audit" , "h2" ))
456460 .expect (onStop )
457461 .run (unit -> {
458462 new Jdbc ("db.audit" ).configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -479,7 +483,7 @@ public void sqlserver() throws Exception {
479483 .expect (hikariConfig ())
480484 .expect (hikariDataSource ())
481485 .expect (serviceKey ("AdventureWorks" ))
482- .expect (serviceKey ("db" ))
486+ .expect (serviceKey ("db" , "sqlserver" ))
483487 .expect (onStop )
484488 .run (unit -> {
485489 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -504,7 +508,7 @@ public void oracle() throws Exception {
504508 .expect (hikariConfig ())
505509 .expect (hikariDataSource ())
506510 .expect (serviceKey ("orcl" ))
507- .expect (serviceKey ("db" ))
511+ .expect (serviceKey ("db" , "oracle" ))
508512 .expect (onStop )
509513 .run (unit -> {
510514 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -529,7 +533,7 @@ public void pgsql() throws Exception {
529533 .expect (hikariConfig ())
530534 .expect (hikariDataSource ())
531535 .expect (serviceKey ("database" ))
532- .expect (serviceKey ("db" ))
536+ .expect (serviceKey ("db" , "pgsql" ))
533537 .expect (onStop )
534538 .run (unit -> {
535539 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -553,7 +557,7 @@ public void postgresql() throws Exception {
553557 .expect (hikariConfig ())
554558 .expect (hikariDataSource ())
555559 .expect (serviceKey ("database" ))
556- .expect (serviceKey ("db" ))
560+ .expect (serviceKey ("db" , "postgresql" ))
557561 .expect (onStop )
558562 .run (unit -> {
559563 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -577,7 +581,7 @@ public void sybase() throws Exception {
577581 .expect (hikariConfig ())
578582 .expect (hikariDataSource ())
579583 .expect (serviceKey ("database" ))
580- .expect (serviceKey ("db" ))
584+ .expect (serviceKey ("db" , "sybase" ))
581585 .expect (onStop )
582586 .run (unit -> {
583587 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -601,7 +605,7 @@ public void firebirdsql() throws Exception {
601605 .expect (hikariConfig ())
602606 .expect (hikariDataSource ())
603607 .expect (serviceKey ("mydb" ))
604- .expect (serviceKey ("db" ))
608+ .expect (serviceKey ("db" , "firebirdsql" ))
605609 .expect (onStop )
606610 .run (unit -> {
607611 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -625,7 +629,7 @@ public void sqlite() throws Exception {
625629 .expect (hikariConfig ())
626630 .expect (hikariDataSource ())
627631 .expect (serviceKey ("testdb" ))
628- .expect (serviceKey ("db" ))
632+ .expect (serviceKey ("db" , "sqlite" ))
629633 .expect (onStop )
630634 .run (unit -> {
631635 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
@@ -651,15 +655,19 @@ public void unknownDb() throws Exception {
651655 .expect (hikariConfig ())
652656 .expect (hikariDataSource ())
653657 .expect (serviceKey ("testdb" ))
654- .expect (serviceKey ("db" ))
658+ .expect (serviceKey ("db" , "custom" ))
655659 .expect (onStop )
656660 .run (unit -> {
657661 new Jdbc ().configure (unit .get (Env .class ), dbconf , unit .get (Binder .class ));
658662 });
659663 }
660664
661- @ SuppressWarnings ("unchecked" )
662665 private Block serviceKey (final String db ) {
666+ return serviceKey (db , null );
667+ }
668+
669+ @ SuppressWarnings ("unchecked" )
670+ private Block serviceKey (final String db , String dbtype ) {
663671 return unit -> {
664672 Env env = unit .get (Env .class );
665673 expect (env .serviceKey ()).andReturn (new Env .ServiceKey ());
@@ -672,7 +680,11 @@ private Block serviceKey(final String db) {
672680 expect (binder .bind (Key .get (DataSource .class ))).andReturn (binding );
673681 expect (binder .bind (Key .get (DataSource .class , Names .named (db )))).andReturn (binding );
674682 expect (env .set (Key .get (DataSource .class ), unit .get (HikariDataSource .class ))).andReturn (env );
675- expect (env .set (Key .get (DataSource .class , Names .named (db )), unit .get (HikariDataSource .class ))).andReturn (env );
683+ expect (env .set (Key .get (DataSource .class , Names .named (db )), unit .get (HikariDataSource .class )))
684+ .andReturn (env );
685+ if (dbtype != null ) {
686+ expect (env .set (Key .get (String .class , Names .named (db + ".dbtype" )), dbtype )).andReturn (env );
687+ }
676688 };
677689 }
678690
0 commit comments