You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2021/04/19 13:47:54 UTC
[cassandra] 06/07: Update tests
This is an automated email from the ASF dual-hosted git repository.
brandonwilliams pushed a commit to branch CASSANDRA-16588
in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit a46407d8d72b22d8abaae6c2e97c679a03e1c7c5
Author: Brandon Williams <br...@apache.org>
AuthorDate: Fri Apr 16 14:35:03 2021 -0500
Update tests
---
.../org/apache/cassandra/gms/ShadowRoundTest.java | 67 +++++++++++++++++++++-
1 file changed, 64 insertions(+), 3 deletions(-)
diff --git a/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java b/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
index 5ce72b5..880c0cf 100644
--- a/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
+++ b/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
@@ -19,9 +19,16 @@
package org.apache.cassandra.gms;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.cassandra.dht.IPartitioner;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -128,17 +135,71 @@ public class ShadowRoundTest
{
while (!Gossiper.instance.isEnabled()) ;
}
+ InetAddress junkaddr;
+ try
+ {
+ junkaddr = InetAddress.getByName("1.1.1.1");
+ }
+ catch (UnknownHostException e)
+ {
+ throw new RuntimeException(e);
+ }
+
+ HeartBeatState hb = new HeartBeatState(123, 456);
+ EndpointState state = new EndpointState(hb);
+ List<GossipDigest> gDigests = new ArrayList<GossipDigest>();
+ gDigests.add(new GossipDigest(FBUtilities.getBroadcastAddress(), hb.getGeneration(), hb.getHeartBeatVersion()));
+ gDigests.add(new GossipDigest(junkaddr, hb.getGeneration(), hb.getHeartBeatVersion()));
+ Map<InetAddress, EndpointState> smap = new HashMap<InetAddress, EndpointState>()
+ {
+ {
+ put(FBUtilities.getBroadcastAddress(), state);
+ put(junkaddr, state);
+ }
+ };
+ GossipDigestAck payload = new GossipDigestAck(gDigests, smap);
+
+ logger.debug("Simulating bad digest ACK reply");
+ return MessageIn.create(to, payload, Collections.emptyMap(), MessagingService.Verb.GOSSIP_DIGEST_ACK, MessagingService.current_version);
+ }, 1);
+
+ System.setProperty(Config.PROPERTY_PREFIX + "auto_bootstrap", "false");
+ try
+ {
+ StorageService.instance.initServer();
+ }
+ catch (Exception e)
+ {
+ assertEquals("Unable to gossip with any peers", e.getMessage());
+ }
+ }
+ @Test
+ public void testPreviouslyAssassinatedInShadow()
+ {
+ final AtomicBoolean ackSend = new AtomicBoolean(false);
+ MockMessagingSpy spySyn = MockMessagingService.when(verb(MessagingService.Verb.GOSSIP_DIGEST_SYN))
+ .respondN((msgOut, to) ->
+ {
+ // ACK with self assassinated in shadow round
+ if (!ackSend.compareAndSet(false, true))
+ {
+ while (!Gossiper.instance.isEnabled()) ;
+ }
HeartBeatState hb = new HeartBeatState(123, 456);
EndpointState state = new EndpointState(hb);
+ state.addApplicationState(ApplicationState.STATUS,
+ new VersionedValue.VersionedValueFactory(DatabaseDescriptor.getPartitioner()).left(
+ Collections.singletonList(DatabaseDescriptor.getPartitioner().getRandomToken()), 1L));
GossipDigestAck payload = new GossipDigestAck(
- Collections.singletonList(new GossipDigest(FBUtilities.getBroadcastAddress(), hb.getGeneration(), hb.getHeartBeatVersion())),
- Collections.singletonMap(FBUtilities.getBroadcastAddress(), state));
+ Collections.singletonList(new GossipDigest(FBUtilities.getBroadcastAddress(), hb.getGeneration(), hb.getHeartBeatVersion())),
+ Collections.singletonMap(FBUtilities.getBroadcastAddress(), state));
- logger.warn("Simulating digest ACK reply, {}", payload);
+ logger.debug("Simulating bad digest ACK reply");
return MessageIn.create(to, payload, Collections.emptyMap(), MessagingService.Verb.GOSSIP_DIGEST_ACK, MessagingService.current_version);
}, 1);
+
System.setProperty(Config.PROPERTY_PREFIX + "auto_bootstrap", "false");
try
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org