@Test
public void uploadProjectFAT() throws ExecutorManagerException {

  when(this.projectLoader.getLatestProjectVersion(this.project)).thenReturn(this.VERSION);
  final URL resource = requireNonNull(
      getClass().getClassLoader().getResource("sample_flow_01.zip"));
  final File projectZipFile = new File(resource.getPath());
  final User uploader = new User("test_user");
  // to test excluding running versions in args of cleanOlderProjectVersion
  final ExecutableFlow runningFlow = new ExecutableFlow(this.project, new Flow("x"));
  runningFlow.setVersion(this.VERSION);
  when(this.executorLoader.fetchUnfinishedFlowsMetadata())
      .thenReturn(ImmutableMap.of(-1, new Pair<>(null, runningFlow)));
  this.project.setVersion(this.VERSION);
  checkValidationReport(this.azkabanProjectLoader
      .uploadProject(this.project, projectZipFile, "zip", uploader, null,
          IPv4));
  // startupDependencies should be null - because it does not exist!
  verify(this.projectStorageManager)
      .uploadProject(this.project, this.VERSION + 1, projectZipFile,
          null, uploader, IPv4);
  verify(this.projectLoader).cleanOlderProjectVersion(this.project.getId(), this.VERSION - 3,
      Arrays.asList(this.VERSION));
  // Verify that the archiveUnthinner was never called
  verify(this.archiveUnthinner, never()).validateThinProject(any(), any(), any(), any());
}