One more comments.
I think we should not ignore table creation failure by model table creators,
some setUp() codes are now ignoring it. Then, it hides table creation
errors, so it is hard to debug.
The newly checked-in below test suite is now ignoring table creator
exception, if you remove try-catch block, you can see more clear exception
(like CREATE TABLE error due to the failure of DROP TABLE).
public class EntityManagerJUnitTestCase extends JUnitTestCase {
...
public static Test suite() {
...
return new TestSetup(suite) {
protected void setUp(){
DatabaseSession session = JUnitTestCase.getServerSession();
try{
new InheritanceTableCreator().replaceTables(session);
} catch (DatabaseException exception){
}
}
Some tests are coded like this. I think it's a good idea to remove all those
try-catch blocks to avoid possible strange test failures.
Thanks
- Wonseok
On 10/27/06, Wonseok Kim <guruwons_at_gmail.com> wrote:
>
> Marina,
> I think, there is some misunderstanding.
>
> Tests don't need run on clean database always, but need to clean once with
> this modifications.
> This is because previously generated foreign key constraints by ddl
> generation can block drop some tables.
>
> Foreign key constraints generated by ddl generation were different from
> the ones by model table creators.
> Model table creators drop and create table/constraints always before
> tests, so you don't need to clean database, but in your case, I guess,
> dropping table by model table creators probably failed due to some existing
> foreign key constraints. You can check it by logging level FINEST.
>
> Thanks
> - Wonseok
>
> On 10/27/06, Marina Vatkina <Marina.Vatkina_at_sun.com> wrote:
> >
> > I ran on the existing database, but did a clean build. If the tests
> > need a clean database, they must either remove all used tables at
> > the end, or clean up all the tables at the beginning, right? I don't
> > think that manual cleanup should be a pre-requisite for the run.
> >
> > I'm really not comfortable checking in the changes without an ability
> > to have a clean run. Tom, do you have an idea?
> >
> > thanks,
> > -marina
> >
> > Wonseok Kim wrote:
> > > Did you run tests on clean database?
> > > I've run tests several times, but there was no failure.
> > >
> > > I don't know what cause the situation, but DDL generation is disabled,
> > > so it will not remove existing tables at deploy time (Instead, each
> > > model table creator will recreate table before running tests).
> > >
> > > - Wonseok
> > >
> > > On 10/27/06, *Marina Vatkina* <Marina.Vatkina_at_sun.com
> > > <mailto: Marina.Vatkina_at_sun.com>> wrote:
> > >
> > > Wonseok, Markus,
> > >
> > > I'm not sure whose changes affect this, but I got very strange
> > runs with
> > > applying Wonseok's changes on top of the latest code base. Yes, I
> > did
> > > run 'maven -o clean build' in both, the sources and the tests.
> > >
> > > The 1st run didn't even report the number of failures, though
> > there was
> > > actually only 1 error - see [1].
> > >
> > > The second run reported it correctly, but nothing about releasing
> > > the client
> > > (was it wrong before?) - see [2].
> > >
> > > The error is the same in both cases ([3]).
> > >
> > > thanks,
> > > -marina
> > >
> > > [1]
> > > [junit] BeerListener.POST_PERSIST_COUNT=4
> > > [junit] [TopLink Finer]: 2006.10.26
> > > 07:00:49.707--ServerSession(13446707)--Thread(Thread[main,5,main])--initialize
> >
> > >
> > > all identitymaps
> > > [junit] Tests run: 552, Failures: 0, Errors: 1, Time elapsed:
> > > 224.887 sec
> > > [junit] [TopLink Finer]: 2006.10.26
> > > 07:00:49.727--ClientSession(28181611)--Thread(Thread[Finalizer,8,system])--client
> > >
> > > released
> > > [junit] [TopLink Finer]: 2006.10.26
> > > 07:00:49.728--ClientSession(13428375)--Thread(Thread[Finalizer,8,system])--client
> >
> > > released
> > > [junit] Test
> > > oracle.toplink.essentials.testing.tests.FullRegressionTestSuiteFAILED
> > >
> > >
> > > [2]
> > > [junit] BeerListener.POST_PERSIST_COUNT=4
> > > [junit] [TopLink Finer]: 2006.10.26
> > > 07:15:49.582--ServerSession
> > (13446707)--Thread(Thread[main,5,main])--initialize
> > > all identitymaps
> > > [junit] Tests run: 552, Failures: 0, Errors: 1, Time elapsed:
> >
> > > 271.225 sec
> > > [junit] Test
> > > oracle.toplink.essentials.testing.tests.FullRegressionTestSuiteFAILED
> > >
> > >
> > > [3]
> > > Testcase: testJoinedInheritance took 0.02 sec
> > > Caused an ERROR
> > > More than one result was returned from Query.getSingleResult()
> > > javax.persistence.NonUniqueResultException: More than one result
> > was
> > > returned
> > > from Query.getSingleResult(
> > > )
> > > at
> > >
> > oracle.toplink.essentials.internal.ejb.cmp3.EJBQueryImpl.throwNonUniqueResultException
> > (EJBQuer
> > > yImpl.java:227)
> > > at
> > >
> > oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.getSingleResult
> > > (EJBQueryImpl.jav
> > > a:477)
> > > at
> > >
> > oracle.toplink.essentials.testing.tests.ejb.ejbqltesting.JUnitEJBQLInheritanceTestSuite.testJo
> > > inedInheritance(JUnitEJBQLInheritanceTestSuite.java:267)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native
> > Method)
> > > at
> > > sun.reflect.NativeMethodAccessorImpl.invoke (
> > NativeMethodAccessorImpl.java:39)
> > > at
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > DelegatingMethodAccessorImpl.java:25)
> > > at
> > > junit.extensions.TestDecorator.basicRun (TestDecorator.java:22)
> > > at junit.extensions.TestSetup$1.protect(TestSetup.java
> > :19)
> > > at junit.extensions.TestSetup.run(TestSetup.java:23)
> > >
> > >
> > > Wonseok Kim wrote:
> > > > Hi Marina,
> > > > Oops, it is my mistake, those two files are nothing to do with
> > this,
> > > > please ignore them.
> > > > Diff file has required changes only, please use it.
> > > >
> > > > Thanks,
> > > > - Wonseok
> > > >
> > > > On 10/27/06, *Marina Vatkina* <Marina.Vatkina_at_sun.com
> > > <mailto: Marina.Vatkina_at_sun.com>
> > > > <mailto:Marina.Vatkina_at_sun.com <mailto:Marina.Vatkina_at_sun.com
> > >>>
> > > wrote:
> > > >
> > > > Hi Wonseok,
> > > >
> > > > What are the changes in
> > > >
> > >
> > src/java/oracle/toplink/essentials/testing/models/cmp3/xml/relationships/unidirectional/EmployeePopulator.java
> >
> > > >
> > > > and
> > > >
> > >
> > src/java/oracle/toplink/essentials/testing/tests/ejb/ejbqltesting/JUnitEJBQLSimpleTestSuite.java
> > > >
> > > >
> > > > thanks,
> > > > -marina
> > > >
> > > > Wonseok Kim wrote:
> > > > > I found another bug in JUnitTestCase, please see below
> > diff.
> > > > > I added following modification to the attached file.
> > > > >
> > > > > Thanks,
> > > > > - Wonseok
> > > > >
> > > > > Index:
> > > > >
> > > >
> > >
> > src/java/oracle/toplink/essentials/testing/framework/junit/JUnitTestCase.java
> >
> > >
> > > > >
> > > > >
> > >
> > ===================================================================
> > > > > RCS file:
> > > > >
> > > >
> > >
> > /cvs/glassfish/entity-persistence-tests/src/java/oracle/toplink/essentials/testing/framework/junit/JUnitTestCase.java,v
> > >
> > > >
> > > > > retrieving revision 1.20
> > > > > diff -c - r1.20 JUnitTestCase.java
> > > > > ***
> > > > >
> > > >
> > >
> > src/java/oracle/toplink/essentials/testing/framework/junit/JUnitTestCase.java
> > >
> > > > > 19 Oct 2006 19:52:27 -0000 1.20
> > > > > ---
> > > > >
> > > >
> > >
> > src/java/oracle/toplink/essentials/testing/framework/junit/JUnitTestCase.java
> > > > > 26 Oct 2006 15:23:09 -0000
> > > > > ***************
> > > > > *** 144,150 ****
> > > > > }
> > > > >
> > > > > public static EntityManagerFactory
> > > > getEntityManagerFactory(String
> > > > > persistenceUnitName, Map properties){
> > > > > ! EntityManagerFactory emfNamedPersistenceUnit =
> > > > >
> > > >
> > >
> > (EntityManagerFactory)emfNamedPersistenceUnits.get("persistenceUnitName");
> > > > > if (emfNamedPersistenceUnit == null){
> > > > > emfNamedPersistenceUnit =
> > > > > Persistence.createEntityManagerFactory
> > (persistenceUnitName,
> > > > properties);
> > > > > emfNamedPersistenceUnits.put
> > > (persistenceUnitName,
> > > > > emfNamedPersistenceUnit);
> > > > > --- 144,150 ----
> > > > > }
> > > > >
> > > > > public static EntityManagerFactory
> > > > getEntityManagerFactory(String
> > > > > persistenceUnitName, Map properties){
> > > > > ! EntityManagerFactory emfNamedPersistenceUnit =
> > > > >
> > > >
> > >
> > (EntityManagerFactory)emfNamedPersistenceUnits.get(persistenceUnitName);
> > >
> > > > > if (emfNamedPersistenceUnit == null){
> > > > > emfNamedPersistenceUnit =
> > > > > Persistence.createEntityManagerFactory(persistenceUnitName,
> > > > properties);
> > > > >
> > > emfNamedPersistenceUnits.put(persistenceUnitName,
> > > > > emfNamedPersistenceUnit);
> > > > > ***************
> > > > > *** 173,184 ****
> > > > > }
> > > > >
> > > > > public static void
> > > > > closeEntityManagerFactoryNamedPersistenceUnit(String
> > > > persistenceUnitName) {
> > > > > ! EntityManagerFactory emfNamedPersistenceUnit =
> > > > >
> > > >
> > >
> > (EntityManagerFactory)emfNamedPersistenceUnits.get("persistenceUnitName");
> > > >
> > > > > if(emfNamedPersistenceUnit != null) {
> > > > > if( emfNamedPersistenceUnit.isOpen()) {
> > > > > emfNamedPersistenceUnit.close();
> > > > > }
> > > > > ! emfNamedPersistenceUnit = null;
> > > > > }
> > > > > }
> > > > >
> > > > > --- 173,184 ----
> > > > > }
> > > > >
> > > > > public static void
> > > > > closeEntityManagerFactoryNamedPersistenceUnit(String
> > > > persistenceUnitName) {
> > > > > ! EntityManagerFactory emfNamedPersistenceUnit =
> > > > >
> > > >
> > >
> > (EntityManagerFactory)emfNamedPersistenceUnits.get(persistenceUnitName);
> > > > > if(emfNamedPersistenceUnit != null) {
> > > > > if(emfNamedPersistenceUnit.isOpen()) {
> > > > > emfNamedPersistenceUnit.close ();
> > > > > }
> > > > > ! emfNamedPersistenceUnits.remove
> > > (persistenceUnitName);
> > > > > }
> > > > > }
> > > > >
> > > > >
> > > > > On 10/26/06, *Wonseok Kim* < guruwons_at_gmail.com
> > > <mailto: guruwons_at_gmail.com>
> > > > <mailto:guruwons_at_gmail.com <mailto:guruwons_at_gmail.com>>
> > > > > <mailto: guruwons_at_gmail.com <mailto:guruwons_at_gmail.com>
> > > <mailto: guruwons_at_gmail.com <mailto: guruwons_at_gmail.com>>>> wrote:
> > > > >
> > > > > Hi Tom, Marina
> > > > > I filed an issue for this.
> > > > >
> > https://glassfish.dev.java.net/issues/show_bug.cgi?id=1380
> > > > >
> > > > > In addition to Tom's modification, I changed some
> > > other files
> > > > > regarding to the problems shown in my first email.
> > > > > * modified nullable column attributes of Buyer to
> > > follow the
> > > > > specified unique constraints.
> > > > > * modified some tests of EntityManagerJUnitTestSuite
> > > to show
> > > > > occurred exceptions if test failed.
> > > > > * added ddl file names to the persistence.xml of
> > > > > ddl-generation-testmodel - because default ddl files
> > are
> > > > overwritten
> > > > > by another pu's ddl generation.
> > > > >
> > > > > I confirmed that tests are running well on clean
> > database.
> > > > > Marina, could you check in this(attached) if there
> > is no
> > > > problem. I
> > > > > don't have check-in permission -.-;
> > > > >
> > > > > Thanks
> > > > > - Wonseok
> > > > >
> > > > >
> > > > > On 10/26/06, *Tom Ware* < tom.ware_at_oracle.com
> > > <mailto:tom.ware_at_oracle.com>
> > > > <mailto:tom.ware_at_oracle.com <mailto:tom.ware_at_oracle.com>>
> > > > > <mailto:tom.ware_at_oracle.com
> > > <mailto: tom.ware_at_oracle.com> <mailto:tom.ware_at_oracle.com
> > > <mailto:tom.ware_at_oracle.com>> >>
> > > > wrote:
> > > > >
> > > > > Hi Wonsoek,
> > > > >
> > > > > I fixed the problem by fixing two config files
> > > for the
> > > > tests. I
> > > > > tested with clean databases on both Derby and
> > > Oracle and
> > > > on an
> > > > > already
> > > > > populated Oracle database.
> > > > >
> > > > > 1. I have removed DDL Generation from the base
> > > persistence
> > > > > unit. We
> > > > > initially added it to try to solve some issues
> > we were
> > > > having with
> > > > > constraints. I think removing it should be fine
> > since
> > > > the DDL
> > > > > Generation is tested in a specific model and all
> >
> > > the other
> > > > > models are
> > > > > covered by TopLink table generation.
> > > > >
> > > > > 2. I have made a change to one xml file to
> > > workaround newly
> > > > > added issue
> > > > > 1376.
> > > > >
> > > > > I would like to check these files in, but will
> >
> > > need to
> > > > enter some
> > > > > appropriate enhancement requests prior to
> > removing DDL
> > > > > generation from
> > > > > the base persistence unit. I probably will not
> > get a
> > > > chance to
> > > > > do that
> > > > > until Monday. Feel free to check them in if it
> > > makes things
> > > > > easier for you.
> > > > >
> > > > > The changes are attached.
> > > > >
> > > > > -Tom
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
>
>