use of edu.snu.mist.client.utils.MockTaskServer in project mist by snuspl.
the class MISTDefaultExecutionEnvironmentImplTest method testMISTDefaultExecutionEnvironment.
/**
* This unit test creates mock jar file, mocking driver, and mocking task and tests
* whether a test query can be serialized and sent via MISTDefaultExecutionEnvironmentImpl.
*/
@Test
public void testMISTDefaultExecutionEnvironment() throws IOException {
// Step 1: Launch mock RPC Server
final Server masterServer = new NettyServer(new SpecificResponder(ClientToMasterMessage.class, new MockMasterServer(host, taskPortNum)), new InetSocketAddress(masterPortNum));
final Server taskServer = new NettyServer(new SpecificResponder(ClientToTaskMessage.class, new MockTaskServer(testQueryResult)), new InetSocketAddress(taskPortNum));
// Step 2: Upload jar file
final int suffixStartIndex = mockJarOutName.lastIndexOf(".");
final String mockJarOutPrefix = mockJarOutName.substring(0, suffixStartIndex);
final String mockJarOutSuffix = mockJarOutName.substring(suffixStartIndex);
final List<String> jarPaths = new LinkedList<>();
final Path tempJarFile = Files.createTempFile(mockJarOutPrefix, mockJarOutSuffix);
jarPaths.add(tempJarFile.toString());
final MISTExecutionEnvironment executionEnvironment = new MISTDefaultExecutionEnvironmentImpl(host, masterPortNum);
final JarUploadResult jarUploadResult = executionEnvironment.submitJar(jarPaths);
Assert.assertEquals("app_id", jarUploadResult.getIdentifier());
// Step 3: Generate a new query
final MISTQueryBuilder queryBuilder = new MISTQueryBuilder();
queryBuilder.setApplicationId(jarUploadResult.getIdentifier()).socketTextStream(TestParameters.LOCAL_TEXT_SOCKET_SOURCE_CONF).flatMap(s -> Arrays.asList(s.split(" "))).map(s -> new Tuple2<>(s, 1)).reduceByKey(0, String.class, (Integer x, Integer y) -> x + y).textSocketOutput("localhost", 13667);
final MISTQuery query = queryBuilder.build();
System.err.println(mockJarOutPrefix);
System.err.println(mockJarOutSuffix);
// Step 4: Send a query and check whether the query comes to the task correctly
final APIQueryControlResult result = executionEnvironment.submitQuery(query);
Assert.assertEquals(result.getQueryId(), testQueryResult);
masterServer.close();
taskServer.close();
Files.delete(tempJarFile);
}
Aggregations