Author: rupertlssmith
Date: Tue Aug 14 04:06:23 2007
New Revision: 565703

URL: http://svn.apache.org/viewvc?view=rev&rev=565703
Log:
Added UDP based clock syncher to test suite.

Added:
    
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/
    
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/ClockSynchronizer.java
    
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockReference.java
    
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockSynchronizer.java
Modified:
    incubator/qpid/branches/M2/java/perftests/pom.xml
    
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedcircuit/DistributedCircuitImpl.java
    
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedtesting/Coordinator.java

Modified: incubator/qpid/branches/M2/java/perftests/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/perftests/pom.xml?view=diff&rev=565703&r1=565702&r2=565703
==============================================================================
--- incubator/qpid/branches/M2/java/perftests/pom.xml (original)
+++ incubator/qpid/branches/M2/java/perftests/pom.xml Tue Aug 14 04:06:23 2007
@@ -263,8 +263,8 @@
                         <PQR-Qpid-03>-n PQR-Qpid-03           -d24H -s[100000] 
-c[16]              -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=true  commitBatchSize=100 batchSize=100000 messageSize=256     
destinationCount=1  rate=0     maxPending=1000000 </PQR-Qpid-03>
                         <PQR-Qpid-04>-n PQR-Qpid-04           -d24H -s[100000] 
-c[16]              -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=false commitBatchSize=100 batchSize=100000 messageSize=256     
destinationCount=1  rate=0     maxPending=1000000 </PQR-Qpid-04>
 
-                        <PQC-Qpid-01>-n PQC-Qpid-01           -d1M  -s[100]    
-c[1,30],samples=30 -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=true  commitBatchSize=100 batchSize=1000   messageSize=256     
destinationCount=1  rate=600   maxPending=1000000 </PQC-Qpid-01>
-                        <PQC-Qpid-02>-n PQC-Qpid-02           -d1M  -s[100]    
-c[1,30],samples=30 -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=false commitBatchSize=100 batchSize=1000   messageSize=256     
destinationCount=1  rate=100   maxPending=1000000 </PQC-Qpid-02>
+                        <PQC-Qpid-01>-n PQC-Qpid-01           -d1M  -s[1000]   
-c[1,30],samples=30 -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=true  commitBatchSize=100 batchSize=1000   messageSize=256     
destinationCount=1  rate=600   maxPending=1000000 </PQC-Qpid-01>
+                        <PQC-Qpid-02>-n PQC-Qpid-02           -d1M  -s[1000]   
-c[1,30],samples=30 -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=false commitBatchSize=100 batchSize=1000   messageSize=256     
destinationCount=1  rate=100   maxPending=1000000 </PQC-Qpid-02>
                         <PQC-Qpid-03>-n PQC-Qpid-03           -d10M -s[1000]   
-c[10]              -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=true  commitBatchSize=100 batchSize=1000   messageSize=256     
destinationCount=10 rate=0     maxPending=1000000 </PQC-Qpid-03>
                         <PQC-Qpid-04>-n PQC-Qpid-04           -d10M -s[1000]   
-c[10]              -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=false commitBatchSize=100 batchSize=1000   messageSize=256     
destinationCount=10 rate=0     maxPending=1000000 </PQC-Qpid-04>
                         <PQC-Qpid-05>-n PQC-Qpid-05           -d10M -s[1000]   
-c[100]             -o $QPID_WORK/results -t testAsyncPingOk 
org.apache.qpid.ping.PingAsyncTestPerf persistent=true  pubsub=false 
transacted=true  commitBatchSize=100 batchSize=1000   messageSize=256     
destinationCount=10 rate=0     maxPending=100000  </PQC-Qpid-05>

Added: 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/ClockSynchronizer.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/ClockSynchronizer.java?view=auto&rev=565703
==============================================================================
--- 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/ClockSynchronizer.java
 (added)
+++ 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/ClockSynchronizer.java
 Tue Aug 14 04:06:23 2007
@@ -0,0 +1,67 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.test.framework.clocksynch;
+
+/**
+ * ClockSynchronizer provides an interface through which two nodes may 
synchronize their clocks. It is expected that one
+ * node will act as the reference clock, to which no delta need be applied, 
and the other node will act as the slave,
+ * and which must apply a delta to its local clock to get a clock synchronized 
with the reference.
+ *
+ * <p/>The slave side will initiate the computation of a clock delta by 
calling the [EMAIL PROTECTED] #synch} method. This method
+ * will not return until the delta has been computed, at which point there is 
a method to return its value, as well as
+ * an estimate of the likely error (usually one standard deviation), in the 
synchronization. For convenience there is a
+ * [EMAIL PROTECTED] #nanoTime} method to return the value of 
System.nanoTime() with the delta added in.
+ *
+ * <p/><table id="crc"><caption>CRC Card</caption>
+ * <tr><th> Responsibilities <th> Collaborations
+ * <tr><td> Trigger a clock synchronziation.
+ * <tr><td> Compute a clock delta to apply to the local clock.
+ * <tr><td> Estimate the error in the synchronzation.
+ * </table>
+ */
+public interface ClockSynchronizer
+{
+    /**
+     * The slave side should call this to copute a clock delta with the 
reference.
+     */
+    public void synch();
+
+    /**
+     * Gets the clock delta in nano seconds.
+     *
+     * @return The clock delta in nano seconds.
+     */
+    public long getDelta();
+
+    /**
+     * Gets an estimate of the clock error in nan seconds.
+     *
+     * @return An estimate of the clock error in nan seconds.
+     */
+    public long getEpsilon();
+
+    /**
+     * Gets the local clock time with any computed delta added in.
+     *
+     * @return The local clock time with any computed delta added in.
+     */
+    public long nanoTime();
+}

Added: 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockReference.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockReference.java?view=auto&rev=565703
==============================================================================
--- 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockReference.java
 (added)
+++ 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockReference.java
 Tue Aug 14 04:06:23 2007
@@ -0,0 +1,159 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.test.framework.clocksynch;
+
+import java.io.IOException;
+import java.net.*;
+import java.nio.ByteBuffer;
+
+/**
+ * UDPClockReference supplies a refernce clock signal (generated from 
System.nanoTime()).
+ *
+ * <p/><table id="crc"><caption>CRC Card</caption>
+ * <tr><th> Responsibilities <th> Collaborations
+ * <tr><td> Supply a reference clock signal.
+ * </table>
+ *
+ * @todo Port hard coded. Make configurable.
+ *
+ * @todo Errors rethrown as runtimes, or silently terminate the service. Could 
add better error handling if needed.
+ */
+public class UDPClockReference implements Runnable
+{
+    /** Defines the timeout to use when polling the socket for time requests. 
*/
+    private static final int TIMEOUT = 200;
+
+    /** Defines the port to run the clock reference on. */
+    public static final int REFERENCE_PORT = 4445;
+
+    /** Holds the socket to receive clock reference requests on. */
+    protected DatagramSocket socket = null;
+
+    /** Flag used to indicate that the time server should keep running. Set to 
false to terminate. */
+    protected boolean publish = true;
+
+    /**
+     * Creates a clock reference service on the standard port.
+     */
+    public UDPClockReference()
+    {
+        try
+        {
+            socket = new DatagramSocket(REFERENCE_PORT);
+            socket.setSoTimeout(TIMEOUT);
+        }
+        catch (SocketException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Implements the run loop for this reference time server. This waits for 
incoming time requests, and replies to
+     * any, with a message with the local time stamp in it. Periodically 
(controlled by [EMAIL PROTECTED] #TIMEOUT}), the run
+     * loop will check if the [EMAIL PROTECTED] #publish} flag has been 
cleared, and terminate the reference time service if so.
+     */
+    public void run()
+    {
+        byte[] buf = new byte[256];
+        ByteBuffer bbuf = ByteBuffer.wrap(buf);
+
+        while (publish)
+        {
+            try
+            {
+                // Wait for a reference time request.
+                DatagramPacket packet = new DatagramPacket(buf, buf.length);
+                boolean timedOut = false;
+
+                try
+                {
+                    socket.receive(packet);
+                }
+                catch (SocketTimeoutException e)
+                {
+                    timedOut = true;
+                }
+
+                if (!timedOut)
+                {
+                    // Work out from the received packet, where to reply to.
+                    InetAddress address = packet.getAddress();
+                    int port = packet.getPort();
+
+                    // Respond to the time request by sending back the local 
clock as the reference time.
+                    bbuf.putLong(System.nanoTime());
+                    bbuf.flip();
+                    packet = new DatagramPacket(bbuf.array(), bbuf.capacity(), 
address, port);
+
+                    socket.send(packet);
+                }
+            }
+            catch (IOException e)
+            {
+                publish = false;
+            }
+        }
+
+        socket.close();
+    }
+
+    /**
+     * Supplies a shutdown hook.
+     *
+     * @return The shut down hook.
+     */
+    public Thread getShutdownHook()
+    {
+        return new Thread(new Runnable()
+                {
+                    public void run()
+                    {
+                        publish = false;
+                    }
+                });
+    }
+
+    /**
+     * For testing purposes. Runs a reference clock on the default port.
+     *
+     * @param args None.
+     */
+    public static void main(String[] args)
+    {
+        try
+        {
+            // Create the clock reference service.
+            UDPClockReference clock = new UDPClockReference();
+
+            // Set up a shutdown hook for it.
+            Runtime.getRuntime().addShutdownHook(clock.getShutdownHook());
+
+            // Start the service.
+            clock.run();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+}

Added: 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockSynchronizer.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockSynchronizer.java?view=auto&rev=565703
==============================================================================
--- 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockSynchronizer.java
 (added)
+++ 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/clocksynch/UDPClockSynchronizer.java
 Tue Aug 14 04:06:23 2007
@@ -0,0 +1,324 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.test.framework.clocksynch;
+
+import uk.co.thebadgerset.junit.extensions.util.CommandLineParser;
+import uk.co.thebadgerset.junit.extensions.util.ParsedProperties;
+
+import java.io.IOException;
+import java.net.*;
+import java.nio.ByteBuffer;
+
+/**
+ * UDPClockSynchronizer is a [EMAIL PROTECTED] ClockSynchronizer} that sends 
pings as UDP datagrams, and uses the following simple
+ * algorithm to perform clock synchronization:
+ *
+ * <ol>
+ * <li>Slave initiates synchronization with a Reference clock.</li>
+ * <li>Slave stamps current local time on a "time request" message and sends 
to the Reference.</li>
+ * <li>Upon receipt by Reference, Reference stamps Reference-time and 
returns.</li>
+ * <li>Upon receipt by Slave, Slave subtracts current time from sent time and 
divides by two to compute latency. It
+ *     subtracts current time from Reference time to determine Slave-Reference 
time delta and adds in the
+ *     half-latency to get the correct clock delta.</li>
+ * <li>The first result is immediately used to update the clock since it will 
get the local clock into at least
+ *     the right ballpark.</li>
+ * <li>The Slave repeats steps 2 through 4, 15 more times.</li>
+ * <li>The results of the packet receipts are accumulated and sorted in 
lowest-latency to highest-latency order. The
+ *     median latency is determined by picking the mid-point sample from this 
ordered list.</li>
+ * <li>All samples above approximately 1 standard-deviation from the median 
are discarded and the remaining samples
+ *     are averaged using an arithmetic mean.</li>
+ * </ol>
+ *
+ * <p/>The use of UDP datagrams, instead of TCP based communication eliminates 
the hidden delays that TCP can introduce,
+ * as it can transparently re-order or re-send packets, or introduce delays as 
packets are naggled.
+ *
+ * <p/><table id="crc"><caption>CRC Card</caption>
+ * <tr><th> Responsibilities <th> Collaborations
+ * <tr><td> Trigger a clock synchronziation.
+ * <tr><td> Compute a clock delta to apply to the local clock.
+ * <tr><td> Estimate the error in the synchronzation.
+ * </table>
+ */
+public class UDPClockSynchronizer implements ClockSynchronizer
+{
+    /** The clock delta. */
+    private long delta = 0L;
+
+    /** Holds an estimate of the clock error relative to the reference clock. 
*/
+    private long epsilon = 0L;
+
+    /** Holds the address of the reference clock. */
+    private InetAddress referenceAddress;
+
+    /** Holds the socket to communicate with the reference service over. */
+    private DatagramSocket socket;
+
+    /**
+     * Creates a clock synchronizer against the specified address for the 
reference.
+     *
+     * @param address The address of the reference service.
+     */
+    public UDPClockSynchronizer(String address)
+    {
+        try
+        {
+            referenceAddress = InetAddress.getByName(address);
+        }
+        catch (UnknownHostException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * The slave side should call this to compute a clock delta with the 
reference.
+     */
+    public void synch()
+    {
+        try
+        {
+            socket = new DatagramSocket();
+
+            // Synchronize on a single ping, to get the clock into the right 
ball-park.
+            synch(1);
+
+            // Synchronize on 15 pings for greater accuracy.
+            synch(15);
+
+            socket.close();
+        }
+        catch (SocketException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Updates the synchronization delta by performing the specified number of 
reference clock requests.
+     *
+     * @param n The number of reference clock request cycles to perform.
+     */
+    protected void synch(int n)
+    {
+        // Create an array of deltas by performing n reference pings.
+        long[] delta = new long[n];
+
+        for (int i = 0; i < n; i++)
+        {
+            delta[i] = ping();
+        }
+
+        // Reject any deltas that are larger than 1 s.d. above the median.
+        long median = median(delta);
+        long sd = standardDeviation(delta);
+
+        long[] tempDeltas = new long[n];
+        int count = 0;
+
+        for (int i = 0; i < n; i++)
+        {
+            if (delta[i] <= (median + sd))
+            {
+                tempDeltas[count] = delta[i];
+                count++;
+            }
+        }
+
+        System.arraycopy(tempDeltas, 0, delta, 0, count);
+
+        // Estimate the delta as the mean of the remaining deltas.
+        this.delta += mean(delta);
+
+        // Estimate the error as the standard deviation of the remaining 
deltas.
+        this.epsilon = standardDeviation(delta);
+
+    }
+
+    /**
+     * Performs a single reference clock request cycle and returns the 
estimated delta relative to the local clock.
+     * This is computed as the half-latency of the requst cycle, plus the 
reference clock, minus the local clock.
+     *
+     * @return The estimated clock delta.
+     */
+    protected long ping()
+    {
+        try
+        {
+            byte[] buf = new byte[256];
+            DatagramPacket packet = new DatagramPacket(buf, buf.length, 
referenceAddress, UDPClockReference.REFERENCE_PORT);
+
+            // Start timing the request latency.
+            long start = nanoTime();
+
+            // Get the reference time.
+            socket.send(packet);
+            packet = new DatagramPacket(buf, buf.length);
+            socket.receive(packet);
+
+            ByteBuffer bbuf = ByteBuffer.wrap(packet.getData());
+            long refTime = bbuf.getLong();
+
+            // Stop timing the request latency.
+            long localTime = nanoTime();
+            long end = localTime - start;
+
+            // Estimate delta as (ref clock + half-latency) - local clock.
+            return ((end - start) / 2) + refTime - localTime;
+        }
+        catch (IOException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Gets the clock delta in nano seconds.
+     *
+     * @return The clock delta in nano seconds.
+     */
+    public long getDelta()
+    {
+        return delta;
+    }
+
+    /**
+     * Gets an estimate of the clock error in nan seconds.
+     *
+     * @return An estimate of the clock error in nan seconds.
+     */
+    public long getEpsilon()
+    {
+        return epsilon;
+    }
+
+    /**
+     * Gets the local clock time with any computed delta added in.
+     *
+     * @return The local clock time with any computed delta added in.
+     */
+    public long nanoTime()
+    {
+        return System.nanoTime() + delta;
+    }
+
+    /**
+     * Computes the median of a series of values.
+     *
+     * @param values The values.
+     *
+     * @return The median.
+     */
+    public static long median(long[] values)
+    {
+        // Check if the median is computed from a pair of middle value.
+        if ((values.length % 2) == 0)
+        {
+            int middle = values.length / 2;
+
+            return (values[middle] + values[middle - 1]) / 2;
+        }
+        // The median is computed from a single middle value.
+        else
+        {
+            return values[values.length / 2];
+        }
+    }
+
+    /**
+     * Computes the mean of a series of values.
+     *
+     * @param values The values.
+     *
+     * @return The mean.
+     */
+    public static long mean(long[] values)
+    {
+        long total = 0L;
+
+        for (long value : values)
+        {
+            total += value;
+        }
+
+        return total / values.length;
+    }
+
+    /**
+     * Computes the variance of series of values.
+     *
+     * @param values The values.
+     *
+     * @return The variance of the values.
+     */
+    public static long variance(long[] values)
+    {
+        long mean = mean(values);
+
+        long totalVariance = 0;
+
+        for (long value : values)
+        {
+            totalVariance += (value - mean) ^ 2;
+        }
+
+        return totalVariance / values.length;
+    }
+
+    /**
+     * Computes the standard deviation of a series of values.
+     *
+     * @param values The values.
+     *
+     * @return The standard deviation.
+     */
+    public static long standardDeviation(long[] values)
+    {
+        return Double.valueOf(Math.sqrt(variance(values))).longValue();
+    }
+
+    /**
+     * For testing purposes. Supply address of reference clock as arg 1.
+     *
+     * @param args Address of reference clock as arg 1.
+     */
+    public static void main(String[] args)
+    {
+        ParsedProperties options =
+            new ParsedProperties(CommandLineParser.processCommandLine(args,
+                    new CommandLineParser(
+                        new String[][]
+                        {
+                            { "1", "Address of clock reference service.", 
"address", "true" }
+                        }), System.getProperties()));
+
+        String address = options.getProperty("1");
+
+        // Create a clock synchronizer.
+        UDPClockSynchronizer clockSyncher = new UDPClockSynchronizer(address);
+
+        // Perform a clock clockSyncher.
+        clockSyncher.synch();
+
+        // Print out the clock delta and estimate of the error.
+        System.out.println("Delta = " + clockSyncher.getDelta());
+        System.out.println("Epsilon = " + clockSyncher.getEpsilon());
+    }
+}

Modified: 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedcircuit/DistributedCircuitImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedcircuit/DistributedCircuitImpl.java?view=diff&rev=565703&r1=565702&r2=565703
==============================================================================
--- 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedcircuit/DistributedCircuitImpl.java
 (original)
+++ 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedcircuit/DistributedCircuitImpl.java
 Tue Aug 14 04:06:23 2007
@@ -296,7 +296,7 @@
      * Checks the test circuit. The effect of this is to gather the circuits 
state, for both ends of the circuit,
      * into a report, against which assertions may be checked.
      *
-     * @todo Replace the asynch receiver report thread with a choice of direct 
os asynch executor, so that asynch
+     * @todo Replace the asynch receiver report thread with a choice of direct 
or asynch executor, so that asynch
      *       or synch logging of test timings is optional. Also need to 
provide an onMessage method that is capable
      *       of receiving timing reports that receivers will generate during 
an ongoing test, on the test sample
      *       size boundaries. The message timing logging code should be 
factored out as a common method that can

Modified: 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedtesting/Coordinator.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedtesting/Coordinator.java?view=diff&rev=565703&r1=565702&r2=565703
==============================================================================
--- 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedtesting/Coordinator.java
 (original)
+++ 
incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/test/framework/distributedtesting/Coordinator.java
 Tue Aug 14 04:06:23 2007
@@ -35,7 +35,6 @@
 import org.apache.qpid.util.ConversationFactory;
 import org.apache.qpid.util.PrettyPrintingUtils;
 
-import uk.co.thebadgerset.junit.extensions.AsymptoticTestDecorator;
 import uk.co.thebadgerset.junit.extensions.TKTestResult;
 import uk.co.thebadgerset.junit.extensions.TKTestRunner;
 import uk.co.thebadgerset.junit.extensions.WrappedSuiteTestDecorator;


Reply via email to