### Question:
FiberDataSource implements DataSource { @Override @Suspendable public FiberConnection getConnection() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<FiberConnection, SQLException>() { @Override public FiberConnection call() throws SQLException { return new FiberConnection(ds.getConnection(), executor); } }); } protected  FiberDataSource(final DataSource ds, final ExecutorService exec); static DataSource wrap(final DataSource ds, final ExecutorService executor); static DataSource wrap(final DataSource ds, final int numThreads); static DataSource wrap(final DataSource ds); @Override @Suspendable FiberConnection getConnection(); @Override @Suspendable FiberConnection getConnection(final String username, final String password); @Override @Suspendable PrintWriter getLogWriter(); @Override @Suspendable void setLogWriter(final PrintWriter out); @Override @Suspendable void setLoginTimeout(final int seconds); @Override @Suspendable int getLoginTimeout(); @Override Logger getParentLogger(); @Override T unwrap(final Class<T> iface); @Override boolean isWrapperFor(final Class<?> iface); @Override int hashCode(); @Override @SuppressWarnings("EqualsWhichDoesntCheckParameterClass") boolean equals(final Object obj); @Override String toString();  }### Answer:
@Test public void testGetConnection() throws IOException, InterruptedException, Exception { final DataSource fiberDs = FiberDataSource.wrap(ds); new Fiber<Void>(new SuspendableRunnable() { @Override public void run() throws SuspendExecution, InterruptedException { try { Connection conn = fiberDs.getConnection(); conn.close(); } catch (SQLException ex) { fail(ex.getMessage()); } } }).start().join(); }