@Test public void testGetServicesFromNonexistantClusterReturns404() throws Exception { assertResponseStatus(doGetExternalAPI("/clusters/567/services", USER1_HEADERS), HttpResponseStatus.NOT_FOUND); }
@Test public void testGetNonexistantClusterReturns404() throws Exception { assertResponseStatus(doGetExternalAPI("/clusters/567", USER1_HEADERS), HttpResponseStatus.NOT_FOUND); }
@Test public void testGetClusterConfig() throws Exception { JsonObject config = new JsonObject(); config.addProperty("key1", "val1"); JsonArray arrayVal = new JsonArray(); arrayVal.add(new JsonPrimitive("arrayval1")); arrayVal.add(new JsonPrimitive("arrayval2")); config.add("key2", arrayVal); JsonObject objVal = new JsonObject(); objVal.addProperty("okey1", "oval1"); objVal.addProperty("okey2", "oval2"); config.add("key3", objVal); Cluster cluster = Cluster.builder() .setID("123") .setAccount(USER1_ACCOUNT) .setName("get-config-test") .setClusterTemplate(Entities.ClusterTemplateExample.HDFS) .setConfig(config) .build(); clusterStoreService.getView(cluster.getAccount()).writeCluster(cluster); HttpResponse response = doGetExternalAPI("/clusters/" + cluster.getId() + "/config", USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); Reader reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8); JsonObject actual = gson.fromJson(reader, JsonObject.class); Assert.assertEquals(config, actual); }
protected static void assertStatus(String clusterId, Cluster.Status status, ClusterJob.Status actionStatus, ClusterAction action, int totalSteps, int completeSteps, Header[] userHeaders) throws Exception { HttpResponse response = doGetExternalAPI(String.format("/clusters/%s/status", clusterId), userHeaders); assertResponseStatus(response, HttpResponseStatus.OK); InputStreamReader reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8); ClusterStatusResponse statusResponse = gson.fromJson(reader, ClusterStatusResponse.class); Assert.assertEquals(clusterId, statusResponse.getClusterid()); Assert.assertEquals(totalSteps, statusResponse.getStepstotal()); Assert.assertEquals(completeSteps, statusResponse.getStepscompleted()); Assert.assertEquals(actionStatus, statusResponse.getActionstatus()); Assert.assertEquals(action, statusResponse.getAction()); Assert.assertEquals(status, statusResponse.getStatus()); }
response = doGetExternalAPI("/clusters/" + clusterId + "/plans/" + cluster.getLatestJobId(), USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); Reader reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8); response = doGetExternalAPI("/clusters/" + clusterId + "/plans", USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8);
@Test public void testPutClusterConfig() throws Exception { JsonObject originalConfig = new JsonObject(); originalConfig.addProperty("key1", "val1"); Cluster cluster = Cluster.builder() .setID("123") .setAccount(USER1_ACCOUNT) .setName("get-config-test") .setProvider(Entities.ProviderExample.JOYENT) .setClusterTemplate(Entities.ClusterTemplateExample.HDFS) .setConfig(originalConfig) .build(); cluster.setStatus(Cluster.Status.ACTIVE); clusterStoreService.getView(cluster.getAccount()).writeCluster(cluster); HttpResponse response = doGetExternalAPI("/clusters/123/config", USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); Reader reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8); JsonObject actual = gson.fromJson(reader, JsonObject.class); Assert.assertEquals(originalConfig, actual); JsonObject newConfig = new JsonObject(); newConfig.addProperty("key2", "val2"); ClusterConfigureRequest configRequest = new ClusterConfigureRequest(null, newConfig, false); assertResponseStatus(doPutExternalAPI("/clusters/123/config", gson.toJson(configRequest), USER1_HEADERS), HttpResponseStatus.OK); response = doGetExternalAPI("/clusters/123/config", USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8); actual = gson.fromJson(reader, JsonObject.class); Assert.assertEquals(newConfig, actual); }
response = doGetExternalAPI("/clusters", USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); InputStreamReader reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8); response = doGetExternalAPI("/clusters", USER2_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8); response = doGetExternalAPI("/clusters", ADMIN_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8);
@Test public void testInvalidGetClusterConfigRequests() throws Exception { Cluster cluster = Cluster.builder() .setID("123") .setAccount(USER1_ACCOUNT) .setName("get-config-test") .setClusterTemplate(Entities.ClusterTemplateExample.HDFS) .build(); clusterStoreService.getView(cluster.getAccount()).writeCluster(cluster); assertResponseStatus(doGetExternalAPI("/clusters/" + cluster.getId() + "9/config", USER1_HEADERS), HttpResponseStatus.NOT_FOUND); assertResponseStatus(doGetExternalAPI("/clusters/" + cluster.getId() + "/config", USER2_HEADERS), HttpResponseStatus.NOT_FOUND); }
@Test public void testGetClusterNotOwnedByUserReturns404() throws Exception { ClusterCreateRequest clusterCreateRequest = ClusterCreateRequest.builder() .setName("cluster1") .setClusterTemplateName(reactorTemplate.getName()) .setNumMachines(5) .build(); HttpResponse response = doPostExternalAPI("/clusters", gson.toJson(clusterCreateRequest), USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); String clusterId = getIdFromResponse(response); assertResponseStatus(doGetExternalAPI("/clusters/" + clusterId, USER2_HEADERS), HttpResponseStatus.NOT_FOUND); }
@Test public void testAdminCanGetClustersOwnedByOthers() throws Exception { ClusterCreateRequest clusterCreateRequest = ClusterCreateRequest.builder() .setName("cluster1") .setClusterTemplateName(reactorTemplate.getName()) .setNumMachines(5) .build(); HttpResponse response = doPostExternalAPI("/clusters", gson.toJson(clusterCreateRequest), USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); String clusterId = getIdFromResponse(response); assertResponseStatus(doGetExternalAPI("/clusters/" + clusterId, ADMIN_HEADERS), HttpResponseStatus.OK); }
response = doGetExternalAPI("/clusters", USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); InputStreamReader reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8);
EntityUtils.toString(doGetExternalAPI("/clusters/" + clusterId, USER1_HEADERS).getEntity()), JsonObject.class); Assert.assertNotNull(restCluster.get("nodes").getAsJsonArray().get(0).getAsJsonObject().get("id").getAsString()); response = doGetExternalAPI(String.format("/clusters/%s/status","567"), USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.NOT_FOUND);
HttpResponse response = doGetExternalAPI("/clusters/" + cluster.getId() + "/services", USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); Reader reader = new InputStreamReader(response.getEntity().getContent(), Charsets.UTF_8);
ClusterAction.CLUSTER_CREATE, 3, 0); response = doGetExternalAPI("/clusters/" + clusterId, USER1_HEADERS); JsonObject clusterJson = gson.fromJson(EntityUtils.toString(response.getEntity()), JsonObject.class); Assert.assertEquals("Aborted by user.", clusterJson.get("message").getAsString());
ClusterAction.CLUSTER_CREATE, 3, 0); response = doGetExternalAPI("/clusters/" + clusterId, USER1_HEADERS); JsonObject clusterJson = gson.fromJson(EntityUtils.toString(response.getEntity()), JsonObject.class); Assert.assertEquals("Aborted by user.", clusterJson.get("message").getAsString());
ClusterAction.CLUSTER_CREATE, 3, 0); response = doGetExternalAPI("/clusters/" + clusterId, USER1_HEADERS); JsonObject clusterJson = gson.fromJson(EntityUtils.toString(response.getEntity()), JsonObject.class); Assert.assertEquals("Aborted by user.", clusterJson.get("message").getAsString());
response = doGetExternalAPI(String.format("/clusters/%s/status","567"), USER1_HEADERS); assertResponseStatus(response, HttpResponseStatus.NOT_FOUND);