Search in sources :

Example 91 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class XSiteResource method updateTakeOffline.

private CompletionStage<RestResponse> updateTakeOffline(RestRequest request) {
    NettyRestResponse.Builder responseBuilder = new NettyRestResponse.Builder().status(NO_CONTENT);
    String site = request.variables().get("site");
    Optional<XSiteAdminOperations> xsiteAdminOpt = getXSiteAdminAndCheckSite(request, responseBuilder);
    if (!xsiteAdminOpt.isPresent()) {
        return completedFuture(responseBuilder.build());
    }
    XSiteAdminOperations xsiteAdmin = xsiteAdminOpt.get();
    TakeOfflineConfiguration current = xsiteAdmin.getTakeOfflineConfiguration(site);
    assert current != null;
    String content = request.contents().asString();
    if (content == null || content.isEmpty()) {
        return completedFuture(responseBuilder.status(BAD_REQUEST).build());
    }
    int afterFailures, minWait;
    try {
        Json json = Json.read(content);
        Json minWaitValue = json.at(MIN_WAIT_FIELD);
        Json afterFailuresValue = json.at(AFTER_FAILURES_FIELD);
        if (minWaitValue == null || afterFailuresValue == null) {
            return completedFuture(responseBuilder.status(BAD_REQUEST).build());
        }
        minWait = minWaitValue.asInteger();
        afterFailures = afterFailuresValue.asInteger();
    } catch (Exception e) {
        Throwable rootCause = Util.getRootCause(e);
        return completedFuture(responseBuilder.status(BAD_REQUEST).entity(rootCause.getMessage()).build());
    }
    if (afterFailures == current.afterFailures() && minWait == current.minTimeToWait()) {
        return completedFuture(responseBuilder.status(NOT_MODIFIED).build());
    }
    return supplyAsync(() -> {
        String status = Security.doAs(request.getSubject(), (PrivilegedAction<String>) () -> xsiteAdmin.amendTakeOffline(site, afterFailures, minWait));
        if (!status.equals(XSiteAdminOperations.SUCCESS)) {
            responseBuilder.status(INTERNAL_SERVER_ERROR).entity(site);
        }
        return responseBuilder.build();
    }, invocationHelper.getExecutor());
}
Also used : TakeOfflineConfiguration(org.infinispan.configuration.cache.TakeOfflineConfiguration) Json(org.infinispan.commons.dataconversion.internal.Json) ResourceUtil.addEntityAsJson(org.infinispan.rest.resources.ResourceUtil.addEntityAsJson) XSiteAdminOperations(org.infinispan.xsite.XSiteAdminOperations) GlobalXSiteAdminOperations(org.infinispan.xsite.GlobalXSiteAdminOperations) NettyRestResponse(org.infinispan.rest.NettyRestResponse)

Example 92 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class TasksResourceTest method testTaskUpload.

@Test
public void testTaskUpload() throws Exception {
    RestTaskClient taskClient = client.tasks();
    String script = getResourceAsString("hello.js", getClass().getClassLoader());
    RestEntity scriptEntity = RestEntity.create(APPLICATION_JAVASCRIPT, script);
    CompletionStage<RestResponse> response = taskClient.uploadScript("hello", scriptEntity);
    ResponseAssertion.assertThat(response).isOk();
    response = taskClient.exec("hello", Collections.singletonMap("greetee", "Friend"));
    ResponseAssertion.assertThat(response).isOk();
    Json jsonNode = Json.read(join(response).getBody());
    assertEquals("Hello Friend", jsonNode.asString());
}
Also used : RestEntity(org.infinispan.client.rest.RestEntity) RestResponse(org.infinispan.client.rest.RestResponse) Util.getResourceAsString(org.infinispan.commons.util.Util.getResourceAsString) Json(org.infinispan.commons.dataconversion.internal.Json) RestTaskClient(org.infinispan.client.rest.RestTaskClient) Test(org.testng.annotations.Test)

Example 93 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class XSiteResourceTest method testGetStatusAllCaches.

@Test
public void testGetStatusAllCaches() {
    RestClient restClient = clientPerSite.get(LON);
    assertAllSitesOnline(restClient);
    assertSuccessful(restClient.cache(CACHE_2).takeSiteOffline(NYC));
    Json json = jsonResponseBody(restClient.cacheManager(CACHE_MANAGER).backupStatuses());
    assertEquals(json.at(NYC).at("status").asString(), "mixed");
    assertEquals(json.at(NYC).at("online").asJsonList().iterator().next().asString(), CACHE_1);
    assertEquals(json.at(NYC).at("offline").asJsonList().iterator().next().asString(), CACHE_2);
    json = jsonResponseBody(restClient.cacheManager(CACHE_MANAGER).backupStatus(NYC));
    assertEquals(json.at("status").asString(), "mixed");
    assertEquals(json.at("online").asJsonList().iterator().next().asString(), CACHE_1);
    assertEquals(json.at("offline").asJsonList().iterator().next().asString(), CACHE_2);
    assertSuccessful(restClient.cache(CACHE_2).bringSiteOnline(NYC));
    assertAllSitesOnline(restClient);
    // add a second node
    TestSite site = site(LON);
    EmbeddedCacheManager cm = site.addCacheManager(null, defaultGlobalConfigurationForSite(site.getSiteIndex()), defaultConfigurationForSite(site.getSiteIndex()), true);
    site.waitForClusterToForm(CACHE_1);
    site.waitForClusterToForm(CACHE_2);
    TakeOfflineManager takeOfflineManager = TestingUtil.extractComponent(cm.getCache(CACHE_1), TakeOfflineManager.class);
    takeOfflineManager.takeSiteOffline(NYC);
    json = jsonResponseBody(restClient.cacheManager(CACHE_MANAGER).backupStatuses());
    assertEquals(json.at(NYC).at("status").asString(), "mixed");
    assertEquals(json.at(NYC).at("online").asJsonList().iterator().next().asString(), CACHE_2);
    assertTrue(json.at(NYC).at("offline").asJsonList().isEmpty());
    assertEquals(json.at(NYC).at("mixed").asJsonList().iterator().next().asString(), CACHE_1);
    json = jsonResponseBody(restClient.cacheManager(CACHE_MANAGER).backupStatus(NYC));
    assertEquals(json.at("status").asString(), "mixed");
    assertEquals(json.at("online").asJsonList().iterator().next().asString(), CACHE_2);
    assertTrue(json.at("offline").asJsonList().isEmpty());
    assertEquals(json.at("mixed").asJsonList().iterator().next().asString(), CACHE_1);
    takeOfflineManager.bringSiteOnline(NYC);
}
Also used : RestClient(org.infinispan.client.rest.RestClient) Json(org.infinispan.commons.dataconversion.internal.Json) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager) TakeOfflineManager(org.infinispan.xsite.status.TakeOfflineManager) Test(org.testng.annotations.Test) AbstractMultipleSitesTest(org.infinispan.xsite.AbstractMultipleSitesTest)

Example 94 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class XSiteResourceTest method assertAllSitesOnline.

private void assertAllSitesOnline(RestClient restClient, String... sites) {
    Json json = jsonResponseBody(restClient.cacheManager(CACHE_MANAGER).backupStatuses());
    Arrays.stream(sites).forEach(s -> assertEquals(json.at(s).at("status").asString(), "online"));
}
Also used : Json(org.infinispan.commons.dataconversion.internal.Json)

Example 95 with Json

use of org.infinispan.commons.dataconversion.internal.Json in project infinispan by infinispan.

the class XSiteResourceTest method testBringAllCachesOnlineOffline.

@Test
public void testBringAllCachesOnlineOffline() {
    RestClient restClient = clientPerSite.get(LON);
    RestCacheManagerClient restCacheManagerClient = restClient.cacheManager(CACHE_MANAGER);
    assertSuccessful(restCacheManagerClient.takeOffline(SFO));
    Json json = jsonResponseBody(restCacheManagerClient.backupStatuses());
    assertEquals(json.at(SFO).at("status").asString(), "offline");
    assertSuccessful(restCacheManagerClient.bringBackupOnline(SFO));
    json = jsonResponseBody(restCacheManagerClient.backupStatuses());
    assertEquals(json.at(SFO).at("status").asString(), "online");
}
Also used : RestCacheManagerClient(org.infinispan.client.rest.RestCacheManagerClient) RestClient(org.infinispan.client.rest.RestClient) Json(org.infinispan.commons.dataconversion.internal.Json) Test(org.testng.annotations.Test) AbstractMultipleSitesTest(org.infinispan.xsite.AbstractMultipleSitesTest)

Aggregations

Json (org.infinispan.commons.dataconversion.internal.Json)130 RestResponse (org.infinispan.client.rest.RestResponse)51 Test (org.testng.annotations.Test)51 RestClient (org.infinispan.client.rest.RestClient)15 Util.getResourceAsString (org.infinispan.commons.util.Util.getResourceAsString)13 Test (org.junit.Test)13 RestCacheClient (org.infinispan.client.rest.RestCacheClient)12 MultipleCacheManagersTest (org.infinispan.test.MultipleCacheManagersTest)12 AbstractMultipleSitesTest (org.infinispan.xsite.AbstractMultipleSitesTest)7 ArrayList (java.util.ArrayList)6 List (java.util.List)6 Map (java.util.Map)6 NettyRestResponse (org.infinispan.rest.NettyRestResponse)6 ResourceUtil.addEntityAsJson (org.infinispan.rest.resources.ResourceUtil.addEntityAsJson)6 HashMap (java.util.HashMap)5 RestEntity (org.infinispan.client.rest.RestEntity)5 IOException (java.io.IOException)4 HashSet (java.util.HashSet)4 Request (okhttp3.Request)4 RestSchemaClient (org.infinispan.client.rest.RestSchemaClient)4