/** * Tests that Yarn will restart a killed {@link YarnSessionClusterEntrypoint} which will then resume * a persisted {@link JobGraph}. */ @Test public void testKillYarnSessionClusterEntrypoint() throws Exception { assumeTrue( "This test kills processes via the pkill command. Thus, it only runs on Linux, Mac OS, Free BSD and Solaris.", OperatingSystem.isLinux() || OperatingSystem.isMac() || OperatingSystem.isFreeBSD() || OperatingSystem.isSolaris()); final YarnClusterDescriptor yarnClusterDescriptor = setupYarnClusterDescriptor(); yarnClusterDescriptor.addShipFiles(Arrays.asList(flinkShadedHadoopDir.listFiles())); final RestClusterClient<ApplicationId> restClusterClient = deploySessionCluster(yarnClusterDescriptor); try { final JobID jobId = submitJob(restClusterClient); final ApplicationId id = restClusterClient.getClusterId(); waitUntilJobIsRunning(restClusterClient, jobId); killApplicationMaster(yarnClusterDescriptor.getYarnSessionClusterEntrypoint()); waitForApplicationAttempt(id, 2); waitForJobTermination(restClusterClient, jobId); killApplicationAndWait(id); } finally { restClusterClient.shutdown(); } }