@Test public void header() { String name = "foo"; List<String> value = Collections.singletonList("bar"); when(mockHeaders.header(name)).thenReturn(value); assertSame(value, wrapper.header(name)); }
@Test public void headers() { String name = "MyHeader"; String value = "MyValue"; RequestPredicate predicate = RequestPredicates.headers( headers -> headers.header(name).equals(Collections.singletonList(value))); MockServerRequest request = MockServerRequest.builder().header(name, value).build(); assertTrue(predicate.test(request)); request = MockServerRequest.builder().build(); assertFalse(predicate.test(request)); }
@SuppressWarnings("unchecked") public Mono<ServerResponse> result(ServerRequest request) { List<String> appIdHeaders = request.headers().header(X_KGRAPH_APPID); String appId = request.pathVariable("id"); PregelGraphAlgorithm<Long, ?, ?, ?> algorithm = algorithms.get(appId); Flux<String> body = Flux.fromIterable(algorithm.result()).map(kv -> { log.trace("result: ({}, {})", kv.key, kv.value); return kv.key + " " + kv.value; }); body = proxyResult(appIdHeaders.isEmpty() ? group.getCurrentMembers().keySet() : Collections.emptySet(), appId, body); return ServerResponse.ok() .contentType(MediaType.TEXT_EVENT_STREAM) .body(BodyInserters.fromPublisher(body, String.class)); }
public Mono<ServerResponse> run(ServerRequest request) { List<String> appIdHeaders = request.headers().header(X_KGRAPH_APPID); String appId = request.pathVariable("id"); return request.bodyToMono(GraphAlgorithmRunRequest.class) .flatMapMany(input -> { log.debug("num iterations: {}", input.getNumIterations()); PregelGraphAlgorithm<Long, ?, ?, ?> algorithm = algorithms.get(appId); GraphAlgorithmState state = algorithm.run(input.getNumIterations()); GraphAlgorithmStatus status = new GraphAlgorithmStatus(state); Flux<GraphAlgorithmStatus> states = proxyRun(appIdHeaders.isEmpty() ? group.getCurrentMembers().keySet() : Collections.emptySet(), appId, input); return Mono.just(status).mergeWith(states); }) .reduce((state1, state2) -> state1) .flatMap(state -> ServerResponse.ok() .contentType(MediaType.APPLICATION_JSON) .body(Mono.just(state), GraphAlgorithmStatus.class) ); }
public Mono<ServerResponse> configure(ServerRequest request) { List<String> appIdHeaders = request.headers().header(X_KGRAPH_APPID); String appId = appIdHeaders.isEmpty() ? generateRandomString(8) : appIdHeaders.iterator().next(); return request.bodyToMono(GraphAlgorithmCreateRequest.class) .doOnNext(input -> { PregelGraphAlgorithm<Long, ?, ?, ?> algorithm = getAlgorithm(appId, input); StreamsBuilder builder = new StreamsBuilder(); Properties streamsConfig = streamsConfig(appId, props.getBootstrapServers(), new KryoSerde<>()); algorithm.configure(builder, streamsConfig); algorithms.put(appId, algorithm); }) .flatMapMany(input -> proxyConfigure(appIdHeaders.isEmpty() ? group.getCurrentMembers().keySet() : Collections.emptySet(), appId, input)) .then(ServerResponse.ok() .contentType(MediaType.APPLICATION_JSON) .body(Mono.just(new GraphAlgorithmId(appId)), GraphAlgorithmId.class)); }
@Override public List<String> header(String headerName) { return this.headers.header(headerName); }
public Mono<ServerResponse> delete(ServerRequest request) { List<String> appIdHeaders = request.headers().header(X_KGRAPH_APPID); String appId = request.pathVariable("id"); PregelGraphAlgorithm<Long, ?, ?, ?> algorithm = algorithms.remove(appId); algorithm.close(); return proxyDelete(appIdHeaders.isEmpty() ? group.getCurrentMembers().keySet() : Collections.emptySet(), appId) .then(ServerResponse.noContent().build()); }
@Override public List<String> header(String headerName) { return this.headers.header(headerName); }