private void doTestExcludeSomeCommits(int cnt, Executor executor) throws Exception { MyFilter filter = new MyFilter(); Recorder recorder = new Recorder(); FilteringObserver fo = new FilteringObserver(executor, cnt + 2, filter, recorder); closeables.add(fo); List<Pair> expected = new LinkedList<Pair>(); Random r = new Random(2343242); // seed: repeatable tests NodeStateGenerator generator = new NodeStateGenerator(); NodeState first = generator.next(); fo.contentChanged(first, CommitInfo.EMPTY); NodeState previous = first; for (int i = 0; i < cnt; i++) { boolean excludeNext = r.nextInt(100) < 90; filter.excludeNext(excludeNext); NodeState next = generator.next(); if (!excludeNext) { expected.add(new Pair(previous, next)); } previous = next; fo.contentChanged(next, CommitInfo.EMPTY); } assertTrue("cnt=" + cnt, fo.getBackgroundObserver().waitUntilStopped(5, TimeUnit.SECONDS)); assertMatches("cnt=" + cnt, expected, recorder.includedChanges); }
@Test public void testNoExcludedCommits() throws Exception { MyFilter filter = new MyFilter(); Recorder recorder = new Recorder(); ExecutorService executor = newSingleThreadExecutor(); FilteringObserver fo = new FilteringObserver(executor, 10002, filter, recorder); closeables.add(fo); List<Pair> expected = new LinkedList<Pair>(); NodeStateGenerator generator = new NodeStateGenerator(); NodeState first = generator.next(); fo.contentChanged(first, CommitInfo.EMPTY); NodeState previous = first; for (int i = 0; i < 10000; i++) { filter.excludeNext(false); NodeState next = generator.next(); expected.add(new Pair(previous, next)); previous = next; fo.contentChanged(next, CommitInfo.EMPTY); } assertTrue("testNoExcludedCommits", fo.getBackgroundObserver().waitUntilStopped(5, TimeUnit.SECONDS)); assertMatches("testNoExcludedCommits", expected, recorder.includedChanges); }
@Test public void testExcludedAllCommits() throws Exception { MyFilter filter = new MyFilter(); Recorder recorder = new Recorder(); ExecutorService executor = newSingleThreadExecutor(); FilteringObserver fo = new FilteringObserver(executor, 5, filter, recorder); closeables.add(fo); List<Pair> expected = new LinkedList<Pair>(); NodeStateGenerator generator = new NodeStateGenerator(); NodeState first = generator.next(); fo.contentChanged(first, CommitInfo.EMPTY); for (int i = 0; i < 100000; i++) { filter.excludeNext(true); fo.contentChanged(generator.next(), CommitInfo.EMPTY); } assertTrue("testExcludedAllCommits", fo.getBackgroundObserver().waitUntilStopped(5, TimeUnit.SECONDS)); assertMatches("testExcludedAllCommits", expected, recorder.includedChanges); }
fo.contentChanged(last, CommitInfo.EMPTY); assertTrue("testExcludeCommitsWithFullQueue", fo.getBackgroundObserver().waitUntilStopped(10, TimeUnit.SECONDS)); assertMatches("testExcludeCommitsWithFullQueue", expected, recorder.includedChanges);