Skip to content

Commit

Permalink
Rename OctopusDeployment(s) to Deployment(s)
Browse files Browse the repository at this point in the history
Now that the old Deployment(s) classes got renamed to Environment(s)
  • Loading branch information
matt-richardson committed Mar 9, 2016
1 parent cdd65df commit bf9783c
Show file tree
Hide file tree
Showing 9 changed files with 127 additions and 129 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,18 @@
import java.util.Map;

public class ApiDeploymentsResponse {
public final OctopusDeployments octopusDeployments;
public final Deployments deployments;
public String nextLink;

public ApiDeploymentsResponse(String deploymentsResponse) throws URISyntaxException, IOException, ParseException, java.text.ParseException, ProjectNotFoundException, com.mjrichardson.teamCity.buildTriggers.ProjectNotFoundException, InvalidOctopusUrlException, InvalidOctopusApiKeyException, UnexpectedResponseCodeException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
this.octopusDeployments = new OctopusDeployments();
this.deployments = new Deployments();

JSONParser parser = new JSONParser();
Map response = (Map) parser.parse(deploymentsResponse);

List items = (List) response.get("Items");
for (Object item : items) {
octopusDeployments.add(OctopusDeployment.Parse((Map)item));
deployments.add(Deployment.Parse((Map)item));
}

Object nextPage = ((Map) response.get("Links")).get("Page.Next");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,26 @@

import java.util.Map;

//todo: rename
public class OctopusDeployment {
public class Deployment {
final String id;
public final String environmentId;
public final OctopusDate createdDate;
public String taskLink;

OctopusDeployment(String id, String environmentId, OctopusDate createdDate, String taskLink) {
Deployment(String id, String environmentId, OctopusDate createdDate, String taskLink) {
this.id = id;
this.environmentId = environmentId;
this.createdDate = createdDate;
this.taskLink = taskLink;
}

public static OctopusDeployment Parse(Map item) {
public static Deployment Parse(Map item) {
String id = item.get("Id").toString();
String environmentId = item.get("EnvironmentId").toString();
OctopusDate createdDate = OctopusDate.Parse(item.get("Created").toString());
Map links = (Map) (item.get("Links"));
String taskLink = links.get("Task").toString();

return new OctopusDeployment(id, environmentId, createdDate, taskLink);
return new Deployment(id, environmentId, createdDate, taskLink);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,15 @@ private Environments getEnvironmentsFromApi(String projectId, Environments oldEn
String deploymentsResponse = contentProvider.getContent(apiRootResponse.deploymentsApiLink + "?Projects=" + projectId);
ApiDeploymentsResponse response = new ApiDeploymentsResponse(deploymentsResponse);
Environments result = new Environments();
for (OctopusDeployment item : response.octopusDeployments) {
for (Deployment item : response.deployments) {
if (ProcessDeployment(contentProvider, oldEnvironments, result, item))
return result;
}

while (response.nextLink != null) {
deploymentsResponse = contentProvider.getContent(response.nextLink);
response = new ApiDeploymentsResponse(deploymentsResponse);
for (OctopusDeployment item : response.octopusDeployments) {
for (Deployment item : response.deployments) {
if (ProcessDeployment(contentProvider, oldEnvironments, result, item))
return result;
}
Expand All @@ -107,25 +107,25 @@ private Environments getEnvironmentsFromApi(String projectId, Environments oldEn
return result;
}

private boolean ProcessDeployment(HttpContentProvider contentProvider, Environments oldEnvironments, Environments result, OctopusDeployment octopusDeployment) throws IOException, UnexpectedResponseCodeException, InvalidOctopusApiKeyException, InvalidOctopusUrlException, URISyntaxException, jetbrains.buildServer.serverSide.ProjectNotFoundException, ParseException, com.mjrichardson.teamCity.buildTriggers.ProjectNotFoundException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
Environment lastKnownEnvironmentState = oldEnvironments.getEnvironment(octopusDeployment.environmentId);
LOG.debug("Found deployment to environment '" + octopusDeployment.environmentId + "' created at '" + octopusDeployment.createdDate + "'");
private boolean ProcessDeployment(HttpContentProvider contentProvider, Environments oldEnvironments, Environments result, Deployment deployment) throws IOException, UnexpectedResponseCodeException, InvalidOctopusApiKeyException, InvalidOctopusUrlException, URISyntaxException, jetbrains.buildServer.serverSide.ProjectNotFoundException, ParseException, com.mjrichardson.teamCity.buildTriggers.ProjectNotFoundException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
Environment lastKnownEnvironmentState = oldEnvironments.getEnvironment(deployment.environmentId);
LOG.debug("Found deployment to environment '" + deployment.environmentId + "' created at '" + deployment.createdDate + "'");

if (lastKnownEnvironmentState.isLatestDeploymentOlderThan(octopusDeployment.createdDate)) {
LOG.debug("Deployment to environment '" + octopusDeployment.environmentId + "' created at '" + octopusDeployment.createdDate + "' was newer than the last known deployment to this environment");
if (lastKnownEnvironmentState.isLatestDeploymentOlderThan(deployment.createdDate)) {
LOG.debug("Deployment to environment '" + deployment.environmentId + "' created at '" + deployment.createdDate + "' was newer than the last known deployment to this environment");

String taskResponse = contentProvider.getContent(octopusDeployment.taskLink);
String taskResponse = contentProvider.getContent(deployment.taskLink);
ApiTaskResponse task = new ApiTaskResponse(taskResponse);
LOG.debug("Deployment to environment '" + octopusDeployment.environmentId + "' created at '" + octopusDeployment.createdDate + "': isCompleted = '" + task.isCompleted + "', finishedSuccessfully = '" + task.finishedSuccessfully + "'");
LOG.debug("Deployment to environment '" + deployment.environmentId + "' created at '" + deployment.createdDate + "': isCompleted = '" + task.isCompleted + "', finishedSuccessfully = '" + task.finishedSuccessfully + "'");

result.addOrUpdate(octopusDeployment.environmentId, octopusDeployment.createdDate, task.isCompleted, task.finishedSuccessfully);
result.addOrUpdate(deployment.environmentId, deployment.createdDate, task.isCompleted, task.finishedSuccessfully);

if (result.haveAllEnvironmentsHadAtLeastOneSuccessfulDeployment()) {
LOG.debug("All deployments have finished successfully - no need to keep iterating");
return true;
}
} else {
LOG.debug("Deployment to environment '" + octopusDeployment.environmentId + "' created at '" + octopusDeployment.createdDate + "' was older than the last known deployment to this environment");
LOG.debug("Deployment to environment '" + deployment.environmentId + "' created at '" + deployment.createdDate + "' was older than the last known deployment to this environment");
}
return false;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.mjrichardson.teamCity.buildTriggers;

import java.util.ArrayList;
import java.util.Iterator;

//todo: move under 'Model' namespace?
public class Deployments implements Iterable<Deployment> {
private ArrayList<Deployment> statusMap;

public Deployments() {
this.statusMap = new ArrayList<>();
}

public void add(Deployment deployment) {
if (!contains(deployment.environmentId))
statusMap.add(deployment);
}

public boolean contains(String octopusDeploymentId) {
for (Deployment deployment : statusMap) {
if (deployment.id.equals(octopusDeploymentId))
return true;
}
return false;
}

@Override
public Iterator<Deployment> iterator() {
return statusMap.iterator();
}

public int size() {
return statusMap.size();
}

public Deployment[] toArray() {
return statusMap.toArray(new Deployment[0]);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ public void can_parse_valid_response_without_next_link() throws ParseException,
String json = ResourceHandler.getResource("api/deployments/Projects=Projects-25");
ApiDeploymentsResponse sut = new ApiDeploymentsResponse(json);
Assert.assertEquals(sut.nextLink, null);
Assert.assertEquals(sut.octopusDeployments.size(), 1);
OctopusDeployment[] octopusDeployments = sut.octopusDeployments.toArray();
Assert.assertEquals(octopusDeployments[0].id, "Deployments-82");
Assert.assertEquals(octopusDeployments[0].environmentId, "Environments-1");
Assert.assertEquals(octopusDeployments[0].createdDate, new OctopusDate(2016,1,21,13,32,59,991));
Assert.assertEquals(octopusDeployments[0].taskLink, "/api/tasks/ServerTasks-272");
Assert.assertEquals(sut.deployments.size(), 1);
Deployment[] deployments = sut.deployments.toArray();
Assert.assertEquals(deployments[0].id, "Deployments-82");
Assert.assertEquals(deployments[0].environmentId, "Environments-1");
Assert.assertEquals(deployments[0].createdDate, new OctopusDate(2016,1,21,13,32,59,991));
Assert.assertEquals(deployments[0].taskLink, "/api/tasks/ServerTasks-272");
}

public void can_parse_valid_response_with_next_link() throws IOException, ParseException, NoSuchAlgorithmException, URISyntaxException, KeyStoreException, java.text.ParseException, InvalidOctopusUrlException, UnexpectedResponseCodeException, InvalidOctopusApiKeyException, ProjectNotFoundException, KeyManagementException {
String json = ResourceHandler.getResource("api/deployments/Projects=Projects-121");
ApiDeploymentsResponse sut = new ApiDeploymentsResponse(json);
Assert.assertEquals(sut.nextLink, "/api/deployments?skip=30&projects=Projects-121");
Assert.assertEquals(sut.octopusDeployments.size(), 30);
Assert.assertEquals(sut.deployments.size(), 30);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import java.util.HashMap;

@Test
public class OctopusDeploymentTest {
public class DeploymentTest {
public void can_parse_valid_map() {
HashMap<String, Object> linksMap = new HashMap<>();
linksMap.put("Task", "/api/tasks/ServerTasks-770");
Expand All @@ -17,7 +17,7 @@ public void can_parse_valid_map() {
map.put("Created", "2016-03-09T05:29:31.768+00:00");
map.put("Links", linksMap);

OctopusDeployment result = OctopusDeployment.Parse(map);
Deployment result = Deployment.Parse(map);
Assert.assertEquals(result.id, "Deployments-211");
Assert.assertEquals(result.environmentId, "Environments-1");
Assert.assertEquals(result.createdDate, new OctopusDate(2016, 3, 9, 5, 29, 31, 768));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.mjrichardson.teamCity.buildTriggers;

import org.testng.Assert;
import org.testng.annotations.Test;

import java.util.HashMap;

@Test
public class DeploymentsTest {
private Deployment getOctopusDeployment(String id, String environmentId, OctopusDate created, String serverTaskLink) {
HashMap<String, Object> linksMap = new HashMap<>();
linksMap.put("Task", "/api/tasks/ServerTasks-770");

HashMap<String, Object> map = new HashMap<>();
map.put("Id", id);
map.put("EnvironmentId", "Environments-1");
map.put("Created", "2016-03-09T05:29:31.768+00:00");
map.put("Links", linksMap);

return Deployment.Parse(map);
}

public void contains_returns_true_when_octopus_deployment_with_specified_id_exists() throws Exception {
Deployments deployments = new Deployments();
deployments.add(getOctopusDeployment("Deployments-1", "Environments-1", new OctopusDate(2016, 3, 8), "/api/ServerTasks/Task-771"));
deployments.add(getOctopusDeployment("Deployments-2", "Environments-1", new OctopusDate(2016, 3, 9), "/api/ServerTasks/Task-772"));
Assert.assertTrue(deployments.contains("Deployments-2"));
Assert.assertEquals(deployments.size(), 2);
}

public void contains_returns_false_when_octopus_deployment_with_specified_id_does_not_exist() throws Exception {
Deployments deployments = new Deployments();
deployments.add(getOctopusDeployment("Deployments-1", "Environments-1", new OctopusDate(2016, 3, 8), "/api/ServerTasks/Task-771"));
deployments.add(getOctopusDeployment("Deployments-2", "Environments-1", new OctopusDate(2016, 3, 9), "/api/ServerTasks/Task-772"));
Assert.assertFalse(deployments.contains("Deployments-3"));
}

public void can_iterate_through_results() {
Deployments deployments = new Deployments();
deployments.add(getOctopusDeployment("Deployments-1", "Environments-1", new OctopusDate(2016, 3, 8), "/api/ServerTasks/Task-771"));
deployments.add(getOctopusDeployment("Deployments-2", "Environments-1", new OctopusDate(2016, 3, 9), "/api/ServerTasks/Task-772"));

Assert.assertEquals(deployments.size(), 2);

Integer counter = 1;
for (Deployment octopusdeployment : deployments) {
Assert.assertEquals(octopusdeployment.id, "Deployments-" + counter++);
}
}

public void to_array_returns_all_items_as_array() {
Deployments deployments = new Deployments();
deployments.add(getOctopusDeployment("Deployments-1", "Environments-1", new OctopusDate(2016, 3, 8), "/api/ServerTasks/Task-771"));
deployments.add(getOctopusDeployment("Deployments-2", "Environments-1", new OctopusDate(2016, 3, 9), "/api/ServerTasks/Task-772"));

Deployment[] array = deployments.toArray();
Assert.assertEquals(array.length, 2);
Assert.assertEquals(array[0].id, "Deployments-1");
Assert.assertEquals(array[1].id, "Deployments-2");
}
}

This file was deleted.

0 comments on commit bf9783c

Please sign in to comment.