/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.test.dbtest.test; import java.rmi.*; import java.util.Collection; import java.util.Date; import java.util.Enumeration; import java.util.Iterator; import java.util.Properties; import javax.ejb.DuplicateKeyException; import javax.ejb.EJBMetaData; import javax.ejb.FinderException; import javax.ejb.Handle; import javax.naming.Context; import javax.naming.InitialContext; import junit.framework.*; import org.jboss.test.dbtest.interfaces.AllTypes; import org.jboss.test.dbtest.interfaces.AllTypesHome; import org.jboss.test.dbtest.interfaces.MyObject; import org.jboss.test.dbtest.interfaces.Record; import org.jboss.test.dbtest.interfaces.RecordHome; import org.jboss.test.JBossTestCase; /** * Test case to try out all db types using cmp against DefaultDS */ public class DbTypesUnitTestCase extends JBossTestCase { static boolean deployed = false; /** * Constructor for the DbTypesUnitTestCase object * * @param name Description of Parameter */ public DbTypesUnitTestCase(String name) { super(name); } /** * A unit test for JUnit * * @exception Exception Description of Exception */ public void testAllTypesBean() throws Exception { int test = 0; Context ctx = new InitialContext(); getLog().debug(++test + "- " + "Looking up the home AllTypes..."); AllTypesHome allTypesHome; try { allTypesHome = (AllTypesHome)ctx.lookup("AllTypes"); if (allTypesHome == null) { throw new Exception("abort"); } getLog().debug("OK"); } catch (Exception e) { getLog().debug("Could not lookup the context: the beans are probably not deployed"); getLog().debug("Check the server trace for details"); log.debug("failed", e); throw new Exception(); } getLog().debug(++test + "- " + "Calling findByPrimaryKey on AllTypesHome with name seb..."); AllTypes allTypes = null; try { allTypes = allTypesHome.findByPrimaryKey("seb"); } catch (Exception e) { getLog().debug(e.getMessage()); } if (allTypes == null) { getLog().debug("not found OK"); getLog().debug(++test + "- " + "Calling create on AllTypesHome with name seb..."); allTypes = allTypesHome.create("seb"); } if (allTypes != null) { getLog().debug("OK"); } else { getLog().debug("Could not find or create the alltypes bean"); getLog().debug("Check the server trace for details"); throw new Exception(); } getLog().debug("Getting all the fields"); getLog().debug(++test + "- " + "boolean " + allTypes.getBoolean() + " OK"); getLog().debug(++test + "- " + "byte " + allTypes.getByte() + " OK"); getLog().debug(++test + "- " + "short " + allTypes.getShort() + " OK"); getLog().debug(++test + "- " + "int " + allTypes.getInt() + " OK"); getLog().debug(++test + "- " + "long " + allTypes.getLong() + " OK"); getLog().debug(++test + "- " + "float " + allTypes.getFloat() + " OK"); getLog().debug(++test + "- " + "double " + allTypes.getDouble() + " OK"); getLog().debug("No char test yet, bug in jdk"); getLog().debug(++test + "- " + "String " + allTypes.getString() + " OK"); getLog().debug(++test + "- " + "Date " + allTypes.getDate() + " OK"); getLog().debug(++test + "- " + "Time " + allTypes.getTime() + " OK"); getLog().debug(++test + "- " + "Timestamp " + allTypes.getTimestamp() + " OK"); getLog().debug(++test + "- " + "MyObject "); MyObject obj = allTypes.getObject(); getLog().debug("OK"); getLog().debug(++test + "- " + "Creating Record beans and adding them to the Collection in Alltypes.."); RecordHome recordHome = (RecordHome)ctx.lookup("Record"); Record[] record = new Record[3]; for (int i = 0; i < 3; i++) { try { record[i] = recordHome.findByPrimaryKey("bill " + i); } catch (FinderException e) { record[i] = recordHome.create("bill " + i); } record[i].setAddress("SanFrancisco, CA 9411" + i); allTypes.addObjectToList(record[i]); } getLog().debug("OK"); getLog().debug(++test + "- " + "Getting them back.."); Collection collection = allTypes.getObjectList(); boolean ok = true; for (int i = 0; i < 3; i++) { ok = ok && collection.contains(record[i]); } if (ok) { getLog().debug("OK"); } else { getLog().debug("failed"); throw new Exception("abort"); } getLog().debug("All basic tests passed; Now testing min/max values."); getLog().debug("This is just for information, it's okay if some fail."); getLog().debug("Not all DBs have a column type that supports 8-byte numbers."); // NOTE: In order from most likely to fail to least likely to fail // Oracle in particular demonstrates cascading failures and // we don't want to miss that // Double try { allTypes.setDouble(Double.MIN_VALUE); double d; if ((d = allTypes.getDouble()) == Double.MIN_VALUE) { getLog().debug(++test + "- Double Min Value OK"); } else { getLog().debug(++test + "- Double Min Value Different (" + d + " <> " + Double.MIN_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Double Min Value Failed"); } try { allTypes.setDouble(Double.MAX_VALUE); double d; if ((d = allTypes.getDouble()) == Double.MAX_VALUE) { getLog().debug(++test + "- Double Max Value OK"); } else { getLog().debug(++test + "- Double Max Value Different (" + d + " <> " + Double.MAX_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Double Max Value Failed"); } // Float try { allTypes.setFloat(Float.MIN_VALUE); float f; if ((f = allTypes.getFloat()) == Float.MIN_VALUE) { getLog().debug(++test + "- Float Min Value OK"); } else { getLog().debug(++test + "- Float Min Value Different (" + f + " <> " + Float.MIN_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Float Min Value Failed"); } try { allTypes.setFloat(Float.MAX_VALUE); float f; if ((f = allTypes.getFloat()) == Float.MAX_VALUE) { getLog().debug(++test + "- Float Max Value OK"); } else { getLog().debug(++test + "- Float Max Value Different (" + f + " <> " + Float.MAX_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Float Max Value Failed"); } // Long try { allTypes.setLong(Long.MIN_VALUE); long l; if ((l = allTypes.getLong()) == Long.MIN_VALUE) { getLog().debug(++test + "- Long Min Value OK"); } else { getLog().debug(++test + "- Long Min Value Different (" + l + " <> " + Long.MIN_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Long Min Value Failed"); } try { allTypes.setLong(Long.MAX_VALUE); long l; if ((l = allTypes.getLong()) == Long.MAX_VALUE) { getLog().debug(++test + "- Long Max Value OK"); } else { getLog().debug(++test + "- Long Max Value Different (" + l + " <> " + Long.MAX_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Long Max Value Failed"); } // Short try { allTypes.setShort(Short.MIN_VALUE); short s; if ((s = allTypes.getShort()) == Short.MIN_VALUE) { getLog().debug(++test + "- Short Min Value OK"); } else { getLog().debug(++test + "- Short Min Value Different (" + s + " <> " + Short.MIN_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Short Min Value Failed"); } try { allTypes.setShort(Short.MAX_VALUE); short s; if ((s = allTypes.getShort()) == Short.MAX_VALUE) { getLog().debug(++test + "- Short Max Value OK"); } else { getLog().debug(++test + "- Short Max Value Different (" + s + " <> " + Short.MAX_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Short Max Value Failed"); } // Byte try { allTypes.setByte(Byte.MIN_VALUE); byte b; if ((b = allTypes.getByte()) == Byte.MIN_VALUE) { getLog().debug(++test + "- Byte Min Value OK"); } else { getLog().debug(++test + "- Byte Min Value Different (" + b + " <> " + Byte.MIN_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Byte Min Value Failed"); } try { allTypes.setByte(Byte.MAX_VALUE); byte b; if ((b = allTypes.getByte()) == Byte.MAX_VALUE) { getLog().debug(++test + "- Byte Max Value OK"); } else { getLog().debug(++test + "- Byte Max Value Different (" + b + " <> " + Byte.MAX_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Byte Max Value Failed"); } // Int try { allTypes.setInt(Integer.MIN_VALUE); int i; if ((i = allTypes.getInt()) == Integer.MIN_VALUE) { getLog().debug(++test + "- Int Min Value OK"); } else { getLog().debug(++test + "- Int Min Value Different (" + i + " <> " + Integer.MIN_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Int Min Value Failed"); } try { allTypes.setInt(Integer.MAX_VALUE); int i; if ((i = allTypes.getInt()) == Integer.MAX_VALUE) { getLog().debug(++test + "- Int Max Value OK"); } else { getLog().debug(++test + "- Int Max Value Different (" + i + " <> " + Integer.MAX_VALUE + ")"); } } catch (Exception e) { getLog().debug(++test + "- Int Max Value Failed"); } } public static Test suite() throws Exception { return getDeploySetup(DbTypesUnitTestCase.class, "dbtest.jar"); } }