public void shouldReuseQueuedTaskOfTheSameType()
throws Exception
{
final File tmpDir = copyToTempDir(rpmsDir());
final MavenHostedRepository repository = mock(MavenHostedRepository.class);
when(repository.getId()).thenReturn("REPO");
when(repository.getLocalUrl()).thenReturn(osIndependentUri(tmpDir));
when(repository.getProviderRole()).thenReturn(Repository.class.getName());
when(repository.getProviderHint()).thenReturn("maven2");
when(repository.adaptToFacet(HostedRepository.class)).thenReturn(repository);
when(repository.adaptToFacet(MavenRepository.class)).thenReturn(repository);
when(repository.adaptToFacet(MavenHostedRepository.class)).thenReturn(repository);
final RepositoryItemUid uid = mock(RepositoryItemUid.class);
when(uid.getLock()).thenReturn(mock(RepositoryItemUidLock.class));
when(repository.createUid(anyString())).thenReturn(uid);
when(repository.getRepositoryContentClass()).thenReturn(new Maven2ContentClass());
when(repository.isExposed()).thenReturn(true);
final RepositoryKind repositoryKind = mock(RepositoryKind.class);
Mockito.<Class<?>>when(repositoryKind.getMainFacet()).thenReturn(MavenHostedRepository.class);
when(repositoryKind.isFacetAvailable(HostedRepository.class)).thenReturn(true);
when(repositoryKind.isFacetAvailable(MavenRepository.class)).thenReturn(true);
when(repositoryKind.isFacetAvailable(MavenHostedRepository.class)).thenReturn(true);
when(repository.getRepositoryKind()).thenReturn(repositoryKind);
final File rpm1 = createDummyRpm(RPM_NAME_1, "1", new File(tmpDir, "rpm1"));
final File rpm2 = createDummyRpm(RPM_NAME_2, "2", new File(tmpDir, "rpm2"));
// given executions blocking all thread of the scheduler