我正在尝试对我的flink应用程序进行集成测试。我的测试代码如下:
Quick actions and refactoring
在这里,我从子线程启动我的flink应用程序,并从主线程上载文件进行处理。测试运行正常,并且我得到了预期的结果文件。 但是,在关闭应用程序时,最后出现以下错误:
public class HttpsCsvIngestorTest extends AbstractTestBase {
private final static Logger LOG = LoggerFactory.getLogger(HttpsCsvIngestorTest.class);
@Test
public void testHttpsCsvIngestion() throws Exception {
Thread flinkJob = new Thread(new Runnable() {
@Override
public void run() {
String[] args = new String[] { "--configFile", "the/path/to/config.properties", "--secretKey",
"12345" };
JobExecutionResult execResult = CsvProcessorFlinkDriver.runFlinkJob(args);
}
});
flinkJob.start();
LOG.info("Starting flink job");
Thread.sleep(10000);
String[] args2 = new String[] { "localhost", filename };
FileUploadClient.main(args2);
Thread.sleep(30000);
assertTrue(new File(System.getProperty("user.dir") + File.separator + "C:/Desktop/Result.csv")
.exists());
System.out.println("Test completed. Going to shutdown flink job");
}
}
此处CsvProcessorFlinkDriver.java:132是 executionResult = env.execute 行。
我在做错什么吗?我还注意到,如果我在测试类的主线程中(而不是从子线程)启动flink应用程序,则执行不会进展到从LOG.info(“ Starting flink job”);
我的flink版本是1.5.0。即使使用flink-1.6.0,测试也会产生相同的错误。