/hazelcast/src/test/java/com/hazelcast/impl/RedoNoneMemberTest.java

https://bitbucket.org/gabral6_gmailcom/hazelcast · Java · 197 lines · 159 code · 23 blank · 15 comment · 0 complexity · c15703d0067b941fd96d2ab27ce0e891 MD5 · raw file

  1. /*
  2. * Copyright (c) 2008-2013, Hazelcast, Inc. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.hazelcast.impl;
  17. import com.hazelcast.config.Config;
  18. import com.hazelcast.core.Hazelcast;
  19. import com.hazelcast.core.HazelcastInstance;
  20. import com.hazelcast.nio.Address;
  21. import org.junit.After;
  22. import org.junit.BeforeClass;
  23. import org.junit.Ignore;
  24. import org.junit.Test;
  25. import org.junit.runner.RunWith;
  26. import java.util.LinkedList;
  27. import java.util.List;
  28. import static junit.framework.Assert.assertEquals;
  29. @RunWith(com.hazelcast.util.RandomBlockJUnit4ClassRunner.class)
  30. public class RedoNoneMemberTest extends RedoTestService {
  31. @BeforeClass
  32. public static void init() throws Exception {
  33. System.setProperty(GroupProperties.PROP_WAIT_SECONDS_BEFORE_JOIN, "1");
  34. Hazelcast.shutdownAll();
  35. }
  36. @After
  37. public void cleanup() throws Exception {
  38. Hazelcast.shutdownAll();
  39. }
  40. @Test(timeout = 100000)
  41. public void testMultiCallToNoneMember() throws Exception {
  42. Config config = new Config();
  43. config.setProperty(GroupProperties.PROP_PARTITION_TABLE_SEND_INTERVAL, "2");
  44. final HazelcastInstance h1 = Hazelcast.newHazelcastInstance(config);
  45. RedoTestService.BeforeAfterTester t = new BeforeAfterTester(new NoneMemberBehavior(h1), new MultiCallBuilder(h1));
  46. t.run();
  47. }
  48. @Test(timeout = 100000)
  49. public void testMapRemoteTargetNotMember() {
  50. Config config = new Config();
  51. config.setProperty(GroupProperties.PROP_PARTITION_TABLE_SEND_INTERVAL, "2");
  52. final HazelcastInstance h1 = Hazelcast.newHazelcastInstance(config);
  53. final HazelcastInstance h2 = Hazelcast.newHazelcastInstance(config);
  54. new RunAfterTester(new TargetNotMemberBehavior(h1, h2), new KeyCallBuilder(h1)).run();
  55. new RunAfterTester(new TargetNotMemberBehavior(h2, h1), new KeyCallBuilder(h2)).run();
  56. }
  57. class TargetNotMemberBehavior extends BeforeAfterBehavior {
  58. final HazelcastInstance caller;
  59. final HazelcastInstance target;
  60. final Node callerNode;
  61. final Node targetNode;
  62. TargetNotMemberBehavior(HazelcastInstance caller, HazelcastInstance target) {
  63. this.caller = caller;
  64. this.target = target;
  65. this.callerNode = getNode(caller);
  66. this.targetNode = getNode(target);
  67. }
  68. @Override
  69. void before() throws Exception {
  70. callerNode.clusterManager.enqueueAndWait(new Processable() {
  71. public void process() {
  72. callerNode.clusterManager.removeMember((MemberImpl) target.getCluster().getLocalMember());
  73. assertEquals(1, callerNode.clusterManager.lsMembers.size());
  74. }
  75. }, 5);
  76. }
  77. @Override
  78. void after() {
  79. callerNode.clusterManager.enqueueAndWait(new Processable() {
  80. public void process() {
  81. MemberImpl secondMember = new MemberImpl(((MemberImpl) target.getCluster().getLocalMember()).getAddress(), false);
  82. callerNode.clusterManager.addMember(secondMember);
  83. assertEquals(2, callerNode.clusterManager.lsMembers.size());
  84. }
  85. }, 5);
  86. }
  87. }
  88. @Test(timeout = 100000)
  89. public void testQueueRemoteCallerNoneMember() {
  90. Config config = new Config();
  91. config.setProperty(GroupProperties.PROP_PARTITION_TABLE_SEND_INTERVAL, "2");
  92. final HazelcastInstance h1 = Hazelcast.newHazelcastInstance(config);
  93. final HazelcastInstance h2 = Hazelcast.newHazelcastInstance(config);
  94. CallBuilder calls = new QueueCallBuilder(h2);
  95. final Node node1 = getNode(h1);
  96. BeforeAfterBehavior behavior = new BeforeAfterBehavior() {
  97. public void before() throws Exception {
  98. node1.clusterManager.enqueueAndWait(new Processable() {
  99. public void process() {
  100. node1.clusterManager.removeMember((MemberImpl) h2.getCluster().getLocalMember());
  101. assertEquals(1, node1.clusterManager.lsMembers.size());
  102. }
  103. }, 5);
  104. }
  105. public void after() {
  106. node1.clusterManager.enqueueAndWait(new Processable() {
  107. public void process() {
  108. MemberImpl secondMember = new MemberImpl(((MemberImpl) h2.getCluster().getLocalMember()).getAddress(), false);
  109. node1.clusterManager.addMember(secondMember);
  110. assertEquals(2, node1.clusterManager.lsMembers.size());
  111. }
  112. }, 5);
  113. }
  114. public void destroy() {
  115. }
  116. };
  117. BeforeAfterTester t = new BeforeAfterTester(behavior, calls);
  118. t.run();
  119. }
  120. @Test(timeout = 100000)
  121. public void testQueueRemoteTargetNoneMember() {
  122. Config config = new Config();
  123. config.setProperty(GroupProperties.PROP_PARTITION_TABLE_SEND_INTERVAL, "2");
  124. final HazelcastInstance h1 = Hazelcast.newHazelcastInstance(config);
  125. final HazelcastInstance h2 = Hazelcast.newHazelcastInstance(config);
  126. CallBuilder calls = new QueueCallBuilder(h2);
  127. final Node node2 = getNode(h2);
  128. BeforeAfterBehavior behavior = new BeforeAfterBehavior() {
  129. public void before() throws Exception {
  130. node2.clusterManager.enqueueAndWait(new Processable() {
  131. public void process() {
  132. node2.clusterManager.removeMember((MemberImpl) h1.getCluster().getLocalMember());
  133. assertEquals(1, node2.clusterManager.lsMembers.size());
  134. }
  135. }, 5);
  136. }
  137. public void after() {
  138. node2.clusterManager.enqueueAndWait(new Processable() {
  139. public void process() {
  140. MemberImpl secondMember = new MemberImpl(((MemberImpl) h1.getCluster().getLocalMember()).getAddress(), false);
  141. node2.clusterManager.addMember(secondMember);
  142. assertEquals(2, node2.clusterManager.lsMembers.size());
  143. }
  144. }, 5);
  145. }
  146. public void destroy() {
  147. }
  148. };
  149. BeforeAfterTester t = new BeforeAfterTester(behavior, calls);
  150. t.run();
  151. }
  152. @Ignore
  153. class NoneMemberBehavior extends BeforeAfterBehavior {
  154. final HazelcastInstance h;
  155. final Node node;
  156. NoneMemberBehavior(HazelcastInstance h) {
  157. this.h = h;
  158. this.node = getNode(h);
  159. }
  160. @Override
  161. void before() throws Exception {
  162. List<MemberImpl> lsNew = new LinkedList<MemberImpl>();
  163. lsNew.add((MemberImpl) h.getCluster().getLocalMember());
  164. lsNew.add(new MemberImpl(new Address("127.0.0.1", 5702), false));
  165. node.getClusterImpl().setMembers(lsNew);
  166. }
  167. @Override
  168. void after() {
  169. List<MemberImpl> lsNew = new LinkedList<MemberImpl>();
  170. lsNew.add((MemberImpl) h.getCluster().getLocalMember());
  171. node.getClusterImpl().setMembers(lsNew);
  172. }
  173. }
  174. }