package com.constellio.data.utils; import static com.constellio.data.utils.ThreadUtils.iterateOverRunningTaskInParallel; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import java.util.List; import org.junit.Test; import com.constellio.data.utils.ThreadUtils.IteratorElementTask; import com.constellio.sdk.tests.ConstellioTest; public class ThreadUtilsAcceptanceTest extends ConstellioTest { @Test public void testName() throws Exception { List<String> elements = asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"); IteratorElementTask<String> task = spy(new IteratorElementTask<String>() { @Override public void executeTask(String value) throws Exception { if ("3".equals(value)) { throw new Exception("No 3"); } if ("8".equals(value)) { throw new Exception("No 8"); } } }); try { iterateOverRunningTaskInParallel(elements.iterator(), 3, task); } catch (Exception e) { assertThat(e.getMessage()).isEqualTo("No 3"); } verify(task).executeTask("1"); verify(task).executeTask("2"); verify(task).executeTask("3"); verify(task).executeTask("4"); verify(task).executeTask("5"); verify(task).executeTask("6"); verify(task).executeTask("7"); verify(task).executeTask("8"); verify(task).executeTask("9"); verify(task).executeTask("10"); } }