@Test
public void testNoLogsUploadedOnAppFinish() throws Exception {

  this.delSrvc = new DeletionService(createContainerExecutor());
  delSrvc = spy(delSrvc);
  this.delSrvc.init(conf);
  this.conf.set(YarnConfiguration.NM_LOG_DIRS, localLogDir.getAbsolutePath());
  this.conf.set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
      this.remoteRootLogDir.getAbsolutePath());
  LogAggregationService logAggregationService = new LogAggregationService(
      dispatcher, this.context, this.delSrvc, super.dirsHandler);
  logAggregationService.init(this.conf);
  logAggregationService.start();
  ApplicationId app = BuilderUtils.newApplicationId(1234, 1);
  File appLogDir = new File(localLogDir, ConverterUtils.toString(app));
  appLogDir.mkdir();
  LogAggregationContext context =
      LogAggregationContext.newInstance("HOST*", "sys*");
  logAggregationService.handle(new LogHandlerAppStartedEvent(app, this.user,
      null, ContainerLogsRetentionPolicy.ALL_CONTAINERS, this.acls, context));
  ApplicationAttemptId appAttemptId =
      BuilderUtils.newApplicationAttemptId(app, 1);
  ContainerId cont = BuilderUtils.newContainerId(appAttemptId, 1);
  writeContainerLogs(appLogDir, cont, new String[] { "stdout",
      "stderr", "syslog" });
  logAggregationService.handle(new LogHandlerContainerFinishedEvent(cont, 0));
  logAggregationService.handle(new LogHandlerAppFinishedEvent(app));
  logAggregationService.stop();
  delSrvc.stop();
  // Aggregated logs should not be deleted if not uploaded.
  verify(delSrvc, times(0)).delete(user, null);
}