TOMEE-2295 check the correct database schema is in place
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/955278f5 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/955278f5 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/955278f5 Branch: refs/heads/tomee-7.1.x Commit: 955278f5716f9b2f30a920735c8aee104fba93c9 Parents: 152f5b2 Author: Jonathan Gallimore <[email protected]> Authored: Wed Dec 5 14:55:40 2018 +0000 Committer: Otavio Santana <[email protected]> Committed: Mon Dec 17 13:59:48 2018 -0200 ---------------------------------------------------------------------- .../tests/cmp/sample/CustomOrmXmlTest.java | 15 +++++-- .../tests/cmp/sample/MoviesServlet.java | 43 ++++++++++++++++++++ .../openejb/arquillian/tests/cmp/sample/web.xml | 5 +++ 3 files changed, 60 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/955278f5/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/CustomOrmXmlTest.java ---------------------------------------------------------------------- diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/CustomOrmXmlTest.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/CustomOrmXmlTest.java index f261015..e8141b6 100644 --- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/CustomOrmXmlTest.java +++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/CustomOrmXmlTest.java @@ -24,6 +24,7 @@ import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset; import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -60,8 +61,16 @@ public class CustomOrmXmlTest { public void checkCmpJpaEntityORMMappings() throws Exception { final String output = IO.slurp(new URL(url.toExternalForm())); System.out.println(output); - //Assert.assertTrue(output.contains("Movie added successfully")); - //Assert.assertTrue(output.contains("Movie removed successfully")); - //Assert.assertTrue(output.contains("title='Bad Boys', director='Michael Bay', year=1995")); + + Assert.assertTrue(output.contains("TABLE_NAME: ACTOR, COLUMN_NAME: ACTORID, DATA_TYPE: INTEGER, CHARACTER_MAXIMUM_LENGTH: null")); + Assert.assertTrue(output.contains("TABLE_NAME: ACTOR, COLUMN_NAME: ACTOR_NAME, DATA_TYPE: CHARACTER VARYING, CHARACTER_MAXIMUM_LENGTH: 250")); + Assert.assertTrue(output.contains("TABLE_NAME: ACTOR_MOVIE, COLUMN_NAME: ACTORS_ACTORID, DATA_TYPE: INTEGER, CHARACTER_MAXIMUM_LENGTH: null")); + Assert.assertTrue(output.contains("TABLE_NAME: ACTOR_MOVIE, COLUMN_NAME: MOVIES_MOVIEID, DATA_TYPE: INTEGER, CHARACTER_MAXIMUM_LENGTH: null")); + Assert.assertTrue(output.contains("TABLE_NAME: MOVIE, COLUMN_NAME: MOVIEID, DATA_TYPE: INTEGER, CHARACTER_MAXIMUM_LENGTH: null")); + Assert.assertTrue(output.contains("TABLE_NAME: MOVIE, COLUMN_NAME: GENRE, DATA_TYPE: CHARACTER VARYING, CHARACTER_MAXIMUM_LENGTH: 255")); + Assert.assertTrue(output.contains("TABLE_NAME: MOVIE, COLUMN_NAME: MOVIE_NAME, DATA_TYPE: CHARACTER VARYING, CHARACTER_MAXIMUM_LENGTH: 250")); + + final String[] split = output.split("\r\n"); + Assert.assertEquals(7, split.length); } } http://git-wip-us.apache.org/repos/asf/tomee/blob/955278f5/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/MoviesServlet.java ---------------------------------------------------------------------- diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/MoviesServlet.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/MoviesServlet.java index 54f0893..63d868c 100644 --- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/MoviesServlet.java +++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/cmp/sample/MoviesServlet.java @@ -18,6 +18,11 @@ package org.apache.openejb.arquillian.tests.cmp.sample; import java.io.IOException; +import java.io.PrintWriter; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; @@ -25,6 +30,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.sql.DataSource; public class MoviesServlet extends HttpServlet { @@ -32,6 +38,9 @@ public class MoviesServlet extends HttpServlet { @Override protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { try { + + final PrintWriter pw = resp.getWriter(); + final Context initial = new InitialContext(); final MoviesBusinessHome home = (MoviesBusinessHome) @@ -40,6 +49,40 @@ public class MoviesServlet extends HttpServlet { final MoviesBusiness moviesBusiness = home.create(); moviesBusiness.doLogic(); + final DataSource ds = (DataSource) initial.lookup("java:comp/env/db/DataSource"); + try (final Connection connection = ds.getConnection(); + final PreparedStatement ps = connection.prepareStatement( + "select TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH " + + "from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA = 'PUBLIC'"); + + final ResultSet rs = ps.executeQuery()) { + + final ResultSetMetaData metaData = rs.getMetaData(); + final int columnCount = metaData.getColumnCount(); + + final String[] columnNames = new String[columnCount]; + + for (int c = 0; c < columnCount; c++) { + columnNames[c] = metaData.getColumnName(c + 1); + } + + while (rs.next()) { + final StringBuilder sb = new StringBuilder(); + + for (int c = 0; c < columnCount; c++) { + if (c > 0) { + sb.append(", "); + } + + sb.append(columnNames[c]).append(": ").append(rs.getString(c + 1)); + } + + pw.println(sb.toString()); + } + } + + pw.flush(); + } catch (final Exception ex) { throw new ServletException(ex); } http://git-wip-us.apache.org/repos/asf/tomee/blob/955278f5/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/cmp/sample/web.xml ---------------------------------------------------------------------- diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/cmp/sample/web.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/cmp/sample/web.xml index a536e17..cd3c591 100644 --- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/cmp/sample/web.xml +++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/cmp/sample/web.xml @@ -39,4 +39,9 @@ <home>org.apache.openejb.arquillian.tests.cmp.sample.MoviesBusinessHome</home> <remote>org.apache.openejb.arquillian.tests.cmp.sample.MoviesBusiness</remote> </ejb-ref> + + <resource-ref> + <res-ref-name>db/DataSource</res-ref-name> + <res-type>javax.sql.DataSource</res-type> + </resource-ref> </web-app> \ No newline at end of file
