Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-dev] rewriting updateall queries clean-up code in tests

Hi Andrei, Tom,

Thanks to both of you for looking at my patch. Much appreciated!

In general, I agree with Andrei that we shouldn't stop testing table
sequences with the name SEQUENCE for all platforms - it has been our
default for a long time so most users will have it. The issue here will
be making changes that fit into our test framework.

In talking with Andrei, I think a better solution may be to implement a
customizer that loops through the sequences in a project and changes any
table sequence with the name "SEQUENCE" to something else. That
customizer could be enabled with a System property when running the
tests on Symfoware.

One issue with what I've done currently is that as soon as someone adds a new test with for example a <generated-value/> tag it will fail again on Symfoware until I give it another table name explicitly. It sounds like your solution is more practical.

Do you have a sample customizer I can look at and the way to register it at the start of the tests? Or are you looking at writing one for me? (not sure how much work is involved)

That said, in a number of cases where I made changes the table generator was defined but because of a typo in the @GeneratedValue's values it wasn't matched to it so the default generator was used instead. It should be okay to fix them to let such tests run the way they were originally intended, shouldn't it?

2. UpdateAll/DeleteAll
I also noticed such queries in some other tests and wasn't sure
whether/how to fix them. What do you think?


The tests here don't seem to use UpdateAll/DeleteAll queries but the
clear method does. It uses UnitOfWork instead of EntityManager. Where
can I find the UnitOfWork API equivalent to doing a find and removing
each object in the resultset?

I am a hesitant to change this test for all platforms, but you could add
an isSymfoware() check and then do some alternate clean up. Which
queries fail? (I assume just the ones that deal with Employee)

Yes, you are correct, just the UpdateAllQuery and DeleteAllQuery with Employee.
With the alternate clean up all tests in these suites now pass. Thanks!

- testTwoUnrelatedResultWithOneToManyJoins
- testMultipleUnrelatedResultWithOneToManyJoins
- testTwoUnrelatedResultWithOneToOneJoins
- testTwoUnrelatedResultWithOneToOneJoinsWithExtraItem

The clear should be able to be fixed in much the same way as above.

I agree those test should be excluded for symfoware.


The patch also includes a number of other issues I addressed. Could you
review them?

When we have come up with a good solution for the issue with SEQUENCE,
I'll go through the whole patch and either integrate it (with any small
changes needed) or provide feedback about bigger changes.

The customizer solution sounds good to me. The one Andrei suggested should work too, I suppose. With either I need a few more details to get me on my way. For the customizer I listed my questions above. For Andrei's way, where do I define these sequence generators? How can I enable/disable them with the isSymfoware flag (or system property)? I tried adding them using annotations to one of the entity classes, which I believe worked, but that works only for the persistence context that loads that class.


Back to the top