/* * Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved. * * Licensed 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 com.hazelcast.instance; import com.hazelcast.config.Config; import com.hazelcast.nio.Address; import com.hazelcast.test.HazelcastParallelClassRunner; import com.hazelcast.test.HazelcastTestSupport; import com.hazelcast.test.annotation.ParallelTest; import com.hazelcast.test.annotation.QuickTest; import com.hazelcast.version.MemberVersion; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import java.util.HashMap; import java.util.Map; import static com.hazelcast.util.UuidUtil.newUnsecureUuidString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @RunWith(HazelcastParallelClassRunner.class) @Category({QuickTest.class, ParallelTest.class}) public class MemberImplTest extends HazelcastTestSupport { private static HazelcastInstanceImpl hazelcastInstance; private static Address address; @BeforeClass public static void setUp() throws Exception { hazelcastInstance = new HazelcastInstanceImpl("test", new Config(), new DefaultNodeContext()); address = new Address("127.0.0.1", 5701); } @AfterClass public static void tearDown() { hazelcastInstance.shutdown(); } @Test public void testConstructor_withLocalMember_isTrue() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertBasicMemberImplFields(member); assertTrue(member.localMember()); } @Test public void testConstructor_withLocalMember_isFalse() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), false); assertBasicMemberImplFields(member); assertFalse(member.localMember()); } @Test public void testConstructor_withLiteMember_isTrue() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true, newUnsecureUuidString(), null, true); assertBasicMemberImplFields(member); assertTrue(member.localMember()); assertTrue(member.isLiteMember()); } @Test public void testConstructor_withLiteMember_isFalse() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true, newUnsecureUuidString(), null, false); assertBasicMemberImplFields(member); assertTrue(member.localMember()); assertFalse(member.isLiteMember()); } @Test public void testConstructor_withHazelcastInstance() throws Exception { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true, "uuid2342", null, false, hazelcastInstance); assertBasicMemberImplFields(member); assertTrue(member.localMember()); assertEquals("uuid2342", member.getUuid()); } @Test public void testConstructor_withAttributes() throws Exception { Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put("key1", "value"); attributes.put("key2", 12345); MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true, "uuid2342", attributes, false, hazelcastInstance); assertBasicMemberImplFields(member); assertTrue(member.localMember()); assertEquals("uuid2342", member.getUuid()); assertEquals("value", member.getAttribute("key1")); assertEquals(12345, member.getAttribute("key2")); assertFalse(member.isLiteMember()); } @Test public void testConstructor_withMemberImpl() { MemberImpl member = new MemberImpl(new MemberImpl(address, MemberVersion.of("3.8.0"), true)); assertBasicMemberImplFields(member); assertTrue(member.localMember()); } @Test public void testSetHazelcastInstance() throws Exception { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getLogger()); member.setHazelcastInstance(hazelcastInstance); assertNotNull(member.getLogger()); } @Test public void testStringAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getStringAttribute("stringKey")); member.setStringAttribute("stringKey", "stringValue"); assertEquals("stringValue", member.getStringAttribute("stringKey")); } @Test public void testBooleanAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getBooleanAttribute("booleanKeyTrue")); assertNull(member.getBooleanAttribute("booleanKeyFalse")); member.setBooleanAttribute("booleanKeyTrue", true); assertTrue(member.getBooleanAttribute("booleanKeyTrue")); member.setBooleanAttribute("booleanKeyFalse", false); assertFalse(member.getBooleanAttribute("booleanKeyFalse")); } @Test public void testByteAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getByteAttribute("byteKey")); Byte value = Byte.MAX_VALUE; member.setByteAttribute("byteKey", value); assertEquals(value, member.getByteAttribute("byteKey")); } @Test public void testShortAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getShortAttribute("shortKey")); Short value = Short.MAX_VALUE; member.setShortAttribute("shortKey", value); assertEquals(value, member.getShortAttribute("shortKey")); } @Test public void testIntAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getIntAttribute("intKey")); Integer value = Integer.MAX_VALUE; member.setIntAttribute("intKey", value); assertEquals(value, member.getIntAttribute("intKey")); } @Test public void testLongAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getLongAttribute("longKey")); Long value = Long.MAX_VALUE; member.setLongAttribute("longKey", value); assertEquals(value, member.getLongAttribute("longKey")); } @Test public void testFloatAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getFloatAttribute("floatKey")); Float value = Float.MAX_VALUE; member.setFloatAttribute("floatKey", value); assertEquals(value, member.getFloatAttribute("floatKey"), 0.001); } @Test public void testDoubleAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getDoubleAttribute("doubleKey")); Double value = Double.MAX_VALUE; member.setDoubleAttribute("doubleKey", value); assertEquals(value, member.getDoubleAttribute("doubleKey"), 0.001); } @Test public void testRemoveAttribute() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true); assertNull(member.getStringAttribute("removeKey")); member.setStringAttribute("removeKey", "removeValue"); assertEquals("removeValue", member.getStringAttribute("removeKey")); member.removeAttribute("removeKey"); assertNull(member.getStringAttribute("removeKey")); } @Test public void testRemoveAttribute_withHazelcastInstance() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true, "uuid", null, false, hazelcastInstance); member.removeAttribute("removeKeyWithInstance"); assertNull(member.getStringAttribute("removeKeyWithInstance")); } @Test public void testSetAttribute_withHazelcastInstance() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), true, "uuid", null, false, hazelcastInstance); member.setStringAttribute("setKeyWithInstance", "setValueWithInstance"); assertEquals("setValueWithInstance", member.getStringAttribute("setKeyWithInstance")); } @Test(expected = UnsupportedOperationException.class) public void testRemoveAttribute_onRemoteMember() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), false); member.removeAttribute("remoteMemberRemove"); } @Test(expected = UnsupportedOperationException.class) public void testSetAttribute_onRemoteMember() { MemberImpl member = new MemberImpl(address, MemberVersion.of("3.8.0"), false); member.setStringAttribute("remoteMemberSet", "wontWork"); } private static void assertBasicMemberImplFields(MemberImpl member) { assertEquals(address, member.getAddress()); assertEquals(5701, member.getPort()); assertEquals("127.0.0.1", member.getInetAddress().getHostAddress()); assertTrue(member.getFactoryId() > -1); assertTrue(member.getId() > -1); assertNotNull(member.getVersion()); assertEquals(3, member.getVersion().getMajor()); assertEquals(8, member.getVersion().getMinor()); assertEquals(0, member.getVersion().getPatch()); } }