comparison test/org/tmatesoft/hg/test/TestPhases.java @ 648:690e71d29bf6

Introduced RevisionSet to ease update of phase roots on push
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Tue, 25 Jun 2013 20:48:37 +0200
parents 6526d8adbc0f
children
comparison
equal deleted inserted replaced
647:c75297c17867 648:690e71d29bf6
16 */ 16 */
17 package org.tmatesoft.hg.test; 17 package org.tmatesoft.hg.test;
18 18
19 import static org.junit.Assert.*; 19 import static org.junit.Assert.*;
20 20
21 import java.util.ArrayList;
21 import java.util.regex.Matcher; 22 import java.util.regex.Matcher;
22 import java.util.regex.Pattern; 23 import java.util.regex.Pattern;
23 24
24 import org.junit.Rule; 25 import org.junit.Rule;
25 import org.junit.Test; 26 import org.junit.Test;
27 import org.tmatesoft.hg.core.Nodeid;
28 import org.tmatesoft.hg.internal.Internals;
26 import org.tmatesoft.hg.internal.PhasesHelper; 29 import org.tmatesoft.hg.internal.PhasesHelper;
30 import org.tmatesoft.hg.internal.RevisionSet;
27 import org.tmatesoft.hg.repo.HgChangelog; 31 import org.tmatesoft.hg.repo.HgChangelog;
28 import org.tmatesoft.hg.repo.HgInternals; 32 import org.tmatesoft.hg.repo.HgInternals;
29 import org.tmatesoft.hg.repo.HgLookup; 33 import org.tmatesoft.hg.repo.HgLookup;
30 import org.tmatesoft.hg.repo.HgParentChildMap; 34 import org.tmatesoft.hg.repo.HgParentChildMap;
31 import org.tmatesoft.hg.repo.HgPhase; 35 import org.tmatesoft.hg.repo.HgPhase;
64 final long start2 = System.nanoTime(); 68 final long start2 = System.nanoTime();
65 PhasesHelper ph = new PhasesHelper(HgInternals.getImplementationRepo(repo), pw); 69 PhasesHelper ph = new PhasesHelper(HgInternals.getImplementationRepo(repo), pw);
66 initAndCheck(ph, expected); 70 initAndCheck(ph, expected);
67 final long end = System.nanoTime(); 71 final long end = System.nanoTime();
68 System.out.printf("With ParentWalker(simulates log command for whole repo): %,d μs (pw init: %,d ns)\n", (end - start1)/1000, start2 - start1); 72 System.out.printf("With ParentWalker(simulates log command for whole repo): %,d μs (pw init: %,d ns)\n", (end - start1)/1000, start2 - start1);
73 }
74
75 @Test
76 public void testAllSecretAndDraft() throws Exception {
77 HgRepository repo = Configuration.get().find("test-phases");
78 Internals implRepo = HgInternals.getImplementationRepo(repo);
79 HgPhase[] expected = readPhases(repo);
80 ArrayList<Nodeid> secret = new ArrayList<Nodeid>();
81 ArrayList<Nodeid> draft = new ArrayList<Nodeid>();
82 ArrayList<Nodeid> pub = new ArrayList<Nodeid>();
83 for (int i = 0; i < expected.length; i++) {
84 Nodeid n = repo.getChangelog().getRevision(i);
85 switch (expected[i]) {
86 case Secret : secret.add(n); break;
87 case Draft : draft.add(n); break;
88 case Public : pub.add(n); break;
89 default : throw new IllegalStateException();
90 }
91 }
92 final RevisionSet rsSecret = new RevisionSet(secret);
93 final RevisionSet rsDraft = new RevisionSet(draft);
94 assertFalse("[sanity]", rsSecret.isEmpty());
95 assertFalse("[sanity]", rsDraft.isEmpty());
96 HgParentChildMap<HgChangelog> pw = new HgParentChildMap<HgChangelog>(repo.getChangelog());
97 pw.init();
98 PhasesHelper ph1 = new PhasesHelper(implRepo, null);
99 PhasesHelper ph2 = new PhasesHelper(implRepo, pw);
100 RevisionSet s1 = ph1.allSecret().symmetricDifference(rsSecret);
101 RevisionSet s2 = ph2.allSecret().symmetricDifference(rsSecret);
102 errorCollector.assertTrue("Secret,no ParentChildMap:" + s1.toString(), s1.isEmpty());
103 errorCollector.assertTrue("Secret, with ParentChildMap:" + s2.toString(), s2.isEmpty());
104 RevisionSet s3 = ph1.allDraft().symmetricDifference(rsDraft);
105 RevisionSet s4 = ph2.allDraft().symmetricDifference(rsDraft);
106 errorCollector.assertTrue("Draft,no ParentChildMap:" + s3.toString(), s3.isEmpty());
107 errorCollector.assertTrue("Draft, with ParentChildMap:" + s4.toString(), s4.isEmpty());
69 } 108 }
70 109
71 private HgPhase[] initAndCheck(PhasesHelper ph, HgPhase[] expected) throws HgRuntimeException { 110 private HgPhase[] initAndCheck(PhasesHelper ph, HgPhase[] expected) throws HgRuntimeException {
72 HgChangelog clog = ph.getRepo().getChangelog(); 111 HgChangelog clog = ph.getRepo().getChangelog();
73 HgPhase[] result = new HgPhase[clog.getRevisionCount()]; 112 HgPhase[] result = new HgPhase[clog.getRevisionCount()];