@VisibleForTesting Optional<ClientConfig> getClientConfig( IntObjectMap<Optional<ClientConfig>> cachedClientConfig, Request request) { int hashKey = request.streamId(); // we only do a fresh round robin if the request is a either a FULL HTTP REQUEST or the First Part of a Chunked Requets if (request.isFullMessage()) { return computationFunction.get(); } else if (request.startOfMessage()) { Optional<ClientConfig> newClientConfig = computationFunction.get(); cachedClientConfig.put(hashKey, newClientConfig); return newClientConfig; } else if (request.endOfMessage()) { return cachedClientConfig.remove(hashKey); } else { return cachedClientConfig.get(hashKey); } }
when(request1.isFullMessage()).thenReturn(true); when(request1.path()).thenReturn("dontcare"); when(request1.streamId()).thenReturn(Message.H1_STREAM_ID_NONE); when(request2.isFullMessage()).thenReturn(true); when(request2.path()).thenReturn("dontcare"); when(request2.streamId()).thenReturn(Message.H1_STREAM_ID_NONE); when(request3.isFullMessage()).thenReturn(true); when(request3.path()).thenReturn("dontcare"); when(request3.streamId()).thenReturn(Message.H1_STREAM_ID_NONE); when(request4.isFullMessage()).thenReturn(true); when(request4.path()).thenReturn("dontcare"); when(request4.streamId()).thenReturn(Message.H1_STREAM_ID_NONE);
when(request1.isFullMessage()).thenReturn(true); when(request1.path()).thenReturn("dontcare"); when(request1.streamId()).thenReturn(Message.H1_STREAM_ID_NONE); when(request2.isFullMessage()).thenReturn(true); when(request2.path()).thenReturn("dontcare"); when(request2.streamId()).thenReturn(Message.H1_STREAM_ID_NONE); when(request3.isFullMessage()).thenReturn(true); when(request3.path()).thenReturn("dontcare"); when(request3.streamId()).thenReturn(Message.H1_STREAM_ID_NONE); when(request4.isFullMessage()).thenReturn(true); when(request4.path()).thenReturn("dontcare"); when(request4.streamId()).thenReturn(Message.H1_STREAM_ID_NONE);
when(request1.isFullMessage()).thenReturn(false); when(request1.startOfMessage()).thenReturn(true); when(request1.endOfMessage()).thenReturn(false); when(request2.isFullMessage()).thenReturn(false); when(request2.startOfMessage()).thenReturn(false); when(request2.endOfMessage()).thenReturn(false); when(request3.isFullMessage()).thenReturn(false); when(request3.startOfMessage()).thenReturn(false); when(request3.endOfMessage()).thenReturn(true);
when(request1.isFullMessage()).thenReturn(false); when(request1.startOfMessage()).thenReturn(true); when(request1.endOfMessage()).thenReturn(false); when(request2.isFullMessage()).thenReturn(false); when(request2.startOfMessage()).thenReturn(false); when(request2.endOfMessage()).thenReturn(false); when(request3.isFullMessage()).thenReturn(false); when(request3.startOfMessage()).thenReturn(false); when(request3.endOfMessage()).thenReturn(true);
when(request1a.isFullMessage()).thenReturn(false); when(request1a.startOfMessage()).thenReturn(true); when(request1a.endOfMessage()).thenReturn(false); when(request1b.isFullMessage()).thenReturn(false); when(request1b.startOfMessage()).thenReturn(true); when(request1b.endOfMessage()).thenReturn(false); when(request2a.isFullMessage()).thenReturn(false); when(request2a.startOfMessage()).thenReturn(false); when(request2a.endOfMessage()).thenReturn(false); when(request2b.isFullMessage()).thenReturn(false); when(request2b.startOfMessage()).thenReturn(false); when(request2b.endOfMessage()).thenReturn(false); when(request3a.isFullMessage()).thenReturn(false); when(request3a.startOfMessage()).thenReturn(false); when(request3a.endOfMessage()).thenReturn(true); when(request3b.isFullMessage()).thenReturn(false); when(request3b.startOfMessage()).thenReturn(false); when(request3b.endOfMessage()).thenReturn(true);
when(request1a.isFullMessage()).thenReturn(false); when(request1a.startOfMessage()).thenReturn(true); when(request1a.endOfMessage()).thenReturn(false); when(request1b.isFullMessage()).thenReturn(false); when(request1b.startOfMessage()).thenReturn(true); when(request1b.endOfMessage()).thenReturn(false); when(request2a.isFullMessage()).thenReturn(false); when(request2a.startOfMessage()).thenReturn(false); when(request2a.endOfMessage()).thenReturn(false); when(request2b.isFullMessage()).thenReturn(false); when(request2b.startOfMessage()).thenReturn(false); when(request2b.endOfMessage()).thenReturn(false); when(request3a.isFullMessage()).thenReturn(false); when(request3a.startOfMessage()).thenReturn(false); when(request3a.endOfMessage()).thenReturn(true); when(request3b.isFullMessage()).thenReturn(false); when(request3b.startOfMessage()).thenReturn(false); when(request3b.endOfMessage()).thenReturn(true);