You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by wf...@apache.org on 2014/07/29 19:33:48 UTC
git commit: Add test coverage for Mname.
Repository: incubator-aurora
Updated Branches:
refs/heads/master b8dd4a1d6 -> db2173e04
Add test coverage for Mname.
Reviewed at https://reviews.apache.org/r/24042/
Project: http://git-wip-us.apache.org/repos/asf/incubator-aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-aurora/commit/db2173e0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-aurora/tree/db2173e0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-aurora/diff/db2173e0
Branch: refs/heads/master
Commit: db2173e0477eee533d6899b503dbdd51a70c6762
Parents: b8dd4a1
Author: Bill Farner <wf...@apache.org>
Authored: Tue Jul 29 10:31:11 2014 -0700
Committer: Bill Farner <wf...@apache.org>
Committed: Tue Jul 29 10:31:11 2014 -0700
----------------------------------------------------------------------
.../org/apache/aurora/scheduler/http/Mname.java | 11 --
.../apache/aurora/scheduler/http/MnameTest.java | 129 ++++++++++++++++++-
2 files changed, 125 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/db2173e0/src/main/java/org/apache/aurora/scheduler/http/Mname.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/Mname.java b/src/main/java/org/apache/aurora/scheduler/http/Mname.java
index dc8967f..883f954 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/Mname.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/Mname.java
@@ -25,9 +25,7 @@ import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriBuilder;
@@ -71,7 +69,6 @@ public class Mname {
}
@GET
- @Produces(MediaType.TEXT_HTML)
public Response getUsage() {
return Response
.status(Status.BAD_REQUEST)
@@ -81,7 +78,6 @@ public class Mname {
@GET
@Path("/{role}/{env}/{job}/{instance}/{forward:.+}")
- @Produces(MediaType.TEXT_HTML)
public Response getWithForwardRequest(
@PathParam("role") String role,
@PathParam("env") String env,
@@ -95,7 +91,6 @@ public class Mname {
@PUT
@Path("/{role}/{env}/{job}/{instance}/{forward:.+}")
- @Produces(MediaType.TEXT_HTML)
public Response putWithForwardRequest(
@PathParam("role") String role,
@PathParam("env") String env,
@@ -109,7 +104,6 @@ public class Mname {
@POST
@Path("/{role}/{env}/{job}/{instance}/{forward:.+}")
- @Produces(MediaType.TEXT_HTML)
public Response postWithForwardRequest(
@PathParam("role") String role,
@PathParam("env") String env,
@@ -123,7 +117,6 @@ public class Mname {
@DELETE
@Path("/{role}/{env}/{job}/{instance}/{forward:.+}")
- @Produces(MediaType.TEXT_HTML)
public Response deleteWithForwardRequest(
@PathParam("role") String role,
@PathParam("env") String env,
@@ -137,7 +130,6 @@ public class Mname {
@GET
@Path("/{role}/{env}/{job}/{instance}")
- @Produces(MediaType.TEXT_HTML)
public Response get(
@PathParam("role") String role,
@PathParam("env") String env,
@@ -150,7 +142,6 @@ public class Mname {
@PUT
@Path("/{role}/{env}/{job}/{instance}")
- @Produces(MediaType.TEXT_HTML)
public Response put(
@PathParam("role") String role,
@PathParam("env") String env,
@@ -163,7 +154,6 @@ public class Mname {
@POST
@Path("/{role}/{env}/{job}/{instance}")
- @Produces(MediaType.TEXT_HTML)
public Response post(
@PathParam("role") String role,
@PathParam("env") String env,
@@ -176,7 +166,6 @@ public class Mname {
@DELETE
@Path("/{role}/{env}/{job}/{instance}")
- @Produces(MediaType.TEXT_HTML)
public Response delete(
@PathParam("role") String role,
@PathParam("env") String env,
http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/db2173e0/src/test/java/org/apache/aurora/scheduler/http/MnameTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/http/MnameTest.java b/src/test/java/org/apache/aurora/scheduler/http/MnameTest.java
index 6971454..b7b6a3e 100644
--- a/src/test/java/org/apache/aurora/scheduler/http/MnameTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/http/MnameTest.java
@@ -14,23 +14,144 @@
package org.apache.aurora.scheduler.http;
import java.util.Map;
+import java.util.Set;
+
+import javax.ws.rs.HttpMethod;
+import javax.ws.rs.core.HttpHeaders;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.ClientResponse.Status;
import org.apache.aurora.gen.AssignedTask;
+import org.apache.aurora.gen.ScheduleStatus;
+import org.apache.aurora.gen.ScheduledTask;
+import org.apache.aurora.scheduler.base.JobKeys;
+import org.apache.aurora.scheduler.base.Query;
import org.apache.aurora.scheduler.storage.entities.IAssignedTask;
+import org.apache.aurora.scheduler.storage.entities.IScheduledTask;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
-public class MnameTest {
+public class MnameTest extends ServletModuleTest {
+
+ private static final String SLAVE_HOST = "fakehost";
+ private static final int PORT = 50000;
+ private static final String APP_URI = "http://" + SLAVE_HOST + ":" + PORT + "/";
+
+ private static final IScheduledTask TASK = IScheduledTask.build(
+ new ScheduledTask()
+ .setStatus(ScheduleStatus.RUNNING)
+ .setAssignedTask(
+ new AssignedTask()
+ .setSlaveHost("fakehost")
+ .setAssignedPorts(ImmutableMap.of("http", 50000))));
+ private static final Query.Builder TASK_QUERY =
+ Query.instanceScoped(JobKeys.from("myrole", "test", "myjob"), 1).active();
+
+ @Test
+ public void testGetUsage() {
+ replayAndStart();
+
+ ClientResponse response = getRequestBuilder("/mname")
+ .get(ClientResponse.class);
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testHttpMethods() {
+ storage.expectOperations();
+
+ Set<String> methods =
+ ImmutableSet.of(HttpMethod.GET, HttpMethod.PUT, HttpMethod.POST, HttpMethod.DELETE);
+ storage.expectTaskFetch(TASK_QUERY, TASK).times(methods.size());
+
+ replayAndStart();
+
+ for (String method : methods) {
+ ClientResponse response = getRequestBuilder("/mname/myrole/test/myjob/1")
+ .method(method, ClientResponse.class);
+ assertEquals(Status.TEMPORARY_REDIRECT.getStatusCode(), response.getStatus());
+ assertEquals(APP_URI, response.getHeaders().getFirst(HttpHeaders.LOCATION));
+ }
+ }
+
+ @Test
+ public void testForwardPathAndQuery() {
+ storage.expectOperations();
+
+ Set<String> methods =
+ ImmutableSet.of(HttpMethod.GET, HttpMethod.PUT, HttpMethod.POST, HttpMethod.DELETE);
+ storage.expectTaskFetch(TASK_QUERY, TASK).times(methods.size());
+
+ replayAndStart();
+
+ String pathAndQuery = "path?query=2";
+
+ for (String method : methods) {
+ ClientResponse response = getRequestBuilder("/mname/myrole/test/myjob/1/" + pathAndQuery)
+ .method(method, ClientResponse.class);
+ assertEquals(Status.TEMPORARY_REDIRECT.getStatusCode(), response.getStatus());
+ assertEquals(APP_URI + pathAndQuery, response.getHeaders().getFirst(HttpHeaders.LOCATION));
+ }
+ }
+
+ @Test
+ public void testInstanceAbsent() {
+ storage.expectOperations();
+
+ storage.expectTaskFetch(TASK_QUERY);
+
+ replayAndStart();
+
+ ClientResponse response = getRequestBuilder("/mname/myrole/test/myjob/1")
+ .get(ClientResponse.class);
+ assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testInstanceNotRunning() {
+ storage.expectOperations();
+
+ IScheduledTask pending =
+ IScheduledTask.build(TASK.newBuilder().setStatus(ScheduleStatus.PENDING));
+
+ storage.expectTaskFetch(TASK_QUERY, pending);
+
+ replayAndStart();
+
+ ClientResponse response = getRequestBuilder("/mname/myrole/test/myjob/1")
+ .get(ClientResponse.class);
+ assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testInstanceNoHttp() {
+ storage.expectOperations();
+
+ ScheduledTask builder = TASK.newBuilder();
+ builder.getAssignedTask().setAssignedPorts(ImmutableMap.of("telnet", 80));
+ IScheduledTask noHttp = IScheduledTask.build(builder);
+
+ storage.expectTaskFetch(TASK_QUERY, noHttp);
+
+ replayAndStart();
+
+ ClientResponse response = getRequestBuilder("/mname/myrole/test/myjob/1")
+ .get(ClientResponse.class);
+ assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
+ }
@Test
public void testRedirectPort() {
- assertEquals(Optional.absent(), getRedirectPort(null));
- assertEquals(Optional.absent(), getRedirectPort(ImmutableMap.<String, Integer>of()));
- assertEquals(Optional.absent(), getRedirectPort(ImmutableMap.of("thrift", 5)));
+ replayAndStart();
+
+ assertEquals(Optional.<Integer>absent(), getRedirectPort(null));
+ assertEquals(Optional.<Integer>absent(), getRedirectPort(ImmutableMap.<String, Integer>of()));
+ assertEquals(Optional.<Integer>absent(), getRedirectPort(ImmutableMap.of("thrift", 5)));
assertEquals(Optional.of(5), getRedirectPort(ImmutableMap.of("health", 5, "http", 6)));
assertEquals(Optional.of(6), getRedirectPort(ImmutableMap.of("http", 6)));
assertEquals(Optional.of(7), getRedirectPort(ImmutableMap.of("HTTP", 7)));