Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
package com.cloudbees.jenkins.plugins.amazonecs;


import com.amazonaws.services.ecs.model.TaskDefinition;
import hudson.model.labels.LabelAtom;
import hudson.slaves.NodeProvisioner.PlannedNode;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertTrue;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.jvnet.hudson.test.JenkinsRule;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.jvnet.hudson.test.junit.jupiter.WithJenkins;

import java.util.ArrayList;
import java.util.Collection;
Expand All @@ -21,17 +15,26 @@
import java.util.List;
import java.util.UUID;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class ECSCloudTest {
@WithJenkins
class ECSCloudTest {

@Rule
public JenkinsRule j = new JenkinsRule();
private JenkinsRule j;

@Test
public void provision_oneagent() throws Exception {
@BeforeEach
void setUp(JenkinsRule rule) {
j = rule;
}

@Test
void provision_oneagent() {
List<ECSTaskTemplate> templates = new ArrayList<>();
templates.add(getTaskTemplate("my-template","label"));
templates.add(getTaskTemplate("my-template", "label"));

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setTemplates(templates);
Expand All @@ -42,12 +45,11 @@ public void provision_oneagent() throws Exception {
sut.setRetentionTimeout(5);
Collection<PlannedNode> plannedNodes = sut.provision(new LabelAtom("label"), 1);

Assert.assertEquals(1, plannedNodes.size());
assertEquals(1, plannedNodes.size());
}

@Test
public void canProvision_unknownLabel_returnsFalse() throws Exception {

void canProvision_unknownLabel_returnsFalse() {
List<ECSTaskTemplate> templates = new ArrayList<>();

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
Expand All @@ -60,31 +62,31 @@ public void canProvision_unknownLabel_returnsFalse() throws Exception {

boolean canProvision = sut.canProvision(new LabelAtom("unknownLabel"));

Assert.assertFalse(canProvision);
assertFalse(canProvision);
}

@Test
public void testFindParentTemplateWhenNoneSupplied() throws Exception {
void testFindParentTemplateWhenNoneSupplied() {
ECSService ecsService = mock(ECSService.class);
ECSCloud cloud = new ECSCloud("mycloud","mycluster",ecsService);
ECSCloud cloud = new ECSCloud("mycloud", "mycluster", ecsService);

cloud.addTemplate(getTaskTemplate());

ECSTaskTemplate expected = getTaskTemplate("template-name", "template-default");
cloud.addTemplate(expected);
ECSTaskTemplate actual = cloud.findParentTemplate(null);
assertEquals(expected,actual);
assertEquals(expected, actual);

expected = getTaskTemplate("template-default", "");
cloud.setTemplates(Collections.singletonList(expected));
cloud.addTemplate(getTaskTemplate());
actual = cloud.findParentTemplate(null);
assertEquals(expected,actual);
assertEquals(expected, actual);

}

@Test
public void addDynamicTemplateRegistersTemplate() throws Exception {
void addDynamicTemplateRegistersTemplate() {
ECSService ecsService = mock(ECSService.class);

ECSCloud cloud = new ECSCloud("mycloud", "mycluster", ecsService);
Expand All @@ -96,13 +98,13 @@ public void addDynamicTemplateRegistersTemplate() throws Exception {
when(ecsService.registerTemplate(cloud.getDisplayName(), tt)).thenReturn(expectedTask);

String actual = cloud.addDynamicTemplate(tt).getDynamicTaskDefinition();
assertEquals(expected,actual);
assertEquals(expected, actual);
}

@Test
public void provisionByLabelInheritFromUsingListOfLabels() throws Exception {
ECSCloud cloud = new ECSCloud("mycloud", "", "", "mycluster");
ECSTaskTemplate expected = getTaskTemplate("somename","label1 label2 label3");
void provisionByLabelInheritFromUsingListOfLabels() {
ECSCloud cloud = new ECSCloud("mycloud", "", "", "mycluster");
ECSTaskTemplate expected = getTaskTemplate("somename", "label1 label2 label3");

List<ECSTaskTemplate> currentTemplates = cloud.getTemplates();
List<ECSTaskTemplate> newTemplates = new LinkedList<>(currentTemplates);
Expand All @@ -112,38 +114,36 @@ public void provisionByLabelInheritFromUsingListOfLabels() throws Exception {
}

@Test
public void removeJunkTemplateProducesNoError() throws Exception {
void removeJunkTemplateProducesNoError() {
ECSService ecsService = mock(ECSService.class);
ECSCloud cloud = new ECSCloud("mycloud", "mycluster", ecsService);
cloud.setRegionName("us-east-1");
cloud.removeDynamicTemplate(getTaskTemplate(Math.random() + "", "label1, label2, label3"));
}

@Test
public void isAllowedOverride_empty_returnsFalse() throws Exception {

void isAllowedOverride_empty_returnsFalse() {
ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");

Assert.assertFalse(sut.isAllowedOverride("label"));
assertFalse(sut.isAllowedOverride("label"));
}

@Test
public void isAllowedOverride_label_returnsTrue() throws Exception {

void isAllowedOverride_label_returnsTrue() {
ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setAllowedOverrides("label");

Assert.assertTrue(sut.isAllowedOverride("label"));
assertTrue(sut.isAllowedOverride("label"));
}

@Test
public void getProvisioningCapacity_returnsZeroWhenMaxAgentsReached () {
void getProvisioningCapacity_returnsZeroWhenMaxAgentsReached() {
int onlineExecutors = 4;
int connectingExecutors = 1;
int excessWorkload = 5;

List<ECSTaskTemplate> templates = new ArrayList<>();
templates.add(getTaskTemplate("my-template","label"));
templates.add(getTaskTemplate("my-template", "label"));

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setMaxAgents(5);
Expand All @@ -155,17 +155,17 @@ public void getProvisioningCapacity_returnsZeroWhenMaxAgentsReached () {
sut.setRetentionTimeout(5);

int provisioningCapacity = sut.getProvisioningCapacity(excessWorkload, onlineExecutors, connectingExecutors);
Assert.assertEquals(0, provisioningCapacity);
assertEquals(0, provisioningCapacity);
}

@Test
public void getProvisioningCapacity_returnsRemainingMaxAgentsWhenWorkloadExceedsAvailability () {
void getProvisioningCapacity_returnsRemainingMaxAgentsWhenWorkloadExceedsAvailability() {
int onlineExecutors = 7;
int connectingExecutors = 4;
int excessWorkload = 8;

List<ECSTaskTemplate> templates = new ArrayList<>();
templates.add(getTaskTemplate("my-template","label"));
templates.add(getTaskTemplate("my-template", "label"));

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setMaxAgents(14);
Expand All @@ -177,17 +177,17 @@ public void getProvisioningCapacity_returnsRemainingMaxAgentsWhenWorkloadExceeds
sut.setRetentionTimeout(5);

int provisioningCapacity = sut.getProvisioningCapacity(excessWorkload, onlineExecutors, connectingExecutors);
Assert.assertEquals(3, provisioningCapacity);
assertEquals(3, provisioningCapacity);
}

@Test
public void getProvisioningCapacity_returnsExcessWorkloadWithoutMaxAgents () {
void getProvisioningCapacity_returnsExcessWorkloadWithoutMaxAgents() {
int onlineExecutors = 6;
int connectingExecutors = 2;
int excessWorkload = 10;

List<ECSTaskTemplate> templates = new ArrayList<>();
templates.add(getTaskTemplate("my-template","label"));
templates.add(getTaskTemplate("my-template", "label"));

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setMaxAgents(0);
Expand All @@ -198,17 +198,17 @@ public void getProvisioningCapacity_returnsExcessWorkloadWithoutMaxAgents () {
sut.setRetentionTimeout(5);

int provisioningCapacity = sut.getProvisioningCapacity(excessWorkload, onlineExecutors, connectingExecutors);
Assert.assertEquals(10, provisioningCapacity);
assertEquals(10, provisioningCapacity);
}

@Test
public void getProvisioningCapacity_returnsExcessWorkloadWhenWorkloadDoesNotExceedAvailability () {
void getProvisioningCapacity_returnsExcessWorkloadWhenWorkloadDoesNotExceedAvailability() {
int onlineExecutors = 3;
int connectingExecutors = 2;
int excessWorkload = 4;

List<ECSTaskTemplate> templates = new ArrayList<>();
templates.add(getTaskTemplate("my-template","label"));
templates.add(getTaskTemplate("my-template", "label"));

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setMaxAgents(10);
Expand All @@ -219,17 +219,17 @@ public void getProvisioningCapacity_returnsExcessWorkloadWhenWorkloadDoesNotExce
sut.setRetentionTimeout(5);

int provisioningCapacity = sut.getProvisioningCapacity(excessWorkload, onlineExecutors, connectingExecutors);
Assert.assertEquals(4, provisioningCapacity);
assertEquals(4, provisioningCapacity);
}

@Test
public void getProvisioningCapacity_returnsZeroWhenOverflowEncountered () {
void getProvisioningCapacity_returnsZeroWhenOverflowEncountered() {
int onlineExecutors = Integer.MAX_VALUE;
int connectingExecutors = 1;
int excessWorkload = 1;

List<ECSTaskTemplate> templates = new ArrayList<>();
templates.add(getTaskTemplate("my-template","label"));
templates.add(getTaskTemplate("my-template", "label"));

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setMaxAgents(10);
Expand All @@ -240,17 +240,17 @@ public void getProvisioningCapacity_returnsZeroWhenOverflowEncountered () {
sut.setRetentionTimeout(5);

int provisioningCapacity = sut.getProvisioningCapacity(excessWorkload, onlineExecutors, connectingExecutors);
Assert.assertEquals(0, provisioningCapacity);
assertEquals(0, provisioningCapacity);
}

@Test
public void getProvisioningCapacity_returnsZeroWhenCurrentAgentsGreaterThanMaxAgents () {
void getProvisioningCapacity_returnsZeroWhenCurrentAgentsGreaterThanMaxAgents() {
int onlineExecutors = 5;
int connectingExecutors = 5;
int excessWorkload = 1;

List<ECSTaskTemplate> templates = new ArrayList<>();
templates.add(getTaskTemplate("my-template","label"));
templates.add(getTaskTemplate("my-template", "label"));

ECSCloud sut = new ECSCloud("mycloud", "", "", "mycluster");
sut.setMaxAgents(1);
Expand All @@ -261,12 +261,13 @@ public void getProvisioningCapacity_returnsZeroWhenCurrentAgentsGreaterThanMaxAg
sut.setRetentionTimeout(5);

int provisioningCapacity = sut.getProvisioningCapacity(excessWorkload, onlineExecutors, connectingExecutors);
Assert.assertEquals(0, provisioningCapacity);
assertEquals(0, provisioningCapacity);
}

private ECSTaskTemplate getTaskTemplate() {
return getTaskTemplate(UUID.randomUUID().toString(),UUID.randomUUID().toString());
return getTaskTemplate(UUID.randomUUID().toString(), UUID.randomUUID().toString());
}

private ECSTaskTemplate getTaskTemplate(String templateName, String label) {
return new ECSTaskTemplate(
templateName,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
package com.cloudbees.jenkins.plugins.amazonecs;

import hudson.slaves.OfflineCause;
import org.junit.Rule;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.junit.jupiter.WithJenkins;
import org.mockito.Mockito;

import static org.mockito.Mockito.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

public class ECSComputerListenerTest {
@Rule
public JenkinsRule j = new JenkinsRule();
@WithJenkins
class ECSComputerListenerTest {

private JenkinsRule j;

@BeforeEach
void setUp(JenkinsRule rule) {
j = rule;
}

@Test
public void unsurvivable_node_is_terminated_when_computer_is_offline() throws Exception {
void unsurvivable_node_is_terminated_when_computer_is_offline() throws Exception {
ECSComputer computer = mock(ECSComputer.class);
OfflineCause cause = mock(OfflineCause.class);
ECSSlave node = mock(ECSSlave.class);
Expand All @@ -27,7 +37,7 @@ public void unsurvivable_node_is_terminated_when_computer_is_offline() throws Ex
}

@Test
public void survivable_node_is_not_terminated_when_computer_is_offline() throws Exception {
void survivable_node_is_not_terminated_when_computer_is_offline() throws Exception {
ECSComputer computer = mock(ECSComputer.class);
OfflineCause cause = mock(OfflineCause.class);
ECSSlave node = mock(ECSSlave.class);
Expand Down
Loading