package pl.edu.agh.service; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import pl.edu.agh.adhoc.PrintAdHocSocket; import pl.edu.agh.jsonrpc.RawDataSocket; import pl.edu.agh.logic.TrafficDataProvider; import pl.edu.agh.logic.TrafficDataProvider.TrafficDataRequest; import pl.edu.agh.logic.TrafficDataProvider.TrafficDataSet; import pl.edu.agh.model.RectD; import pl.edu.agh.model.SimpleLocationInfo; import pl.edu.agh.model.TrafficData; import pl.edu.agh.model.TrafficInfo; public class TrafficServiceStubTest { private RawDataSocket clientSocket; private RawDataSocket serverSocket; private TrafficDataProvider clientProvider; private TrafficDataProvider serverProvider; private List<SimpleLocationInfo> way = Arrays.asList( new SimpleLocationInfo(0.0, 0.0), new SimpleLocationInfo(1.0, 1.0), new SimpleLocationInfo(2.0, 2.0) ); private List<TrafficInfo> infos = Arrays.asList( new TrafficInfo(way, 10.0, 10.0, true), new TrafficInfo(way, 20.0, 20.0, true), new TrafficInfo(way, 30.0, 30.0, true) ); private SimpleLocationInfo locInfo = new SimpleLocationInfo(20.0, 50.0); private int zoom = 10; private int pipeBufferSize = 900; @Before public void init() throws IOException { PipedInputStream clientIn = new PipedInputStream(); PipedOutputStream serverOut = new PipedOutputStream(clientIn); PipedInputStream serverIn = new PipedInputStream(); PipedOutputStream clientOut = new PipedOutputStream(serverIn); clientSocket = new PrintAdHocSocket("Client", clientIn, clientOut); serverSocket = new PrintAdHocSocket("Server", serverIn, serverOut); clientProvider = new TrafficDataProvider(clientSocket); serverProvider = new TrafficDataProvider(serverSocket); clientProvider.startAdHocServer(); serverProvider.startAdHocServer(); } @Test public void testRequest() throws Exception { TrafficData data = new TrafficData(infos); TrafficDataSet dataSet = new TrafficDataSet(data, new RectD(10.0,10.0,10.0,10.0)); TrafficDataRequest request = new TrafficDataRequest(locInfo, zoom, new Date()); int sentSize = infos.size(); clientProvider.injectLastTrafficOperations(request, dataSet, pipeBufferSize); serverProvider.injectLastTrafficOperations(request, dataSet, pipeBufferSize); TrafficService service = clientProvider.getTrafficService(); TrafficData response = service.getTrafficDataViaAdHoc(locInfo, TrafficDataProvider.calculateRadiusForZoom(zoom)); Assert.assertNotNull(response); Assert.assertEquals(sentSize, response.getTrafficInfos().size()); System.out.println("SUCCESSFUL!"); } @Test public void testBulkRequest() throws Exception { List<TrafficInfo> bulkInfos = new ArrayList<TrafficInfo>(); for(int i=0; i < 300; i++) { bulkInfos.addAll(infos); } TrafficData data = new TrafficData(bulkInfos); TrafficDataSet dataSet = new TrafficDataSet(data, new RectD(10.0,10.0,10.0,10.0)); TrafficDataRequest request = new TrafficDataRequest(locInfo, zoom, new Date()); int sentSize = bulkInfos.size(); clientProvider.injectLastTrafficOperations(request, dataSet, pipeBufferSize); serverProvider.injectLastTrafficOperations(request, dataSet, pipeBufferSize); TrafficService service = clientProvider.getTrafficService(); TrafficData response = service.getTrafficDataViaAdHoc(locInfo, TrafficDataProvider.calculateRadiusForZoom(zoom)); Assert.assertNotNull(response); Assert.assertEquals(sentSize, response.getTrafficInfos().size()); System.out.println("SUCCESSFUL!"); } @After public void finish() { serverProvider.stopAdHocServer(); clientProvider.stopAdHocServer(); } }