Re: Test that fail randomly with wounit
Re: Test that fail randomly with wounit
- Subject: Re: Test that fail randomly with wounit
- From: Chuck Hill <email@hidden>
- Date: Tue, 18 Jun 2013 15:10:32 -0700
Hi Samuel,
JUnit can/will run tests in a different order each time. So if your tests depend on something else having happened (EOF getting fully initialized, some other test running first) you will see random failures like this. I think it an/will run tests in multiple threads too (I use both JUnit and TestNG and sometimes mix up their features :-) so concurrency can also cause problems like this.
On 2013-06-18, at 2:13 PM, Samuel Pelletier wrote:
> Hi,
>
> I have a test that succeed sometime and fail other times. If I run the jUnit source that contain this test, it fail sometime in the loadPermission() method. I have no idea where to look at. It is even more strange that sometime, I can have 6 successful tests and after 4 failed in a row.
>
> These test are inside a framework project. When I run the tests, I have these lines on the console but they do not seems to cause problem with the about 100 others tests in the project.
>
> - The EOModel 'erprototypes' has an empty connection dictionary.
> - The EOModel 'erprototypes' has an empty connection dictionary.
Those are likely to be OK.
> - The EOModel 'KAAccessControl' has an empty connection dictionary.
> - The EOModel 'KAAccessControl' has an empty connection dictionary.
I am guessing you need that model for the permissions testing. This is likely a problem.
> - The model 'KAAccessControl' (path: file:/Users/sam/work/KavijuWO/KAAccessControl/Resources/KAAccessControl.eomodeld) cannot be added to model group <EOModelGroup (("KAAccessControl", "file:/Users/sam/work/KavijuWO/KAAccessControl/Resources/KAAccessControl.eomodeld"), ("erprototypes", "file:/Users/sam/work/WonderSource/Frameworks/Core/ERPrototypes/Resources/erprototypes.eomodeld"))> because it already contains a model with that name.
>
> Any idea?
Do you have multiple EOF stacks (multiple EOObjectStoreCoordinators)? You could be using default* methods that only work with the default stack. Is there a stack trace for that last one to show where duplication model loading is having?
>
> Samuel
>
> RolesFileLoader load a plist file to create and update objects in the database.
>
> Here is a my test source with a single test:
>
> @Rule public MockEditingContext ec = new MockEditingContext();
>
> @Before
> public void loadPermissions() {
> ERXProperties.setStringForKey("SampleRolesFile", RolesFileLoader.rolesFileNamePropertyKey);
> RolesFileLoader.loadRolesFile(ec);
> }
>
> @Test
> public void testReloadPermissions() {
> ERXProperties.setStringForKey("SampleRolesFile", RolesFileLoader.rolesFileNamePropertyKey);
> RolesFileLoader.loadRolesFile(ec);
> }
>
> The error stack:
>
> com.webobjects.foundation.NSForwardException [java.lang.reflect.InvocationTargetException] null:java.lang.reflect.InvocationTargetException
> …
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> at com.webobjects.foundation._NSUtilities.instantiateObjectWithConstructor(_NSUtilities.java:659)
> ... 32 more
> Caused by: java.lang.NullPointerException
> at com.webobjects.eoaccess.EOModel.createPrototypeCache(EOModel.java:631)
I think that means a model is being used that is not yet in an EOModelGroup.
Chuck
> at com.webobjects.eoaccess.EOModel.prototypeAttributeNamed(EOModel.java:699)
> at com.webobjects.eoaccess.ERXModel.prototypeAttributeNamed(ERXModel.java:290)
> at com.webobjects.eoaccess.EOAttribute.<init>(EOAttribute.java:998)
> at com.webobjects.eoaccess.EOEntity.attributes(EOEntity.java:816)
> at com.webobjects.eoaccess.EOEntity.attributeNamed(EOEntity.java:789)
> at com.webobjects.eoaccess.EOEntity.classProperties(EOEntity.java:1098)
> at com.webobjects.eoaccess.EOEntity._propertyDictionaryInitializer(EOEntity.java:3321)
> at com.webobjects.eoaccess.EOEntity._newDictionaryForProperties(EOEntity.java:3667)
> at com.webobjects.eoaccess.EOEntityClassDescription._newDictionaryForProperties(EOEntityClassDescription.java:88)
> at com.webobjects.eocontrol.EOGenericRecord.__setClassDescription(EOGenericRecord.java:111)
> at com.webobjects.eocontrol.EOGenericRecord.__setClassDescription(EOGenericRecord.java:100)
> at com.webobjects.eocontrol.EOGenericRecord.<init>(EOGenericRecord.java:73)
> at er.extensions.eof.ERXGenericRecord.<init>(ERXGenericRecord.java:106)
> at com.kaviju.accesscontrol.model.base._KAAccessList.<init>(_KAAccessList.java:15)
> at com.kaviju.accesscontrol.model.KAAccessList.<init>(KAAccessList.java:8)
> ... 37 more
--
Chuck Hill
Executive Managing Partner, VP Development and Technical Services
Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/gvc/practical_webobjects
Global Village Consulting ranks 13th in 2012 in BIV's Top 100 Fastest Growing Companies in B.C!
Global Village Consulting ranks 44th in 25th annual PROFIT 500 ranking of Canada’s Fastest-Growing Companies by PROFIT Magazine!
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden