/** * Helper method to explicitly set a factory to be "available". This is usually unnecessary, * but currently factories that create {@code ON_DEMAND_LOAD} services are not being set to * available... and currently require this work-around. * * @param host the host * @param factoryPath the path of the factory to explicitly set to be available * @param handler an optional completion handler */ public static void setFactoryToAvailable(ServiceHost host, String factoryPath, Operation.CompletionHandler handler) { ServiceStats.ServiceStat body = new ServiceStats.ServiceStat(); body.name = Service.STAT_NAME_AVAILABLE; body.latestValue = Service.STAT_VALUE_TRUE; Operation put = Operation.createPut(UriUtils.buildAvailableUri(host, factoryPath)) .setBody(body) .setCompletion(handler) .setReferer(host.getUri()); host.sendRequest(put); } }
private void setFactoryAvailability( State task, boolean isAvailable, Consumer<Operation> action, Operation parentOp) { ServiceStats.ServiceStat body = new ServiceStats.ServiceStat(); body.name = Service.STAT_NAME_AVAILABLE; body.latestValue = isAvailable ? STAT_VALUE_TRUE : STAT_VALUE_FALSE; Operation op = Operation.createPost( UriUtils.buildAvailableUri(this.getHost(), task.factorySelfLink)) .setBody(body) .setConnectionSharing(true) .setConnectionTag(ServiceClient.CONNECTION_TAG_SYNCHRONIZATION) .setCompletion((o, e) -> { if (parentOp != null) { parentOp.complete(); } if (e != null) { logSevere("Setting factory availability failed with error %s", e.getMessage()); sendSelfFailurePatch(task, "Failed to set Factory Availability"); return; } if (action != null) { action.accept(o); } }); sendRequest(op); }
/** * Helper method to explicitly set a factory to be "available". This is usually unnecessary, but * currently factories that create {@code ON_DEMAND_LOAD} services are not being set to * available... and currently require this work-around. * * @param host * the host * @param factoryPath * the path of the factory to explicitly set to be available * @param handler * an optional completion handler */ public static void setFactoryToAvailable(ServiceHost host, String factoryPath, Operation.CompletionHandler handler) { ServiceStats.ServiceStat body = new ServiceStats.ServiceStat(); body.name = Service.STAT_NAME_AVAILABLE; body.latestValue = Service.STAT_VALUE_TRUE; Operation put = Operation.createPut(UriUtils.buildAvailableUri(host, factoryPath)) .setBody(body) .setCompletion(handler) .setReferer(host.getUri()); host.sendRequest(put); } }
private void setFactoryAvailability(VerificationHost peer, double isAvailable) { ServiceStats.ServiceStat body = new ServiceStats.ServiceStat(); body.name = Service.STAT_NAME_AVAILABLE; body.latestValue = isAvailable; Operation put = Operation.createPut( UriUtils.buildAvailableUri(peer, ExampleService.FACTORY_LINK)) .setBody(body); this.sender.sendAndWait(put); } }
private void setFactoryAvailability(VerificationHost peer, double isAvailable) { ServiceStats.ServiceStat body = new ServiceStats.ServiceStat(); body.name = Service.STAT_NAME_AVAILABLE; body.latestValue = isAvailable; Operation put = Operation.createPut( UriUtils.buildAvailableUri(peer, ExampleService.FACTORY_LINK)) .setBody(body); this.sender.sendAndWait(put); } }
public static void setFactoryAvailabilityIfOwner(ServiceHost host, String factoryLink, String factoryNodeSelectorPath, boolean isAvailable) { Operation selectOwnerOp = Operation.createPost(null) .setExpiration(Utils.fromNowMicrosUtc(host.getOperationTimeoutMicros())) .setCompletion((o, e) -> { if (e != null) { host.log(Level.WARNING, "Owner selection for %s failed: %s; cannot set factory availability", factoryLink, e.getMessage()); return; } SelectOwnerResponse rsp = o.getBody(SelectOwnerResponse.class); if (rsp.isLocalHostOwner) { ServiceStats.ServiceStat body = new ServiceStats.ServiceStat(); body.name = Service.STAT_NAME_AVAILABLE; body.latestValue = isAvailable ? Service.STAT_VALUE_TRUE : Service.STAT_VALUE_FALSE; Operation op = Operation.createPost( UriUtils.buildAvailableUri(host, factoryLink)) .setBody(body) .setReferer(host.getUri()) .setConnectionSharing(true) .setConnectionTag(ServiceClient.CONNECTION_TAG_SYNCHRONIZATION); host.sendRequest(op); } }); host.selectOwner(factoryNodeSelectorPath, factoryLink, selectOwnerOp); }
Operation get = Operation.createGet(UriUtils.buildAvailableUri(u)) .setCompletion(ctx.getCompletion()); this.host.send(get); UriUtils.buildAvailableUri(this.host, factoryURI.getPath())) .setBody(body); this.host.sendAndWaitExpectSuccess(put); Operation get = Operation.createGet(UriUtils.buildAvailableUri(factoryURI)); this.host.sendAndWaitExpectFailure(get); put = put.clone().setUri(UriUtils.buildAvailableUri(u)) .setBody(body) .setCompletion(ctx.getCompletion()); get = get.clone().setUri(UriUtils.buildAvailableUri(u)) .setCompletion(ctx.getExpectedFailureCompletion()); this.host.send(get); get = Operation.createGet(UriUtils.buildAvailableUri(service.getUri())); this.host.sendAndWaitExpectFailure(get); get = Operation.createGet(UriUtils.buildAvailableUri(service.getUri())); this.host.sendAndWaitExpectSuccess(get);
Operation get = Operation.createGet(UriUtils.buildAvailableUri(u)) .setCompletion(ctx.getCompletion()); this.host.send(get); UriUtils.buildAvailableUri(this.host, factoryURI.getPath())) .setBody(body); this.host.sendAndWaitExpectSuccess(put); Operation get = Operation.createGet(UriUtils.buildAvailableUri(factoryURI)); this.host.sendAndWaitExpectFailure(get); put = put.clone().setUri(UriUtils.buildAvailableUri(u)) .setBody(body) .setCompletion(ctx.getCompletion()); get = get.clone().setUri(UriUtils.buildAvailableUri(u)) .setCompletion(ctx.getExpectedFailureCompletion()); this.host.send(get); get = Operation.createGet(UriUtils.buildAvailableUri(service.getUri())); this.host.sendAndWaitExpectFailure(get); get = Operation.createGet(UriUtils.buildAvailableUri(service.getUri())); this.host.sendAndWaitExpectSuccess(get);
public void waitForServiceAvailable(URI u) { boolean[] isReady = new boolean[1]; log("Starting /available check on %s", u); waitFor("available check timeout for " + u, () -> { TestContext ctx = testCreate(1); URI available = UriUtils.buildAvailableUri(u); Operation get = Operation.createGet(available).setCompletion((o, e) -> { if (e != null) { // not ready isReady[0] = false; ctx.completeIteration(); return; } isReady[0] = true; ctx.completeIteration(); return; }); send(get); ctx.await(); if (isReady[0]) { log("%s /available returned success", get.getUri()); return true; } return false; }); }
public void waitForServiceAvailable(URI u) { boolean[] isReady = new boolean[1]; log("Starting /available check on %s", u); waitFor("available check timeout for " + u, () -> { TestContext ctx = testCreate(1); URI available = UriUtils.buildAvailableUri(u); Operation get = Operation.createGet(available).setCompletion((o, e) -> { if (e != null) { // not ready isReady[0] = false; ctx.completeIteration(); return; } isReady[0] = true; ctx.completeIteration(); return; }); send(get); ctx.await(); if (isReady[0]) { log("%s /available returned success", get.getUri()); return true; } return false; }); }
URI availableFooUri = UriUtils.buildAvailableUri(host, statefulFooPath); URI availableBarUri = UriUtils.buildAvailableUri(host, statefulBarPath); URI factoryAvailableUri = UriUtils.buildAvailableUri(host, ExampleService.FACTORY_LINK); URI statelessAvailableUri = UriUtils.buildAvailableUri(host, statelessPath);
URI factoryAvailableUri = UriUtils.buildAvailableUri(host, ExampleService.FACTORY_LINK); URI factoryStatsUri = UriUtils.buildStatsUri(host, ExampleService.FACTORY_LINK); URI factoryConfigUri = UriUtils.buildConfigUri(host, ExampleService.FACTORY_LINK); URI factoryUiUri = UriUtils.buildUri(host, UriUtils.buildUriPath(ExampleService.FACTORY_LINK, SERVICE_URI_SUFFIX_UI)); URI serviceAvailableUri = UriUtils.buildAvailableUri(host, postResult.documentSelfLink); URI serviceStatsUri = UriUtils.buildStatsUri(host, postResult.documentSelfLink); URI serviceConfigUri = UriUtils.buildConfigUri(host, postResult.documentSelfLink);
URI factoryAvailableUri = UriUtils.buildAvailableUri(host, ExampleService.FACTORY_LINK); URI factoryStatsUri = UriUtils.buildStatsUri(host, ExampleService.FACTORY_LINK); URI factoryConfigUri = UriUtils.buildConfigUri(host, ExampleService.FACTORY_LINK); URI factoryUiUri = UriUtils.buildUri(host, UriUtils.buildUriPath(ExampleService.FACTORY_LINK, SERVICE_URI_SUFFIX_UI)); URI serviceAvailableUri = UriUtils.buildAvailableUri(host, postResult.documentSelfLink); URI serviceStatsUri = UriUtils.buildStatsUri(host, postResult.documentSelfLink); URI serviceConfigUri = UriUtils.buildConfigUri(host, postResult.documentSelfLink);