Re: Test that fail randomly with wounit
Re: Test that fail randomly with wounit
- Subject: Re: Test that fail randomly with wounit
- From: Pascal Robert <email@hidden>
- Date: Tue, 18 Jun 2013 20:54:10 -0400
Le 2013-06-18 à 20:41, Samuel Pelletier <email@hidden> a écrit :
> Hi Chuck,
>
> I think your last comment was correct:
>
>>> I think that means a model is being used that is not yet in an EOModelGroup.
>
> I added the model name to the new MockEditingContext() call and no more fail to date when I run only this test class. If I run the complete project tests, I still have intermittent fail at the same place even after adding the model name to all the MockEditingContext constructors. I hate intermittent problems!
>
> Maybe Henrique Prange understand the situation. If the model name is mandatory to ensure it's loading before the test run, I suggest to enforce at least one name in the constructor of the MockEditingContext.
And lucky you, he will be at WOWODC :-)
> Samuel
>
>
> Le 2013-06-18 à 18:10, Chuck Hill <email@hidden> a écrit :
>
>> 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
_______________________________________________
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