use of org.webpieces.httpfrontend2.api.mock2.MockStreamWriter in project webpieces by deanhiller.
the class TestSBasicRequestResponse method testWithDataAndTrailingHeaders.
@Test
public void testWithDataAndTrailingHeaders() throws InterruptedException, ExecutionException, TimeoutException {
MockStreamWriter mockSw = new MockStreamWriter();
mockSw.setDefaultRetValToThis();
mockListener.addMockStreamToReturn(mockSw);
Http2Request request1 = Http2Requests.createRequest(1, false);
DataFrame data1 = Http2Requests.createData1(request1.getStreamId(), false);
Http2Trailers trailing = Http2Requests.createTrailers(request1.getStreamId());
mockChannel.send(request1);
PassedIn incoming1 = mockListener.getSingleRequest();
Assert.assertEquals(request1, incoming1.request);
mockChannel.send(data1);
DataFrame incoming2 = (DataFrame) mockSw.getSingleFrame();
Assert.assertEquals(3, incoming2.getData().getReadableSize());
//clear window update frames
Assert.assertEquals(2, mockChannel.getFramesAndClear().size());
mockChannel.send(trailing);
Http2Headers incoming = (Http2Headers) mockSw.getSingleFrame();
Assert.assertEquals(trailing, incoming);
Http2Response resp = Http2Requests.createResponse(request1.getStreamId(), false);
CompletableFuture<StreamWriter> future = incoming1.stream.sendResponse(resp);
Http2Msg response = mockChannel.getFrameAndClear();
Assert.assertEquals(resp, response);
StreamWriter writer = future.get(2, TimeUnit.SECONDS);
DataFrame data2 = Http2Requests.createData2(request1.getStreamId(), false);
writer.processPiece(data2);
DataFrame dataResp = (DataFrame) mockChannel.getFrameAndClear();
Assert.assertEquals(1, dataResp.getData().getReadableSize());
Http2Trailers trailingResp = Http2Requests.createTrailers(request1.getStreamId());
writer.processPiece(trailingResp);
Http2Headers trailers = (Http2Headers) mockChannel.getFrameAndClear();
Assert.assertEquals(trailingResp, trailers);
}
use of org.webpieces.httpfrontend2.api.mock2.MockStreamWriter in project webpieces by deanhiller.
the class TestSBasicRequestResponse method testWithData.
@Test
public void testWithData() throws InterruptedException, ExecutionException, TimeoutException {
MockStreamWriter mockSw = new MockStreamWriter();
mockSw.setDefaultRetValToThis();
mockListener.addMockStreamToReturn(mockSw);
Http2Request request1 = Http2Requests.createRequest(1, false);
DataFrame data = Http2Requests.createData1(request1.getStreamId(), true);
mockChannel.send(request1);
PassedIn incoming1 = mockListener.getSingleRequest();
Assert.assertEquals(request1, incoming1.request);
mockChannel.send(data);
DataFrame incoming = (DataFrame) mockSw.getSingleFrame();
Assert.assertEquals(3, incoming.getData().getReadableSize());
//clear window update frames
Assert.assertEquals(2, mockChannel.getFramesAndClear().size());
Http2Response resp = Http2Requests.createResponse(request1.getStreamId(), false);
CompletableFuture<StreamWriter> future = incoming1.stream.sendResponse(resp);
Http2Msg response = mockChannel.getFrameAndClear();
Assert.assertEquals(resp, response);
StreamWriter writer = future.get(2, TimeUnit.SECONDS);
DataFrame data2 = Http2Requests.createData2(request1.getStreamId(), true);
writer.processPiece(data2);
DataFrame dataResp = (DataFrame) mockChannel.getFrameAndClear();
Assert.assertEquals(1, dataResp.getData().getReadableSize());
}
use of org.webpieces.httpfrontend2.api.mock2.MockStreamWriter in project webpieces by deanhiller.
the class AbstractHttp2Test method setUp.
@Before
public void setUp() throws InterruptedException, ExecutionException, TimeoutException {
MockTcpServerChannel svrChannel = new MockTcpServerChannel();
mockChanMgr.addTCPSvrChannelToReturn(svrChannel);
mockTcpChannel.setIncomingFrameDefaultReturnValue(CompletableFuture.completedFuture(mockTcpChannel));
mockListener.setDefaultRetVal(mockStreamWriter);
mockStreamWriter.setDefaultRetValToThis();
Http2Config config = new Http2Config();
config.setLocalSettings(localSettings);
InjectionConfig injConfig = new InjectionConfig(mockTime, config);
FrontendConfig frontendConfig = new FrontendConfig("http", new InetSocketAddress("me", 8080));
HttpFrontendManager manager = HttpFrontendFactory.createFrontEnd(mockChanMgr, mockTimer, injConfig);
HttpServer httpServer = manager.createHttpServer(frontendConfig, mockListener);
httpServer.start();
simulateClientConnecting();
simulateClientSendingPrefaceAndSettings();
}
use of org.webpieces.httpfrontend2.api.mock2.MockStreamWriter in project webpieces by deanhiller.
the class TestHttp2Errors method testFarEndClosedSocket.
@Test
public void testFarEndClosedSocket() throws InterruptedException, ExecutionException {
MockStreamWriter mockSw = new MockStreamWriter();
mockListener.addMockStreamToReturn(mockSw);
MockStreamWriter mockSw2 = new MockStreamWriter();
mockListener.addMockStreamToReturn(mockSw2);
Http2Request request1 = Http2Requests.createRequest(1, true);
Http2Request request2 = Http2Requests.createRequest(3, true);
mockChannel.send(request1);
PassedIn in1 = mockListener.getSingleRequest();
mockChannel.send(request2);
PassedIn in2 = mockListener.getSingleRequest();
mockChannel.close();
List<Cancel> cancels = mockListener.getCancels();
Assert.assertEquals(in1.stream, cancels.get(0).stream);
Assert.assertEquals(in2.stream, cancels.get(1).stream);
}
use of org.webpieces.httpfrontend2.api.mock2.MockStreamWriter in project webpieces by deanhiller.
the class TestBasicHttp2Server method testBasicIntegration.
@Test
public void testBasicIntegration() throws InterruptedException, ExecutionException {
MockStreamWriter mockSw = new MockStreamWriter();
mockListener.addMockStreamToReturn(mockSw);
MockStreamWriter mockSw2 = new MockStreamWriter();
mockListener.addMockStreamToReturn(mockSw2);
Http2Request request1 = Http2Requests.createRequest(1, true);
Http2Request request2 = Http2Requests.createRequest(3, true);
mockChannel.send(request1);
PassedIn requestAndStream1 = mockListener.getSingleRequest();
mockChannel.send(request2);
PassedIn requestAndStream2 = mockListener.getSingleRequest();
//each stream given to webapp is a unique one....
Assert.assertTrue(requestAndStream1.stream != requestAndStream2.stream);
Assert.assertEquals(request1, requestAndStream1.request);
Assert.assertEquals(request2, requestAndStream2.request);
Assert.assertEquals(1, request1.getStreamId());
Assert.assertEquals(3, request2.getStreamId());
Http2Response resp2 = Http2Requests.createResponse(request2.getStreamId());
CompletableFuture<StreamWriter> future = requestAndStream2.stream.sendResponse(resp2);
Assert.assertTrue(future.isDone());
Http2Response frame2 = (Http2Response) mockChannel.getFrameAndClear();
Assert.assertEquals(resp2, frame2);
Http2Response resp1 = Http2Requests.createResponse(request1.getStreamId());
CompletableFuture<StreamWriter> future1 = requestAndStream1.stream.sendResponse(resp1);
Assert.assertTrue(future1.isDone());
Http2Response frame1 = (Http2Response) mockChannel.getFrameAndClear();
Assert.assertEquals(resp1, frame1);
}
Aggregations