package org.jgroups.tests; import java.util.Arrays; import java.util.List; import org.jgroups.Global; import org.jgroups.JChannel; import org.jgroups.protocols.raft.ELECTION; import org.jgroups.protocols.raft.RAFT; import org.jgroups.protocols.raft.REDIRECT; import org.jgroups.raft.blocks.ReplicatedStateMachine; import org.jgroups.tests.VoteTest.DummyStateMachine; import org.jgroups.util.Util; import org.testng.annotations.Test; @Test(groups=Global.FUNCTIONAL,singleThreaded=true) public class ReplicatedStateMachineTest { protected static final String CLUSTER=ReplicatedStateMachineTest.class.getSimpleName(); protected static final List<String> mbrs=Arrays.asList("A", "B", "C", "D"); public void testEquals() throws Exception { try(JChannel channelA = create("A"); JChannel channelB = create("B") ) { ReplicatedStateMachine<String, String> one = new ReplicatedStateMachine<>(channelA); ReplicatedStateMachine<String, String> other = new ReplicatedStateMachine<>(channelB); assert one.equals(one); assert one.equals(other); assert other.equals(one); assert !one.equals(null); assert !one.equals(new Object()); } } @SuppressWarnings("resource") protected JChannel create(String name) throws Exception { RAFT raft=new RAFT().members(mbrs).raftId(name).stateMachine(new DummyStateMachine()) .logClass("org.jgroups.protocols.raft.InMemoryLog").logName(name + "-" + CLUSTER); JChannel ch=new JChannel(Util.getTestStack(new ELECTION(), raft, new REDIRECT())).name(name); ch.connect(CLUSTER); return ch; } }