📍Use lombok, reformat, and optimize the code (#1560)
* Use lombok, reformat, and optimize the code * Fix merge conflicts and some sonar issues Co-authored-by: va1m <va1m@email.com>
This commit is contained in:
@ -25,16 +25,14 @@ package com.iluwatar.leaderelection;
|
||||
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* Abstract class of all the instance implementation classes.
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractInstance implements Instance, Runnable {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractInstance.class);
|
||||
|
||||
protected static final int HEARTBEAT_INTERVAL = 5000;
|
||||
private static final String INSTANCE = "Instance ";
|
||||
|
||||
|
@ -23,55 +23,23 @@
|
||||
|
||||
package com.iluwatar.leaderelection;
|
||||
|
||||
import java.util.Objects;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* Message used to transport data between instances.
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@EqualsAndHashCode
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Message {
|
||||
|
||||
private MessageType type;
|
||||
|
||||
private String content;
|
||||
|
||||
public Message() {
|
||||
}
|
||||
|
||||
public Message(MessageType type, String content) {
|
||||
this.type = type;
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public MessageType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(MessageType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
var message = (Message) o;
|
||||
return type == message.type && Objects.equals(content, message.content);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(type, content);
|
||||
}
|
||||
}
|
||||
|
@ -26,8 +26,7 @@ package com.iluwatar.leaderelection.bully;
|
||||
import com.iluwatar.leaderelection.AbstractInstance;
|
||||
import com.iluwatar.leaderelection.Message;
|
||||
import com.iluwatar.leaderelection.MessageManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* Impelemetation with bully algorithm. Each instance should have a sequential id and is able to
|
||||
@ -38,9 +37,8 @@ import org.slf4j.LoggerFactory;
|
||||
* it will return an alive message (in this sample return true) and then send election message with
|
||||
* its ID. If not, the original instance will send leader message to all the other instances.
|
||||
*/
|
||||
@Slf4j
|
||||
public class BullyInstance extends AbstractInstance {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(BullyInstance.class);
|
||||
private static final String INSTANCE = "Instance ";
|
||||
|
||||
/**
|
||||
|
@ -27,10 +27,8 @@ import com.iluwatar.leaderelection.AbstractInstance;
|
||||
import com.iluwatar.leaderelection.Message;
|
||||
import com.iluwatar.leaderelection.MessageManager;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* Implementation with token ring algorithm. The instances in the system are organized as a ring.
|
||||
@ -43,9 +41,8 @@ import org.slf4j.LoggerFactory;
|
||||
* smallest ID to be the new leader, and then send a leader message to other instances to inform the
|
||||
* result.
|
||||
*/
|
||||
@Slf4j
|
||||
public class RingInstance extends AbstractInstance {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(RingInstance.class);
|
||||
private static final String INSTANCE = "Instance ";
|
||||
|
||||
/**
|
||||
|
@ -23,23 +23,23 @@
|
||||
|
||||
package com.iluwatar.leaderelection;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Message test case.
|
||||
*/
|
||||
public class MessageTest {
|
||||
|
||||
@Test
|
||||
public void testGetType() {
|
||||
void testGetType() {
|
||||
var message = new Message(MessageType.HEARTBEAT, "");
|
||||
assertEquals(MessageType.HEARTBEAT, message.getType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetContent() {
|
||||
void testGetContent() {
|
||||
var content = "test";
|
||||
var message = new Message(MessageType.HEARTBEAT, content);
|
||||
assertEquals(content, message.getContent());
|
||||
|
@ -23,14 +23,17 @@
|
||||
|
||||
package com.iluwatar.leaderelection.bully;
|
||||
|
||||
import com.iluwatar.leaderelection.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import com.iluwatar.leaderelection.AbstractInstance;
|
||||
import com.iluwatar.leaderelection.Instance;
|
||||
import com.iluwatar.leaderelection.Message;
|
||||
import com.iluwatar.leaderelection.MessageType;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* BullyMessageManager unit test.
|
||||
@ -38,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
public class BullyMessageManagerTest {
|
||||
|
||||
@Test
|
||||
public void testSendHeartbeatMessage() {
|
||||
void testSendHeartbeatMessage() {
|
||||
var instance1 = new BullyInstance(null, 1, 1);
|
||||
Map<Integer, Instance> instanceMap = Map.of(1, instance1);
|
||||
var messageManager = new BullyMessageManager(instanceMap);
|
||||
@ -46,7 +49,7 @@ public class BullyMessageManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendElectionMessageNotAccepted() {
|
||||
void testSendElectionMessageNotAccepted() {
|
||||
try {
|
||||
var instance1 = new BullyInstance(null, 1, 1);
|
||||
var instance2 = new BullyInstance(null, 1, 2);
|
||||
@ -71,7 +74,7 @@ public class BullyMessageManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testElectionMessageAccepted() {
|
||||
void testElectionMessageAccepted() {
|
||||
var instance1 = new BullyInstance(null, 1, 1);
|
||||
var instance2 = new BullyInstance(null, 1, 2);
|
||||
var instance3 = new BullyInstance(null, 1, 3);
|
||||
@ -84,7 +87,7 @@ public class BullyMessageManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendLeaderMessage() {
|
||||
void testSendLeaderMessage() {
|
||||
try {
|
||||
var instance1 = new BullyInstance(null, 1, 1);
|
||||
var instance2 = new BullyInstance(null, 1, 2);
|
||||
@ -108,7 +111,7 @@ public class BullyMessageManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendHeartbeatInvokeMessage() {
|
||||
void testSendHeartbeatInvokeMessage() {
|
||||
try {
|
||||
var instance1 = new BullyInstance(null, 1, 1);
|
||||
var instance2 = new BullyInstance(null, 1, 2);
|
||||
|
@ -23,15 +23,15 @@
|
||||
|
||||
package com.iluwatar.leaderelection.bully;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
import com.iluwatar.leaderelection.AbstractInstance;
|
||||
import com.iluwatar.leaderelection.Message;
|
||||
import com.iluwatar.leaderelection.MessageType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Queue;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* BullyInstance unit test.
|
||||
@ -39,7 +39,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
public class BullyinstanceTest {
|
||||
|
||||
@Test
|
||||
public void testOnMessage() {
|
||||
void testOnMessage() {
|
||||
try {
|
||||
final var bullyInstance = new BullyInstance(null, 1, 1);
|
||||
var bullyMessage = new Message(MessageType.HEARTBEAT, "");
|
||||
@ -55,7 +55,7 @@ public class BullyinstanceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsAlive() {
|
||||
void testIsAlive() {
|
||||
try {
|
||||
final var bullyInstance = new BullyInstance(null, 1, 1);
|
||||
var instanceClass = AbstractInstance.class;
|
||||
@ -69,7 +69,7 @@ public class BullyinstanceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAlive() {
|
||||
void testSetAlive() {
|
||||
final var bullyInstance = new BullyInstance(null, 1, 1);
|
||||
bullyInstance.setAlive(false);
|
||||
assertFalse(bullyInstance.isAlive());
|
||||
|
@ -23,15 +23,15 @@
|
||||
|
||||
package com.iluwatar.leaderelection.ring;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
import com.iluwatar.leaderelection.AbstractInstance;
|
||||
import com.iluwatar.leaderelection.Message;
|
||||
import com.iluwatar.leaderelection.MessageType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Queue;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* RingInstance unit test.
|
||||
@ -39,7 +39,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
public class RingInstanceTest {
|
||||
|
||||
@Test
|
||||
public void testOnMessage() {
|
||||
void testOnMessage() {
|
||||
try {
|
||||
final var ringInstance = new RingInstance(null, 1, 1);
|
||||
var ringMessage = new Message(MessageType.HEARTBEAT, "");
|
||||
@ -54,7 +54,7 @@ public class RingInstanceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsAlive() {
|
||||
void testIsAlive() {
|
||||
try {
|
||||
final var ringInstance = new RingInstance(null, 1, 1);
|
||||
var ringInstanceClass = AbstractInstance.class;
|
||||
@ -68,7 +68,7 @@ public class RingInstanceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAlive() {
|
||||
void testSetAlive() {
|
||||
final var ringInstance = new RingInstance(null, 1, 1);
|
||||
ringInstance.setAlive(false);
|
||||
assertFalse(ringInstance.isAlive());
|
||||
|
@ -23,14 +23,17 @@
|
||||
|
||||
package com.iluwatar.leaderelection.ring;
|
||||
|
||||
import com.iluwatar.leaderelection.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import com.iluwatar.leaderelection.AbstractInstance;
|
||||
import com.iluwatar.leaderelection.Instance;
|
||||
import com.iluwatar.leaderelection.Message;
|
||||
import com.iluwatar.leaderelection.MessageType;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* RingMessageManager unit test.
|
||||
@ -38,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
public class RingMessageManagerTest {
|
||||
|
||||
@Test
|
||||
public void testSendHeartbeatMessage() {
|
||||
void testSendHeartbeatMessage() {
|
||||
var instance1 = new RingInstance(null, 1, 1);
|
||||
Map<Integer, Instance> instanceMap = Map.of(1, instance1);
|
||||
var messageManager = new RingMessageManager(instanceMap);
|
||||
@ -46,7 +49,7 @@ public class RingMessageManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendElectionMessage() {
|
||||
void testSendElectionMessage() {
|
||||
try {
|
||||
var instance1 = new RingInstance(null, 1, 1);
|
||||
var instance2 = new RingInstance(null, 1, 2);
|
||||
@ -68,7 +71,7 @@ public class RingMessageManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendLeaderMessage() {
|
||||
void testSendLeaderMessage() {
|
||||
try {
|
||||
var instance1 = new RingInstance(null, 1, 1);
|
||||
var instance2 = new RingInstance(null, 1, 2);
|
||||
@ -89,7 +92,7 @@ public class RingMessageManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendHeartbeatInvokeMessage() {
|
||||
void testSendHeartbeatInvokeMessage() {
|
||||
try {
|
||||
var instance1 = new RingInstance(null, 1, 1);
|
||||
var instance2 = new RingInstance(null, 1, 2);
|
||||
|
Reference in New Issue
Block a user