[jbossts-issues] [JBoss JIRA] (JBTM-1766) STM test failure with emma: Failed tests: testTransaction(org.jboss.stm.types.AtomicIntegerUnitTest): expected:<1> but was:<0>

Mark Little (JIRA) jira-events at lists.jboss.org
Mon Jun 10 11:25:55 EDT 2013


    [ https://issues.jboss.org/browse/JBTM-1766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12780585#comment-12780585 ] 

Mark Little commented on JBTM-1766:
-----------------------------------

Hi Tom. I have an example here that shows the last transaction is not being called, which is why the state remains at 1 instead of rolling back to 0. I'll illustrate the example here so you can reproduce if you want:

System.err.println("**transaction "+act);
        
act.begin();
        
ai.set(1);
        
assertEquals(ai.get(), 1);
        
System.err.println("**rolling back "+act);
System.err.println("**using "+act.getClass());
        
act.abort();

I then put a print statement in abort:

public int abort ()
	{
	    System.err.println("**in abort");
	    
		int status = super.cancel();

		/*
		 * Now remove this thread from the action state.
		 */

		ThreadActionData.popAction();

		TransactionReaper.transactionReaper().remove(this);

		return status;
	}

and got the following output:


**created org.jboss.stm.internal.types.AtomicIntegerImpl at 3aeacb9c
**invoke on org.jboss.stm.internal.reflect.InvocationHandler at cdd8cfc
**transaction BasicAction: 0:ffff0a517f65:d29e:51b5efa8:7 status: ActionStatus.CREATED
Jun 10, 2013 4:24:24 PM com.arjuna.ats.arjuna.recovery.TransactionStatusManager addService
INFO: ARJUNA012163: Starting service com.arjuna.ats.arjuna.recovery.ActionStatusService on port 53919
Jun 10, 2013 4:24:24 PM com.arjuna.ats.internal.arjuna.recovery.TransactionStatusManagerItem <init>
INFO: ARJUNA012337: TransactionStatusManagerItem host: 127.0.0.1 port: 53919
Jun 10, 2013 4:24:24 PM com.arjuna.ats.arjuna.recovery.TransactionStatusManager start
INFO: ARJUNA012170: TransactionStatusManager started on port 53919 and host 127.0.0.1 with service com.arjuna.ats.arjuna.recovery.ActionStatusService
**invoke on org.jboss.stm.internal.reflect.InvocationHandler at cdd8cfc
**setlock org.jboss.stm.internal.reflect.InvocationHandler at cdd8cfc
**save_state org.jboss.stm.internal.proxy.LockManagerProxy at 54e156e1 and BasicAction: 0:ffff0a517f65:d29e:51b5efa8:7 status: ActionStatus.RUNNING
**invoke on org.jboss.stm.internal.reflect.InvocationHandler at cdd8cfc
**setlock org.jboss.stm.internal.reflect.InvocationHandler at cdd8cfc
**rolling back BasicAction: 0:ffff0a517f65:d29e:51b5efa8:7 status: ActionStatus.RUNNING
**using class com.arjuna.ats.arjuna.AtomicAction
**done

Ignore the invoke prints for now. But you can see that there's no print from abort.
                
> STM test failure with emma: Failed tests:   testTransaction(org.jboss.stm.types.AtomicIntegerUnitTest): expected:<1> but was:<0>
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JBTM-1766
>                 URL: https://issues.jboss.org/browse/JBTM-1766
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: STM, Testing
>            Reporter: Tom Jenkinson
>            Assignee: Mark Little
>            Priority: Minor
>             Fix For: 5.0.0.M4
>
>         Attachments: org.jboss.stm.types.AtomicIntegerUnitTest-output (emma off).txt, org.jboss.stm.types.AtomicIntegerUnitTest-output (emma on).txt
>
>
> Most tests run OK, just this one:
> Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.548 sec <<< FAILURE!
> testTransaction(org.jboss.stm.types.AtomicIntegerUnitTest)  Time elapsed: 0.328 sec  <<< FAILURE!
> junit.framework.AssertionFailedError: expected:<1> but was:<0>
> 	at junit.framework.Assert.fail(Assert.java:50)
> 	at junit.framework.Assert.failNotEquals(Assert.java:287)
> 	at junit.framework.Assert.assertEquals(Assert.java:67)
> 	at junit.framework.Assert.assertEquals(Assert.java:199)
> 	at junit.framework.Assert.assertEquals(Assert.java:205)
> 	at org.jboss.stm.types.AtomicIntegerUnitTest.testTransaction(AtomicIntegerUnitTest.java:81)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:601)
> 	at junit.framework.TestCase.runTest(TestCase.java:168)
> 	at junit.framework.TestCase.runBare(TestCase.java:134)
> 	at junit.framework.TestResult$1.protect(TestResult.java:110)
> 	at junit.framework.TestResult.runProtected(TestResult.java:128)
> 	at junit.framework.TestResult.run(TestResult.java:113)
> 	at junit.framework.TestCase.run(TestCase.java:124)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:243)
> 	at junit.framework.TestSuite.run(TestSuite.java:238)
> 	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:601)
> 	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
> 	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
> 	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
> 	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
> 	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
> Could it be caused by emma altering the bytecode (which it has to do)?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jbossts-issues mailing list