Author: peter_firmstone
Date: Thu Mar  7 09:34:01 2013
New Revision: 1453741

URL: http://svn.apache.org/r1453741
Log:
Fixed SnapshotExpirationNotifyTest - test was sleeping, waking up at the same 
time the DGC lease expired, DGC's much faster than it used to be.  Gave the 
test a 10ms timeout wakeup head start, stopped failures.

Ran FindBugs on QA suite, fixed numerous concurrency / visibility issues.

Modified:
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mercury/TestGeneratorImpl.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/OneExpireOneNotTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/transaction/MultipleAccessTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/FailingOwner.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/ForeverOwner.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TestParticipantImpl.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TesterTransaction.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TrackingOwner.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotExpirationNotifyTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/DataMessage.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/Redirector.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/AbstractBaseTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/EventTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java
 Thu Mar  7 09:34:01 2013
@@ -290,6 +290,7 @@ public class LeaseRenewDurRFE extends Ab
         ServiceRegistrar lus = (ldm.getRegistrars())[0];
         /* default maximum lease duration from the lookup service */
         int idSeed  = SERVICE_BASE_VALUE + 9999;
+        // deliberate, not a bug.
         long lowBits = (1000+idSeed) >> 32;
         long leastSignificantBits = SERVICE_ID_VARIANT | lowBits;
         ServiceID testID =
@@ -312,6 +313,7 @@ public class LeaseRenewDurRFE extends Ab
         /* test service ids */
         for(int i=0;i<srvcID.length;i++) {
             idSeed  = SERVICE_BASE_VALUE + i;
+            // deliberate not a bug.
             lowBits = (1000+idSeed) >> 32;
             leastSignificantBits = SERVICE_ID_VARIANT | lowBits;
             srvcID[i] =

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mercury/TestGeneratorImpl.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mercury/TestGeneratorImpl.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mercury/TestGeneratorImpl.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mercury/TestGeneratorImpl.java
 Thu Mar  7 09:34:01 2013
@@ -338,7 +338,7 @@ public class TestGeneratorImpl 
            expiration = newExpiration;
        }
 
-        public long getExpiration() {
+        public synchronized long getExpiration() {
            return expiration;
        }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/OneExpireOneNotTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/OneExpireOneNotTest.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/OneExpireOneNotTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/OneExpireOneNotTest.java
 Thu Mar  7 09:34:01 2013
@@ -209,14 +209,17 @@ public class OneExpireOneNotTest extends
        // Inherit java doc from super type
        protected boolean isValidExtension(long extension) {
            // Check to make sure the set has not expired
-           if (now - slop > renewalSetLease.getExpiration()) {
-               // The set has expired, this renewal should not
-               // be happending
-               setRsltIfNeeded("Expire Owner:LRS asked for a renewal " +
-                               "after renewal set expiration!");
-               return false;
-           }
-           
+            boolean t = false;
+            synchronized (this){
+                t = now - slop > renewalSetLease.getExpiration();
+            }
+            if (t) {
+                // The set has expired, this renewal should not
+                // be happending
+                setRsltIfNeeded("Expire Owner:LRS asked for a renewal " +
+                                "after renewal set expiration!");
+                return false;
+            }
            return super.isValidExtension(extension);
        }
        

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/transaction/MultipleAccessTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/transaction/MultipleAccessTest.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/transaction/MultipleAccessTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/transaction/MultipleAccessTest.java
 Thu Mar  7 09:34:01 2013
@@ -46,18 +46,14 @@ public class MultipleAccessTest extends 
     private final static int NUM_WORKERS = 4;
     private final static int NUM_ENTRIES = 20;
 
-    // an entry to be written
-    private SimpleEntry wentry;
-    private SimpleEntry template;
-
     /*
      * Vars to detect that Peeker/Worker failed.
      * Has been added during porting.
      */
-    private boolean peekerFailed = false;
-    private boolean workerFailed = false;
-    private String peekerFailMsg = "";
-    private String workerFailMsg = "";
+    private volatile boolean peekerFailed = false;
+    private volatile boolean workerFailed = false;
+    private volatile String peekerFailMsg = "";
+    private volatile String workerFailMsg = "";
 
     public void run() throws Exception {
         simpleSetup();
@@ -165,10 +161,10 @@ public class MultipleAccessTest extends 
 
 
     class Peeker extends Thread {
-        private JavaSpace space;
-        private TransactionTestBase parent;
+        private final JavaSpace space;
+        private final TransactionTestBase parent;
         private int readCount = 0;
-       private boolean shouldStop = false;
+       private volatile boolean shouldStop = false;
 
         public Peeker(JavaSpace space, TransactionTestBase parent) {
             this.space = space;
@@ -191,7 +187,9 @@ public class MultipleAccessTest extends 
                     }
 
                     if (entry != null) {
-                        readCount++;
+                        synchronized (this){
+                            readCount++;
+                        }
                     }
 
                     try {
@@ -210,28 +208,30 @@ public class MultipleAccessTest extends 
        /**
          * Stops the thread.
          */
-       public synchronized void exit() {
+       public void exit() {
            shouldStop = true;
        }
 
         public int getReadCount() {
-            parent.pass("[Peeker]: read " + readCount + " entries");
-            return readCount;
+            synchronized (this){
+                parent.pass("[Peeker]: read " + readCount + " entries");
+                return readCount;
+            }
         }
     }
 
 
     class Worker extends Thread {
-        private JavaSpace space;
-        private Transaction txn;
-        private int fromStage, toStage;
-        private int writeCount = 0;
-        private int expectedEntries;
-        private TransactionTestBase parent;
+        private final JavaSpace space;
+        private final Transaction txn;
+        private final int fromStage, toStage;
+        private volatile int writeCount = 0;
+        private final int expectedEntries;
+        private final TransactionTestBase parent;
         private final int MAX_WAIT = 80000; // 8sec.
         private final int WAIT_UNIT = 400; // 400 msec.
-        private boolean completed = false;
-        private Object lock = new Object();
+        private volatile boolean completed = false;
+        private final Object lock = new Object();
 
         public Worker(JavaSpace space, Transaction txn, int fromStage,
                 int toStage, int expectedEntries, TransactionTestBase parent) {
@@ -300,13 +300,12 @@ public class MultipleAccessTest extends 
                         }
                         parent.pass("[Worker" + fromStage + "]: wrote an entry"
                                 + " (" + entry + ")");
-
-                        if (++writeCount >= expectedEntries) {
-                            synchronized(lock) {
+                        synchronized(lock) {
+                            if (++writeCount >= expectedEntries) {
                                 completed = true;
                                 lock.notifyAll();
+                                break; // ends thread
                             }
-                            break; // ends thread
                         }
                     }
                 }

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/FailingOwner.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/FailingOwner.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/FailingOwner.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/FailingOwner.java
 Thu Mar  7 09:34:01 2013
@@ -286,7 +286,9 @@ public class FailingOwner extends LeaseO
      * 
      */
     public Throwable getLastThrowable() {
-       return toThrow[lastIndex];
+        synchronized (this){
+            return toThrow[lastIndex];
+        }
     }
 
 }

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/ForeverOwner.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/ForeverOwner.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/ForeverOwner.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/ForeverOwner.java
 Thu Mar  7 09:34:01 2013
@@ -69,15 +69,15 @@ public class ForeverOwner extends Tracki
        if (extension == desiredRenewal) {
            return true;
        }
- 
-       final long requestedExpiration = now + extension;
-       if (requestedExpiration < 0)
-           // They asked for at least FOREVER
-           return true;
-
-       if ((Long.MAX_VALUE - requestedExpiration) < slop)
-           return true;
+        synchronized (this){
+            final long requestedExpiration = now + extension;
+            if (requestedExpiration < 0)
+                // They asked for at least FOREVER
+                return true;
 
+            if ((Long.MAX_VALUE - requestedExpiration) < slop)
+                return true;
+        }
        setRsltIfNeeded("Forever Owner:LRS asked for " + extension + 
                        " when it should have asked for " + desiredRenewal);
        return false;

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TestParticipantImpl.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TestParticipantImpl.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TestParticipantImpl.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TestParticipantImpl.java
 Thu Mar  7 09:34:01 2013
@@ -50,8 +50,7 @@ public class TestParticipantImpl
 {
     private String name;
     private BitSet behavior; 
-    private Integer lock;
-    private Integer lock2;
+    private final Object lock2;
     private long crashcount;
     private ServerTransaction str;
     private static final long TENSECONDS = 1000 * 10;
@@ -65,8 +64,7 @@ public class TestParticipantImpl
 
     public TestParticipantImpl(String name) throws RemoteException {
        this.name  = name;
-       lock       = new Integer(0);
-       lock2      = new Integer(1);
+       lock2      = new Object();
        crashcount = System.currentTimeMillis();
        behavior   = new BitSet(OPERATION_COUNT);
        Configuration c = QAConfig.getConfig().getConfiguration();

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TesterTransaction.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TesterTransaction.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TesterTransaction.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TesterTransaction.java
 Thu Mar  7 09:34:01 2013
@@ -44,8 +44,8 @@ public class TesterTransaction implement
     public final Long idObj;
     private TransactionParticipant part; // our participant
     private long crashCnt; // its crash count
-    private int state; // our state;
-    private int getStateFailCnt; // # of times to fail
+    private volatile int state; // our state;
+    private volatile int getStateFailCnt; // # of times to fail
 
     /**
      * The <code>ServerTransaction</code> for us.
@@ -113,11 +113,13 @@ public class TesterTransaction implement
      * Return the current state of this transaction.
      */
     public int getState() throws RemoteException {
-        if (getStateFailCnt > 0) {
-            getStateFailCnt--;
-            throw new RemoteException("getState forced to fail");
+        synchronized (this){
+            if (getStateFailCnt > 0) {
+                getStateFailCnt--;
+                throw new RemoteException("getState forced to fail");
+            }
+            return state;
         }
-        return state;
     }
 
     /**
@@ -148,28 +150,30 @@ public class TesterTransaction implement
      */
     public void join(TransactionParticipant newPart, long newCrashCnt)
             throws CannotJoinException, CrashCountException {
-        if (state != ACTIVE) {
-            throw new CannotJoinException("State is "
-                    + TxnConstants.getName(state));
-        }
+        synchronized (this){
+            if (state != ACTIVE) {
+                throw new CannotJoinException("State is "
+                        + TxnConstants.getName(state));
+            }
+
+            if (part == null) {
+                part = newPart;
+                crashCnt = newCrashCnt;
+                return;
+            }
+
+            if (!part.equals(newPart)) {
+                throw new CannotJoinException("Only one participant allowed");
+            }
+
+            if (newCrashCnt != crashCnt) {
+                throw new CrashCountException("crash counts unequal: old = "
+                        + crashCnt + ", new = " + newCrashCnt);
+            }
 
-        if (part == null) {
-            part = newPart;
-            crashCnt = newCrashCnt;
+            // so it's the same participant with the same crash count: cool
             return;
         }
-
-        if (!part.equals(newPart)) {
-            throw new CannotJoinException("Only one participant allowed");
-        }
-
-        if (newCrashCnt != crashCnt) {
-            throw new CrashCountException("crash counts unequal: old = "
-                    + crashCnt + ", new = " + newCrashCnt);
-        }
-
-        // so it's the same participant with the same crash count: cool
-        return;
     }
 
     /**
@@ -177,8 +181,10 @@ public class TesterTransaction implement
      * <code>com.sun.jini.qa.harness.TestException</code> if there it is not.
      */
     public void assertParticipants(int count) throws TestException {
-        int actual = (part == null ? 0 : 1);
-
+        int actual = 0;
+        synchronized (this){
+            actual = (part == null ? 0 : 1);
+        }
         if (count != actual) {
             throw new TestException("participant count should be " + count
                     + ", is " + actual);

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TrackingOwner.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TrackingOwner.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TrackingOwner.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/TrackingOwner.java
 Thu Mar  7 09:34:01 2013
@@ -196,11 +196,16 @@ abstract public class TrackingOwner exte
        } finally {
            // If after all this rslt is non null we have to notify 
            // notifyOnFailure
-           if (rslt != null && notifyOnFailure != null) {
+            boolean notify = false;
+            synchronized (this){
+                notify = rslt != null && notifyOnFailure != null;
+            }
+           if (notify) {
                synchronized (notifyOnFailure) {
                    notifyOnFailure.notifyAll();
                } 
            }
+            
        }
     }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotExpirationNotifyTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotExpirationNotifyTest.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotExpirationNotifyTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotExpirationNotifyTest.java
 Thu Mar  7 09:34:01 2013
@@ -17,6 +17,7 @@
  */
 package com.sun.jini.test.spec.javaspace.conformance.snapshot;
 
+import com.sun.jini.qa.harness.QAConfig;
 import com.sun.jini.qa.harness.Test;
 import java.util.logging.Level;
 
@@ -46,6 +47,13 @@ import com.sun.jini.test.spec.javaspace.
  * @author Mikhail A. Markov
  */
 public class SnapshotExpirationNotifyTest extends TransactionTest {
+    
+    public Test construct(QAConfig config) throws Exception {
+        super.construct(config);
+        timeout1 = getConfig().getLongConfigVal(pkgName + ".timeout1", 9990);
+        timeout2 = getConfig().getLongConfigVal(pkgName + ".timeout2", 19990);
+        return this;
+    }
 
     /**
      * This method asserts, that the request specified by a

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/DataMessage.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/DataMessage.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/DataMessage.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/DataMessage.java
 Thu Mar  7 09:34:01 2013
@@ -99,17 +99,17 @@ public class DataMessage implements Mess
     }
 
     //inherit javadoc
-    public Object getPayload() {
+    public synchronized Object getPayload() {
         return payload;
     }
 
     //inherit javadoc
-    public byte[] getRawMessage() {
+    public synchronized byte[] getRawMessage() {
         return received;
     }
 
     //inherit javadoc
-    public String toString() {
+    public synchronized String toString() {
         return (received!=null) ? Util.convert(
             new byte[]{received[0],received[1],received[2],received[3]}) :
             Util.convert(reference);
@@ -120,7 +120,7 @@ public class DataMessage implements Mess
      *
      * @return true if the <b>open</b> flag is set, false otherwise
      */
-    public boolean isOpen() {
+    public synchronized boolean isOpen() {
         return (received!=null) ? (received[0] & 0x10) == 0x10
             : (reference[0] & 0x10) == 0x10;
     }
@@ -130,7 +130,7 @@ public class DataMessage implements Mess
      *
      * @return The message that was operated on
      */
-    public DataMessage setOpen() {
+    public synchronized DataMessage setOpen() {
         reference[0] = (byte) (reference[0] | 0x10);
         return this;
     }
@@ -140,7 +140,7 @@ public class DataMessage implements Mess
      *
      * @return true if the <b>close</b> flag is set, false otherwise
      */
-    public boolean isClose() {
+    public synchronized boolean isClose() {
         return (received!=null) ? (received[0] & 0x08) == 0x08
             : (reference[0] & 0x08) == 0x08;
     }
@@ -150,7 +150,7 @@ public class DataMessage implements Mess
      *
      * @return The message that was operated on
      */
-    public DataMessage setClose() {
+    public synchronized DataMessage setClose() {
         reference[0] = (byte) (reference[0] | 0x08);
         return this;
     }
@@ -160,7 +160,7 @@ public class DataMessage implements Mess
      *
      * @return true if the <b>eof</b> flag is set, false otherwise
      */
-    public boolean isEof() {
+    public synchronized boolean isEof() {
         return (received!=null) ? (received[0] & 0x04) == 0x04
             : (reference[0] & 0x04) == 0x04;
     }
@@ -170,7 +170,7 @@ public class DataMessage implements Mess
      *
      * @return The message that was operated on
      */
-    public DataMessage setEof() {
+    public synchronized DataMessage setEof() {
         reference[0] = (byte) (reference[0] | 0x04);
         return this;
     }
@@ -181,7 +181,7 @@ public class DataMessage implements Mess
      *
      * @return true if the <b>ackRequired</b> flag is set, false otherwise
      */
-    public boolean isAckRequired() {
+    public synchronized boolean isAckRequired() {
         return (received!=null) ? (received[0] & 0x02) == 0x02
             : (reference[0] & 0x02) == 0x02;
     }
@@ -191,7 +191,7 @@ public class DataMessage implements Mess
      *
      * @return The message that was operated on
      */
-    public DataMessage setAckRequired() {
+    public synchronized DataMessage setAckRequired() {
         reference[0] = (byte) (reference[0] | 0x02);
         return this;
     }
@@ -202,7 +202,7 @@ public class DataMessage implements Mess
      *
      * @return The session ID for this message
      */
-    public int getsessionId() {
+    public synchronized int getsessionId() {
         return (received!=null) ? received[1] : reference[1];
     }
 
@@ -211,7 +211,7 @@ public class DataMessage implements Mess
      *
      * @return The object that was operated on
      */
-    public DataMessage setSessionID(byte sessionID) {
+    public synchronized DataMessage setSessionID(byte sessionID) {
         reference[1] = sessionID;
         return this;
     }
@@ -223,7 +223,7 @@ public class DataMessage implements Mess
      * @param o An object that represents the payload of the message
      * @return The object that was operated on
      */
-    public DataMessage setPayload(Object o) {
+    public synchronized DataMessage setPayload(Object o) {
         payload = (byte[]) o;
         return this;
     }
@@ -236,7 +236,7 @@ public class DataMessage implements Mess
      * @param length The length that this message will report
      * @return The object that was just operated on
      */
-    public DataMessage setSize(short length) {
+    public synchronized DataMessage setSize(short length) {
         reference[2] = (byte) ((length >>> 8) & 0x00ff);
         reference[3] = (byte) (length & 0x00ff);;
         return this;
@@ -247,7 +247,7 @@ public class DataMessage implements Mess
      *
      * @return The size of the message
      */
-    public int getSize() {
+    public synchronized int getSize() {
         return (received!=null) ? (received[2]<<8) + received[3]
             : (reference[2]<<8) + reference[3];
     }
@@ -261,8 +261,10 @@ public class DataMessage implements Mess
      * @return The object that was operated on
      */
     public DataMessage suppressFormatCheck() {
-        supressFormatCheck = true;
-        return this;
+        synchronized (this){
+            supressFormatCheck = true;
+            return this;
+        }
     }
 
     /**
@@ -271,7 +273,7 @@ public class DataMessage implements Mess
      *
      * @param The message to check
      */
-    private void check(byte[] message) throws ProtocolException {
+    private synchronized  void check(byte[] message) throws ProtocolException {
         //check that the flags and message type are as expected
         if ((received[0]|reference[0])!=reference[0]) {
             byte[] tmp = new byte[reference.length];
@@ -300,9 +302,11 @@ public class DataMessage implements Mess
      * Constructs the Data message to send over the output stream
      */
     private byte[] construct() {
-        byte[] message = new byte[reference.length + payload.length];
-        System.arraycopy(reference,0,message,0,reference.length);
-        System.arraycopy(payload,0,message,reference.length,payload.length);
-        return message;
+        synchronized (this){
+            byte[] message = new byte[reference.length + payload.length];
+            System.arraycopy(reference,0,message,0,reference.length);
+            
System.arraycopy(payload,0,message,reference.length,payload.length);
+            return message;
+        }
     }
 }

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/Redirector.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/Redirector.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/Redirector.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/mux/util/Redirector.java
 Thu Mar  7 09:34:01 2013
@@ -41,7 +41,7 @@ public class Redirector implements Runna
     private int localPort;
     private ArrayList server = new ArrayList();
     private ArrayList client = new ArrayList();
-    private ServerSocket ss = null;
+    private volatile ServerSocket ss = null;
     private boolean stop = false;
     private boolean clientDone = false;
     private boolean serverDone = false;

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/AbstractBaseTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/AbstractBaseTest.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/AbstractBaseTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/AbstractBaseTest.java
 Thu Mar  7 09:34:01 2013
@@ -105,6 +105,13 @@ abstract public class AbstractBaseTest e
         public TestService(int i) {
             this.i = i;
         }//end constructor
+
+        @Override
+        public int hashCode() {
+            int hash = 7;
+            hash = 67 * hash + this.i;
+            return hash;
+        }
         public boolean equals(Object obj) {
             try {
                 if ( this == obj ) {
@@ -526,7 +533,7 @@ abstract public class AbstractBaseTest e
         for(int i=0;i<getnSecsJoin();i++) {
             synchronized(srvcToNEvents) {
                 if(srvcToNEvents.size() > 0) {
-                    Integer objN = (Integer)srvcToNEvents.get(testService);
+                    Integer objN = srvcToNEvents.get(testService);
                     if(objN != null) {
                         nEventsRcvd = objN.intValue();
                         if(    (nEventsExpected > 0)

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/EventTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/EventTest.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/EventTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/EventTest.java
 Thu Mar  7 09:34:01 2013
@@ -566,7 +566,7 @@ public class EventTest extends QATestEnv
        private final Throwable toThrow;
 
        /** Have we recived the expected event */
-       private boolean recived = false;
+       private volatile boolean recived = false;
 
        /** Our desired expiration */ 
        final private long desiredExpiration;

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java?rev=1453741&r1=1453740&r2=1453741&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java
 Thu Mar  7 09:34:01 2013
@@ -739,7 +739,7 @@ abstract public class AbstractBaseTest e
             int srvcVal = idSeed;
             int attrVal = srvcVal;
             if(reRegister) srvcVal = srvcVal+9;//makes proxies not equal
-
+            // not a bug, bit shifted outside of range deliberately.
             long lowBits = (1000+idSeed) >> 32;
             long leastSignificantBits = SERVICE_ID_VARIANT | lowBits;
             ServiceID srvcID =


Reply via email to