You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2016/11/28 13:38:25 UTC

[2/3] cassandra git commit: Remove timing window in test case

Remove timing window in test case

patch by Chris Lohfink; reviewed by Stefan Podkowinski for CASSANDRA-12875


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f60ab237
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f60ab237
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f60ab237

Branch: refs/heads/trunk
Commit: f60ab23731e4d7d6aa021f62b5a73dcedfa3e2f1
Parents: 554d536
Author: Chris Lohfink <Ch...@datastax.com>
Authored: Wed Nov 9 08:41:41 2016 -0600
Committer: Jason Brown <ja...@gmail.com>
Committed: Mon Nov 28 05:33:55 2016 -0800

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../cassandra/net/IncomingTcpConnection.java    |  5 +++--
 .../org/apache/cassandra/net/MessageIn.java     |  4 +---
 .../cassandra/net/MessagingServiceTest.java     | 20 ++++++++------------
 4 files changed, 13 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f60ab237/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 93f9fcc..15af77e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.12
+ * Remove timing window in test case (CASSANDRA-12875)
  * Resolve unit testing without JCE security libraries installed (CASSANDRA-12945)
  * cqlsh auto completion: refactor definition of compaction strategy options (CASSANDRA-12946)
  * Add support for arithmetic operators (CASSANDRA-11935)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f60ab237/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
index 7d3c607..9878590 100644
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@ -39,6 +39,7 @@ import org.apache.cassandra.config.Config;
 import org.xerial.snappy.SnappyInputStream;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.UnknownColumnFamilyException;
+import org.apache.cassandra.db.monitoring.ApproximateTime;
 import org.apache.cassandra.io.util.DataInputPlus;
 import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus;
 import org.apache.cassandra.io.util.NIODataInputStream;
@@ -187,8 +188,8 @@ public class IncomingTcpConnection extends FastThreadLocalThread implements Clos
             id = Integer.parseInt(input.readUTF());
         else
             id = input.readInt();
-
-        MessageIn message = MessageIn.read(input, version, id, MessageIn.readConstructionTime(from, input));
+        long currentTime = ApproximateTime.currentTimeMillis();
+        MessageIn message = MessageIn.read(input, version, id, MessageIn.readConstructionTime(from, input, currentTime));
         if (message == null)
         {
             // callback expired; nothing to do

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f60ab237/src/java/org/apache/cassandra/net/MessageIn.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessageIn.java b/src/java/org/apache/cassandra/net/MessageIn.java
index a254741..0de9520 100644
--- a/src/java/org/apache/cassandra/net/MessageIn.java
+++ b/src/java/org/apache/cassandra/net/MessageIn.java
@@ -124,10 +124,8 @@ public class MessageIn<T>
         return MessageIn.create(from, payload, parameters, verb, version, constructionTime);
     }
 
-    public static long readConstructionTime(InetAddress from, DataInputPlus input) throws IOException
+    public static long readConstructionTime(InetAddress from, DataInputPlus input, long currentTime) throws IOException
     {
-        long currentTime = ApproximateTime.currentTimeMillis();
-
         // Reconstruct the message construction time sent by the remote host (we sent only the lower 4 bytes, assuming the
         // higher 4 bytes wouldn't change between the sender and receiver)
         int partial = input.readInt(); // make sure to readInt, even if cross_node_to is not enabled

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f60ab237/test/unit/org/apache/cassandra/net/MessagingServiceTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/net/MessagingServiceTest.java b/test/unit/org/apache/cassandra/net/MessagingServiceTest.java
index ec27b7e..11d17b8 100644
--- a/test/unit/org/apache/cassandra/net/MessagingServiceTest.java
+++ b/test/unit/org/apache/cassandra/net/MessagingServiceTest.java
@@ -34,20 +34,18 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 
 import com.google.common.collect.Iterables;
-
 import com.codahale.metrics.Timer;
 
+import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.db.monitoring.ApproximateTime;
 import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus;
 import org.apache.cassandra.io.util.DataOutputStreamPlus;
 import org.apache.cassandra.io.util.WrappedDataOutputStreamPlus;
 import org.caffinitas.ohc.histo.EstimatedHistogram;
-
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import org.apache.cassandra.config.DatabaseDescriptor;
-
 import static org.junit.Assert.*;
 
 public class MessagingServiceTest
@@ -100,15 +98,13 @@ public class MessagingServiceTest
     public void testDCLatency() throws Exception
     {
         int latency = 100;
-
         ConcurrentHashMap<String, Timer> dcLatency = MessagingService.instance().metrics.dcLatency;
         dcLatency.clear();
 
-        long now = System.currentTimeMillis();
+        long now = ApproximateTime.currentTimeMillis();
         long sentAt = now - latency;
-
         assertNull(dcLatency.get("datacenter1"));
-        addDCLatency(sentAt);
+        addDCLatency(sentAt, now);
         assertNotNull(dcLatency.get("datacenter1"));
         assertEquals(1, dcLatency.get("datacenter1").getCount());
         long expectedBucket = bucketOffsets[Math.abs(Arrays.binarySearch(bucketOffsets, TimeUnit.MILLISECONDS.toNanos(latency))) - 1];
@@ -124,11 +120,11 @@ public class MessagingServiceTest
         ConcurrentHashMap<String, Timer> dcLatency = MessagingService.instance().metrics.dcLatency;
         dcLatency.clear();
 
-        long now = System.currentTimeMillis();
+        long now = ApproximateTime.currentTimeMillis();
         long sentAt = now - latency;
 
         assertNull(dcLatency.get("datacenter1"));
-        addDCLatency(sentAt);
+        addDCLatency(sentAt, now);
         assertNull(dcLatency.get("datacenter1"));
     }
 
@@ -221,7 +217,7 @@ public class MessagingServiceTest
         assertFalse(MockBackPressureStrategy.applied);
     }
 
-    private static void addDCLatency(long sentAt) throws IOException
+    private static void addDCLatency(long sentAt, long nowTime) throws IOException
     {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try (DataOutputStreamPlus out = new WrappedDataOutputStreamPlus(baos))
@@ -229,7 +225,7 @@ public class MessagingServiceTest
             out.writeInt((int) sentAt);
         }
         DataInputStreamPlus in = new DataInputStreamPlus(new ByteArrayInputStream(baos.toByteArray()));
-        MessageIn.readConstructionTime(InetAddress.getLocalHost(), in);
+        MessageIn.readConstructionTime(InetAddress.getLocalHost(), in, nowTime);
     }
 
     public static class MockBackPressureStrategy implements BackPressureStrategy<MockBackPressureStrategy.MockBackPressureState>