You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by jmfj <j...@j3m.org> on 2008/06/16 18:07:54 UTC

Unit Test - Non-Deterministic Results

The results of this unit test are not the same everytime - it should (right?)
- 

** FIRST RUN (maven)
-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 20.743 sec
<<< FAILURE!

testExceptionHandlerOne(net.quantlet.box.mediation.CamelTest)  Time elapsed:
20.079 sec  <<< FAILURE!
java.lang.AssertionError: mock:null-pointer Received message count.
Expected: <1> but was: <0>
	at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
	at
org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
	at
net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)

TestExceptionHandlerOne was successful

** SECOND RUN (eclipse)

java.lang.AssertionError: mock:null-pointer Received message count.
Expected: <1> but was: <0>
	at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
	at
org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
	at
net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
	at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
	at org.testng.TestRunner.runWorkers(TestRunner.java:712)
	at org.testng.TestRunner.privateRun(TestRunner.java:582)
	at org.testng.TestRunner.run(TestRunner.java:477)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
	at org.testng.SuiteRunner.run(SuiteRunner.java:198)
	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
	at org.testng.TestNG.run(TestNG.java:708)
	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)

TestExceptionHandlerOne was successful

** THIRD RUN (eclipse again)

java.lang.AssertionError: mock:null-pointer Received message count.
Expected: <1> but was: <0>
	at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
	at
org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
	at
net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
	at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
	at org.testng.TestRunner.runWorkers(TestRunner.java:712)
	at org.testng.TestRunner.privateRun(TestRunner.java:582)
	at org.testng.TestRunner.run(TestRunner.java:477)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
	at org.testng.SuiteRunner.run(SuiteRunner.java:198)
	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
	at org.testng.TestNG.run(TestNG.java:708)
	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)

and

java.lang.AssertionError: mock:null-pointer Received message count.
Expected: <1> but was: <0>
	at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
	at
org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
	at
org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
	at
net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
	at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
	at org.testng.TestRunner.runWorkers(TestRunner.java:712)
	at org.testng.TestRunner.privateRun(TestRunner.java:582)
	at org.testng.TestRunner.run(TestRunner.java:477)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
	at org.testng.SuiteRunner.run(SuiteRunner.java:198)
	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
	at org.testng.TestNG.run(TestNG.java:708)
	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)

I might be missing something (hope not) - anyways, here is the entire unit
test (TestNG) for your enjoyment...

  http://www.nabble.com/file/p17867803/CamelTest.java CamelTest.java 


-- 
View this message in context: http://www.nabble.com/Unit-Test---Non-Deterministic-Results-tp17867803s22882p17867803.html
Sent from the Camel - Development mailing list archive at Nabble.com.


Re: Unit Test - Non-Deterministic Results

Posted by James Strachan <ja...@gmail.com>.
2008/6/16 jmfj <j...@j3m.org>:
>
> Yes, this was an issue and is now solved - here is the new code:
>
> http://www.nabble.com/file/p17870603/CamelTest.java CamelTest.java

Ah great!

> When using the multi threaded feature of TestNG (pom.xml)
>
> (...)
>                        <plugin>
>                                <groupId>org.apache.maven.plugins</groupId>
>
> <artifactId>maven-surefire-plugin</artifactId>
>                                <configuration>
>                                        <groups>unit,performance</groups>
>                                        <parallel>methods</parallel>
>                                        <threadCount>1</threadCount>
>                                </configuration>
>                        </plugin>
> (...)
>
> If <threadCount/> is greater than 1 (multiple threads one per each test
> method, executing in parallel) the test again fails occasionally.. The only
> shared component across those two methods are Camel classes.

Hmm - so the instance variables in those test methods should be
different for each thread right?

This is really strange - sounds like we've some static instance
variables around the place then right? I've looked at the
DefaultCamelContext and the SedaEndpoint and don't see any statics.


> Apologies if I am posting in the wrong group...

No this is the right group! :). Please keep these issues coming, it
could well be you've found some gremlin in the code!

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Re: Unit Test - Non-Deterministic Results

Posted by jmfj <j...@j3m.org>.
Yes, this was an issue and is now solved - here is the new code:

http://www.nabble.com/file/p17870603/CamelTest.java CamelTest.java 

When using the multi threaded feature of TestNG (pom.xml)

(...) 
                        <plugin> 
                                <groupId>org.apache.maven.plugins</groupId> 
                               
<artifactId>maven-surefire-plugin</artifactId> 
                                <configuration> 
                                        <groups>unit,performance</groups> 
                                        <parallel>methods</parallel> 
                                        <threadCount>1</threadCount> 
                                </configuration> 
                        </plugin> 
(...) 

If <threadCount/> is greater than 1 (multiple threads one per each test
method, executing in parallel) the test again fails occasionally.. The only
shared component across those two methods are Camel classes.

Apologies if I am posting in the wrong group...


 

James.Strachan wrote:
> 
> 2008/6/16 jmfj <j...@j3m.org>:
>>
>> Yes, dead on -- worked for single threaded tests - however, should
>> testOne()
>> and testTwo() affect each other if executed on separate threads?
> 
> Sorry I mean is the bug in the test case - namely ExceptionThrower not
> being thread safe?
> 
> -- 
> James
> -------
> http://macstrac.blogspot.com/
> 
> Open Source Integration
> http://open.iona.com
> 
> 

-- 
View this message in context: http://www.nabble.com/Unit-Test---Non-Deterministic-Results-tp17867803s22882p17870603.html
Sent from the Camel - Development mailing list archive at Nabble.com.


Re: Unit Test - Non-Deterministic Results

Posted by James Strachan <ja...@gmail.com>.
2008/6/16 jmfj <j...@j3m.org>:
>
> Yes, dead on -- worked for single threaded tests - however, should testOne()
> and testTwo() affect each other if executed on separate threads?

Sorry I mean is the bug in the test case - namely ExceptionThrower not
being thread safe?

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Re: Unit Test - Non-Deterministic Results

Posted by jmfj <j...@j3m.org>.
Yes, dead on -- worked for single threaded tests - however, should testOne()
and testTwo() affect each other if executed on separate threads?

I.e., in this configuration in my pom.xml

(...)
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<groups>unit,performance</groups>
					<parallel>methods</parallel>
					<threadCount>1</threadCount>
				</configuration>
			</plugin>
(...)

succeeds -- for threadCount > 1 however, fails.. 

Let me know if that is the intended behavior (thread-safety of CamelContext
/ or endpoints), a limitation or this is an uncovered bug.

Thanks !





James.Strachan wrote:
> 
> 2008/6/16 James Strachan <ja...@gmail.com>:
>> I wonder if using an AtomicInteger inside your ExceptionThrower might
>> help?
> 
> BTW I mean change the type of 'i' from int to AtomicInteger then
> change the code to something like this...
> 
> 				switch (i.incrementAndGet()) {
> 				case 1:
> 					System.out.println("throwing null");
> 					throw new NullPointerException();
> 				case 2:
> 					System.out.println("throwing exception");
> 					throw new Exception();
> 				default:
> 					System.out.println("throwing nothing");
> 					; // nop
> 				}
> 
> 
> 
>>
>> 2008/6/16 jmfj <j...@j3m.org>:
>>>
>>> The results of this unit test are not the same everytime - it should
>>> (right?)
>>> -
>>>
>>> ** FIRST RUN (maven)
>>> -------------------------------------------------------------------------------
>>> Test set: TestSuite
>>> -------------------------------------------------------------------------------
>>> Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 20.743
>>> sec
>>> <<< FAILURE!
>>>
>>> testExceptionHandlerOne(net.quantlet.box.mediation.CamelTest)  Time
>>> elapsed:
>>> 20.079 sec  <<< FAILURE!
>>> java.lang.AssertionError: mock:null-pointer Received message count.
>>> Expected: <1> but was: <0>
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>>        at
>>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)
>>>
>>> TestExceptionHandlerOne was successful
>>>
>>> ** SECOND RUN (eclipse)
>>>
>>> java.lang.AssertionError: mock:null-pointer Received message count.
>>> Expected: <1> but was: <0>
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>>        at
>>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:585)
>>>        at
>>> org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>>>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>>>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>>>        at
>>> org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>>>        at
>>> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>>>        at
>>> org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>>>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>>>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>>>        at org.testng.TestRunner.run(TestRunner.java:477)
>>>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>>>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>>>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>>>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>>>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>>>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>>>        at org.testng.TestNG.run(TestNG.java:708)
>>>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>>>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>>>
>>> TestExceptionHandlerOne was successful
>>>
>>> ** THIRD RUN (eclipse again)
>>>
>>> java.lang.AssertionError: mock:null-pointer Received message count.
>>> Expected: <1> but was: <0>
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>>        at
>>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:585)
>>>        at
>>> org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>>>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>>>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>>>        at
>>> org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>>>        at
>>> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>>>        at
>>> org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>>>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>>>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>>>        at org.testng.TestRunner.run(TestRunner.java:477)
>>>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>>>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>>>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>>>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>>>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>>>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>>>        at org.testng.TestNG.run(TestNG.java:708)
>>>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>>>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>>>
>>> and
>>>
>>> java.lang.AssertionError: mock:null-pointer Received message count.
>>> Expected: <1> but was: <0>
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>>        at
>>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>>        at
>>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:585)
>>>        at
>>> org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>>>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>>>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>>>        at
>>> org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>>>        at
>>> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>>>        at
>>> org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>>>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>>>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>>>        at org.testng.TestRunner.run(TestRunner.java:477)
>>>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>>>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>>>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>>>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>>>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>>>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>>>        at org.testng.TestNG.run(TestNG.java:708)
>>>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>>>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>>>
>>> I might be missing something (hope not) - anyways, here is the entire
>>> unit
>>> test (TestNG) for your enjoyment...
>>>
>>>  http://www.nabble.com/file/p17867803/CamelTest.java CamelTest.java
>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Unit-Test---Non-Deterministic-Results-tp17867803s22882p17867803.html
>>> Sent from the Camel - Development mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> James
>> -------
>> http://macstrac.blogspot.com/
>>
>> Open Source Integration
>> http://open.iona.com
>>
> 
> 
> 
> -- 
> James
> -------
> http://macstrac.blogspot.com/
> 
> Open Source Integration
> http://open.iona.com
> 
> 

-- 
View this message in context: http://www.nabble.com/Unit-Test---Non-Deterministic-Results-tp17867803s22882p17870129.html
Sent from the Camel - Development mailing list archive at Nabble.com.


Re: Unit Test - Non-Deterministic Results

Posted by James Strachan <ja...@gmail.com>.
2008/6/16 James Strachan <ja...@gmail.com>:
> I wonder if using an AtomicInteger inside your ExceptionThrower might help?

BTW I mean change the type of 'i' from int to AtomicInteger then
change the code to something like this...

				switch (i.incrementAndGet()) {
				case 1:
					System.out.println("throwing null");
					throw new NullPointerException();
				case 2:
					System.out.println("throwing exception");
					throw new Exception();
				default:
					System.out.println("throwing nothing");
					; // nop
				}



>
> 2008/6/16 jmfj <j...@j3m.org>:
>>
>> The results of this unit test are not the same everytime - it should (right?)
>> -
>>
>> ** FIRST RUN (maven)
>> -------------------------------------------------------------------------------
>> Test set: TestSuite
>> -------------------------------------------------------------------------------
>> Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 20.743 sec
>> <<< FAILURE!
>>
>> testExceptionHandlerOne(net.quantlet.box.mediation.CamelTest)  Time elapsed:
>> 20.079 sec  <<< FAILURE!
>> java.lang.AssertionError: mock:null-pointer Received message count.
>> Expected: <1> but was: <0>
>>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>        at
>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)
>>
>> TestExceptionHandlerOne was successful
>>
>> ** SECOND RUN (eclipse)
>>
>> java.lang.AssertionError: mock:null-pointer Received message count.
>> Expected: <1> but was: <0>
>>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>        at
>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:585)
>>        at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>>        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>>        at
>> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>>        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>>        at org.testng.TestRunner.run(TestRunner.java:477)
>>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>>        at org.testng.TestNG.run(TestNG.java:708)
>>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>>
>> TestExceptionHandlerOne was successful
>>
>> ** THIRD RUN (eclipse again)
>>
>> java.lang.AssertionError: mock:null-pointer Received message count.
>> Expected: <1> but was: <0>
>>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>        at
>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:585)
>>        at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>>        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>>        at
>> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>>        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>>        at org.testng.TestRunner.run(TestRunner.java:477)
>>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>>        at org.testng.TestNG.run(TestNG.java:708)
>>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>>
>> and
>>
>> java.lang.AssertionError: mock:null-pointer Received message count.
>> Expected: <1> but was: <0>
>>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>>        at
>> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>>        at
>> net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:585)
>>        at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>>        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>>        at
>> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>>        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>>        at org.testng.TestRunner.run(TestRunner.java:477)
>>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>>        at org.testng.TestNG.run(TestNG.java:708)
>>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>>
>> I might be missing something (hope not) - anyways, here is the entire unit
>> test (TestNG) for your enjoyment...
>>
>>  http://www.nabble.com/file/p17867803/CamelTest.java CamelTest.java
>>
>>
>> --
>> View this message in context: http://www.nabble.com/Unit-Test---Non-Deterministic-Results-tp17867803s22882p17867803.html
>> Sent from the Camel - Development mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> James
> -------
> http://macstrac.blogspot.com/
>
> Open Source Integration
> http://open.iona.com
>



-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Re: Unit Test - Non-Deterministic Results

Posted by James Strachan <ja...@gmail.com>.
I wonder if using an AtomicInteger inside your ExceptionThrower might help?

2008/6/16 jmfj <j...@j3m.org>:
>
> The results of this unit test are not the same everytime - it should (right?)
> -
>
> ** FIRST RUN (maven)
> -------------------------------------------------------------------------------
> Test set: TestSuite
> -------------------------------------------------------------------------------
> Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 20.743 sec
> <<< FAILURE!
>
> testExceptionHandlerOne(net.quantlet.box.mediation.CamelTest)  Time elapsed:
> 20.079 sec  <<< FAILURE!
> java.lang.AssertionError: mock:null-pointer Received message count.
> Expected: <1> but was: <0>
>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>        at
> net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)
>
> TestExceptionHandlerOne was successful
>
> ** SECOND RUN (eclipse)
>
> java.lang.AssertionError: mock:null-pointer Received message count.
> Expected: <1> but was: <0>
>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>        at
> net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>        at
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>        at org.testng.TestRunner.run(TestRunner.java:477)
>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>        at org.testng.TestNG.run(TestNG.java:708)
>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>
> TestExceptionHandlerOne was successful
>
> ** THIRD RUN (eclipse again)
>
> java.lang.AssertionError: mock:null-pointer Received message count.
> Expected: <1> but was: <0>
>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>        at
> net.quantlet.box.mediation.CamelTest.testExceptionHandlerTwo(CamelTest.java:123)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>        at
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>        at org.testng.TestRunner.run(TestRunner.java:477)
>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>        at org.testng.TestNG.run(TestNG.java:708)
>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>
> and
>
> java.lang.AssertionError: mock:null-pointer Received message count.
> Expected: <1> but was: <0>
>        at org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:658)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:640)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:217)
>        at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:193)
>        at
> net.quantlet.box.mediation.CamelTest.testExceptionHandlerOne(CamelTest.java:82)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
>        at org.testng.internal.Invoker.invokeMethod(Invoker.java:478)
>        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617)
>        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885)
>        at
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
>        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
>        at org.testng.TestRunner.runWorkers(TestRunner.java:712)
>        at org.testng.TestRunner.privateRun(TestRunner.java:582)
>        at org.testng.TestRunner.run(TestRunner.java:477)
>        at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
>        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
>        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
>        at org.testng.SuiteRunner.run(SuiteRunner.java:198)
>        at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
>        at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
>        at org.testng.TestNG.run(TestNG.java:708)
>        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
>
> I might be missing something (hope not) - anyways, here is the entire unit
> test (TestNG) for your enjoyment...
>
>  http://www.nabble.com/file/p17867803/CamelTest.java CamelTest.java
>
>
> --
> View this message in context: http://www.nabble.com/Unit-Test---Non-Deterministic-Results-tp17867803s22882p17867803.html
> Sent from the Camel - Development mailing list archive at Nabble.com.
>
>



-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com