fix: leader module now uses 0.2.x parent and is java7 compatible.

This commit is contained in:
Ioannis Canellos
2018-11-19 11:21:46 +02:00
parent af4c15ce49
commit 5346b484f0
9 changed files with 28 additions and 40 deletions

View File

@@ -21,7 +21,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes</artifactId>
<version>0.3.0.BUILD-SNAPSHOT</version>
<version>0.2.1.BUILD-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-kubernetes-leader</artifactId>

View File

@@ -61,7 +61,12 @@ public class LeaderInitiator implements SmartLifecycle {
@Override
public void stop() {
if (isRunning()) {
scheduledExecutorService.execute(() -> leadershipController.revoke(candidate));
scheduledExecutorService.execute(new Runnable() {
@Override
public void run() {
leadershipController.revoke(candidate);
}
});
scheduledExecutorService.shutdown();
isRunning = false;
}

View File

@@ -16,11 +16,11 @@
package org.springframework.cloud.kubernetes.leader;
import java.util.List;
import java.util.Map;
import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
import io.fabric8.kubernetes.api.model.ObjectMeta;
import io.fabric8.kubernetes.api.model.Pod;
import io.fabric8.kubernetes.client.KubernetesClient;
@@ -47,15 +47,17 @@ public class LeaderKubernetesHelper {
}
public boolean podExists(String id) {
return kubernetesClient.pods()
List<Pod> pods = kubernetesClient.pods()
.inNamespace(leaderProperties.getNamespace(kubernetesClient.getNamespace()))
.withLabels(leaderProperties.getLabels())
.list()
.getItems()
.stream()
.map(Pod::getMetadata)
.map(ObjectMeta::getName)
.anyMatch(name -> name.equals(id));
.getItems();
for (Pod pod : pods ) {
if (pod.getMetadata().getName().equals(id)) {
return true;
}
}
return false;
}
public ConfigMap getConfigMap() {

View File

@@ -56,8 +56,7 @@ public class LeadershipController {
* If requested candidate is already a leader, simply {@code true} will be returned.
* <p>
* If for some reason leadership cannot be acquired (communication failure or there is another leader),
* {@code false} will be returned and {@link LeaderEventPublisher#publishOnFailedToAcquire(Object, Context, String)}
* event will be emitted.
* {@code false} will be returned event will be emitted.
*
* @param candidate
* @return {@code true} if at the end of execution candidate is a leader and {@code false} if it isn't.
@@ -86,7 +85,6 @@ public class LeadershipController {
candidate.getId(), e.getMessage());
}
handleOnFailed(candidate);
return false;
}
@@ -191,12 +189,7 @@ public class LeadershipController {
candidate.onRevoked(context);
}
private void handleOnFailed(Candidate candidate) {
if (leaderProperties.isPublishFailedEvents()) {
Context context = new LeaderContext(candidate, this);
leaderEventPublisher.publishOnFailedToAcquire(this, context, candidate.getRole());
}
}
private Map<String, String> getLeaderData(Candidate candidate) {
String leaderKey = leaderProperties.getLeaderIdPrefix() + candidate.getRole();

View File

@@ -4,7 +4,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.integration.leader.Candidate;
import static org.assertj.core.api.Assertions.assertThat;

View File

@@ -8,13 +8,13 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.integration.leader.Candidate;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

View File

@@ -24,11 +24,11 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.runners.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyMap;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.anyMap;
import static org.mockito.Mockito.verify;
/**

View File

@@ -4,7 +4,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.runners.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;

View File

@@ -10,14 +10,14 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.integration.leader.Candidate;
import org.springframework.integration.leader.event.LeaderEventPublisher;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -127,10 +127,8 @@ public class LeadershipControllerTest {
assertThat(result).isFalse();
verify(mockKubernetesHelper, times(0)).createConfigMap(any());
verify(mockKubernetesHelper, times(0)).updateConfigMapEntry(any(), any());
verifyPublishOnFailedToAcquire();
}
@Test
public void shouldFailToAcquireBecauseOfException() {
given(mockLeaderProperties.isPublishFailedEvents()).willReturn(true);
doThrow(new KubernetesClientException("Test exception")).when(mockKubernetesHelper).createConfigMap(any());
@@ -138,7 +136,6 @@ public class LeadershipControllerTest {
boolean result = leadershipController.acquire(mockCandidate);
assertThat(result).isFalse();
verifyPublishOnFailedToAcquire();
}
@Test
@@ -148,7 +145,6 @@ public class LeadershipControllerTest {
boolean result = leadershipController.acquire(mockCandidate);
assertThat(result).isFalse();
verify(mockLeaderEventPublisher, times(0)).publishOnFailedToAcquire(any(), any(), any());
}
@Test
@@ -278,12 +274,4 @@ public class LeadershipControllerTest {
verify(mockCandidate).onRevoked(leaderContextCaptor.getValue());
}
public void verifyPublishOnFailedToAcquire() {
ArgumentCaptor<LeaderContext> leaderContextCaptor = ArgumentCaptor.forClass(LeaderContext.class);
verify(mockLeaderEventPublisher).publishOnFailedToAcquire(eq(leadershipController),
leaderContextCaptor.capture(), eq(ROLE));
LeaderContext expectedLeaderContext = new LeaderContext(mockCandidate, leadershipController);
assertThat(leaderContextCaptor.getValue()).isEqualToComparingFieldByField(expectedLeaderContext);
}
}