View Javadoc
1   package org.apache.maven.scm.provider.jazz.command.status;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   * http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.maven.scm.ScmFile;
23  import org.apache.maven.scm.ScmFileStatus;
24  import org.apache.maven.scm.log.DefaultLog;
25  import org.apache.maven.scm.provider.jazz.JazzScmTestCase;
26  import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository;
27  import org.codehaus.plexus.util.cli.Commandline;
28  
29  import java.util.List;
30  
31  /**
32   * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
33   */
34  public class JazzStatusCommandTest
35      extends JazzScmTestCase
36  {
37      private JazzScmProviderRepository repo;
38  
39      private JazzStatusConsumer statusConsumer;
40  
41      protected void setUp()
42          throws Exception
43      {
44          super.setUp();
45          repo = getScmProviderRepository();
46          statusConsumer = new JazzStatusConsumer( repo, new DefaultLog() );
47      }
48  
49      public void testCreateStatusCommand()
50          throws Exception
51      {
52          Commandline cmd = new JazzStatusCommand().createStatusCommand( repo, getScmFileSet() ).getCommandline();
53          String expected = "scm status --username myUserName --password myPassword --wide";
54          assertCommandLine( expected, getWorkingDirectory(), cmd );
55      }
56  
57      public void testConsumer()
58      {
59          statusConsumer.consumeLine(
60              "Workspace: (1000) \"Dave's Repository Workspace\" <-> (1001) \"SCM Plugin Stream\"" );
61          statusConsumer.consumeLine( "  Component: (1002) \"SCM Plugins\"" );
62          statusConsumer.consumeLine( "    Baseline: (1003) 1 \"Initial Baseline\"" );
63          statusConsumer.consumeLine( "    Unresolved:" );
64          statusConsumer.consumeLine(
65              "      d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java" );
66          statusConsumer.consumeLine(
67              "      a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProviderRenamed.java" );
68          statusConsumer.consumeLine(
69              "      d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/DeletedFile.java" );
70          statusConsumer.consumeLine(
71              "      a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/AddedFile.java" );
72          statusConsumer.consumeLine(
73              "      -c /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/ModifiedFile.java" );
74          statusConsumer.consumeLine( "    Outgoing:" );
75          statusConsumer.consumeLine( "      Change sets:" );
76          statusConsumer.consumeLine( "        (1008) --@ <No comment>" );
77          statusConsumer.consumeLine( "" );
78  
79          // Test the additional collected data, Workspace, Component, Baseline.
80          assertEquals( "Workspace is incorrect!", "Dave's Repository Workspace", repo.getWorkspace() );
81          assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
82          assertEquals( "Flow Target is incorrect!", "SCM Plugin Stream", repo.getFlowTarget() );
83          assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
84          assertEquals( "Component is incorrect!", "SCM Plugins", repo.getComponent() );
85          assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
86          assertNotNull( repo.getOutgoingChangeSetAliases() );
87          assertEquals( "Change Set Alias length is incorrect!", 1, repo.getOutgoingChangeSetAliases().size() );
88          assertEquals( "Change Set Alias is incorrect!", new Integer(1008), repo.getOutgoingChangeSetAliases().get(0));
89  
90          // Test the stream parsing and isPushChanges bits.
91          assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
92  
93          // Test the ScmFile and ScmFileStatus bits.
94          List<ScmFile> changedFiles = statusConsumer.getChangedFiles();
95          assertNotNull( changedFiles );
96          assertEquals( 5, changedFiles.size() );
97          assertTrue( changedFiles.contains(
98              new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java",
99                           ScmFileStatus.DELETED ) ) );
100         assertTrue( changedFiles.contains( new ScmFile(
101             "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProviderRenamed.java",
102             ScmFileStatus.ADDED ) ) );
103         assertTrue( changedFiles.contains(
104             new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/DeletedFile.java",
105                          ScmFileStatus.DELETED ) ) );
106         assertTrue( changedFiles.contains(
107             new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/AddedFile.java",
108                          ScmFileStatus.ADDED ) ) );
109         assertTrue( changedFiles.contains(
110             new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/ModifiedFile.java",
111                          ScmFileStatus.MODIFIED ) ) );
112     }
113 
114     public void testConsumerWithStream()
115     {
116         statusConsumer.consumeLine( "Workspace: (1156) \"GPDBWorkspace\" <-> (1157) \"GPDBStream\"" );
117         statusConsumer.consumeLine( "  Component: (1158) \"GPDB\" <-> (1157) \"GPDBStream\"" );
118         statusConsumer.consumeLine( "    Baseline: (1159) 1 \"Initial Baseline\"" );
119 
120         // Test the additional collected data, Workspace, Component, Baseline.
121         assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() );
122         assertEquals( "Workspace Alias is incorrect!", 1156, repo.getWorkspaceAlias() );
123         assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() );
124         assertEquals( "Flow Target Alias is incorrect!", 1157, repo.getFlowTargetAlias() );
125         assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() );
126         assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
127 
128         // Test the stream parsing and isPushChanges bits.
129         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
130         repo.setPushChanges( false );
131         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
132         repo.setPushChanges( true );
133         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
134     }
135 
136     public void testConsumerWithOutStream()
137     {
138         statusConsumer.consumeLine( "Workspace: (1156) \"GPDBWorkspace\" <-> (1156) \"GPDBWorkspace\"" );
139         statusConsumer.consumeLine( "  Component: (1158) \"GPDB\"" );
140         statusConsumer.consumeLine( "    Baseline: (1159) 1 \"Initial Baseline\"" );
141 
142         // Test the additional collected data, Workspace, Component, Baseline.
143         assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() );
144         assertEquals( "Workspace Alias is incorrect!", 1156, repo.getWorkspaceAlias() );
145         assertEquals( "Flow Target is incorrect!", "GPDBWorkspace", repo.getFlowTarget() );
146         assertEquals( "Flow Target Alias is incorrect!", 1156, repo.getFlowTargetAlias() );
147         assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() );
148         assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
149 
150         // Test the stream parsing and isPushChanges bits.
151         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
152         repo.setPushChanges( false );
153         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
154         repo.setPushChanges( true );
155         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
156     }
157 
158     public void testConsumerWithAdditionalInfo()
159     {
160         statusConsumer.consumeLine(
161             "Workspace: (1000) \"MavenStream Workspace\" <-> (1005) \"MavenStream Workspace\"" );
162         statusConsumer.consumeLine(
163             "  Component: (1002) \"FireDragon\" <-> (1005) \"MavenR3Stream Workspace\" (outgoing addition)" );
164         statusConsumer.consumeLine( "    Baseline: (1003) 1 \"Initial Baseline\"" );
165         statusConsumer.consumeLine( "    Unresolved:" );
166         statusConsumer.consumeLine( "      a-- /FireDragon/.project" );
167 
168         // Test the additional collected data, Workspace, Component, Baseline.
169         assertEquals( "Workspace is incorrect!", "MavenStream Workspace", repo.getWorkspace() );
170         assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
171         assertEquals( "Flow Target is incorrect!", "MavenStream Workspace", repo.getFlowTarget() );
172         assertEquals( "Flow Target Alias is incorrect!", 1005, repo.getFlowTargetAlias() );
173         assertEquals( "Component is incorrect!", "FireDragon", repo.getComponent() );
174         assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
175     }
176     
177     public void testConsumerWithMultipleChangeSets()
178     {
179     	statusConsumer.consumeLine( "Workspace: (1000) \"GPDBWorkspace\" <-> (1001) \"GPDBStream\"" );
180     	statusConsumer.consumeLine( "  Component: (1002) \"GPDB\"" );
181     	statusConsumer.consumeLine( "    Baseline: (1003) 49 \"GPDB-MAN-1.0.50\"" );
182     	statusConsumer.consumeLine( "    Unresolved:" );
183     	statusConsumer.consumeLine( "      a-- /GPDB/GPDBEAR/pom.xml.releaseBackup" );
184     	statusConsumer.consumeLine( "      a-- /GPDB/GPDBResources/pom.xml.releaseBackup" );
185     	statusConsumer.consumeLine( "      a-- /GPDB/GPDBWeb/pom.xml.releaseBackup" );
186     	statusConsumer.consumeLine( "      a-- /GPDB/pom.xml.releaseBackup" );
187     	statusConsumer.consumeLine( "    Outgoing:" );
188     	statusConsumer.consumeLine( "      Change sets:" );
189     	statusConsumer.consumeLine( "        (1012) *--@  \"Release the next release of GPDB.\" - "
190     			+ "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:38 PM" );
191     	statusConsumer.consumeLine( "        (1011) ---@  \"Release the next release of GPDB.\" - "
192     			+ "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:33 PM" );
193     	statusConsumer.consumeLine( "        (1010) ---@  \"Release the next release of GPDB.\" - "
194     			+ "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 09:28 PM" );
195     	statusConsumer.consumeLine( "        (1009) ---@  \"Release the next release of GPDB.\" - "
196     			+ "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 08:05 PM" );
197     	statusConsumer.consumeLine( "        (1008) ---@  \"Release the next release of GPDB.\" - "
198     			+ "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 08:00 PM" );
199     	statusConsumer.consumeLine( "        (1007) ---@  \"[maven-release-plugin] rollback the "
200     			+ "release of GPDB-1.0.51\" 02-May-2015 07:54 PM" );
201     	statusConsumer.consumeLine( "        (1006) ---@  \"[maven-release-plugin] prepare "
202     			+ "release GPDB-1.0.51\" 02-May-2015 09:33 PM" );
203 
204         // Test the additional collected data, Workspace, Component, Baseline.
205         assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() );
206         assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
207         assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() );
208         assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
209         assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() );
210         assertEquals( "Baseline is incorrect!", "GPDB-MAN-1.0.50", repo.getBaseline() );
211 
212         // Test the stream parsing and isPushChanges bits.
213         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
214         repo.setPushChanges( false );
215         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
216         repo.setPushChanges( true );
217         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
218 
219 
220         assertNotNull( repo.getOutgoingChangeSetAliases() );
221         assertEquals( "Change Set Alias length is incorrect!", 7, repo.getOutgoingChangeSetAliases().size() );
222         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1012), repo.getOutgoingChangeSetAliases().get(0));
223         assertEquals( "Change Set Alias [1] is incorrect!", new Integer(1011), repo.getOutgoingChangeSetAliases().get(1));
224         assertEquals( "Change Set Alias [2] is incorrect!", new Integer(1010), repo.getOutgoingChangeSetAliases().get(2));
225         assertEquals( "Change Set Alias [3] is incorrect!", new Integer(1009), repo.getOutgoingChangeSetAliases().get(3));
226         assertEquals( "Change Set Alias [4] is incorrect!", new Integer(1008), repo.getOutgoingChangeSetAliases().get(4));
227         assertEquals( "Change Set Alias [5] is incorrect!", new Integer(1007), repo.getOutgoingChangeSetAliases().get(5));
228         assertEquals( "Change Set Alias [6] is incorrect!", new Integer(1006), repo.getOutgoingChangeSetAliases().get(6));
229     }
230 
231     public void testConsumerWithMultipleChangeSetsAndWorkItems()
232     {
233     	statusConsumer.consumeLine( "Workspace: (1000) \"GPDBWorkspace\" <-> (1001) \"GPDBStream\"" );
234     	statusConsumer.consumeLine( "  Component: (1002) \"GPDB\"" );
235     	statusConsumer.consumeLine( "    Baseline: (1003) 49 \"GPDB-MAN-1.0.50\"" );
236     	statusConsumer.consumeLine( "    Unresolved:" );
237     	statusConsumer.consumeLine( "      a-- /GPDB/GPDBEAR/pom.xml.releaseBackup" );
238     	statusConsumer.consumeLine( "      a-- /GPDB/GPDBResources/pom.xml.releaseBackup" );
239     	statusConsumer.consumeLine( "      a-- /GPDB/GPDBWeb/pom.xml.releaseBackup" );
240     	statusConsumer.consumeLine( "      a-- /GPDB/pom.xml.releaseBackup" );
241     	statusConsumer.consumeLine( "    Outgoing:" );
242     	statusConsumer.consumeLine( "      Change sets:" );
243     	statusConsumer.consumeLine( "        (1012) *--@  62 \"Release the next release of GPDB.\" - "
244     			+ "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:38 PM" );
245     	statusConsumer.consumeLine( "        (1011) ---@  62 \"Release the next release of GPDB.\" - "
246     			+ "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:33 PM" );
247     	statusConsumer.consumeLine( "        (1010) ---@  62 \"Release the next release of GPDB.\" - "
248     			+ "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 09:28 PM" );
249     	statusConsumer.consumeLine( "        (1009) ---@  62 \"Release the next release of GPDB.\" - "
250     			+ "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 08:05 PM" );
251     	statusConsumer.consumeLine( "        (1008) ---@  62 \"Release the next release of GPDB.\" - "
252     			+ "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 08:00 PM" );
253     	statusConsumer.consumeLine( "        (1007) ---@  \"[maven-release-plugin] rollback the "
254     			+ "release of GPDB-1.0.51\" 02-May-2015 07:54 PM" );
255     	statusConsumer.consumeLine( "        (1006) ---@  \"[maven-release-plugin] prepare "
256     			+ "release GPDB-1.0.51\" 02-May-2015 09:33 PM" );
257 
258         // Test the additional collected data, Workspace, Component, Baseline.
259         assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() );
260         assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
261         assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() );
262         assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
263         assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() );
264         assertEquals( "Baseline is incorrect!", "GPDB-MAN-1.0.50", repo.getBaseline() );
265 
266         // Test the stream parsing and isPushChanges bits.
267         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
268         repo.setPushChanges( false );
269         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
270         repo.setPushChanges( true );
271         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
272 
273         assertNotNull( repo.getOutgoingChangeSetAliases() );
274         assertEquals( "Change Set Alias length is incorrect!", 7, repo.getOutgoingChangeSetAliases().size() );
275         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1012), repo.getOutgoingChangeSetAliases().get(0));
276         assertEquals( "Change Set Alias [1] is incorrect!", new Integer(1011), repo.getOutgoingChangeSetAliases().get(1));
277         assertEquals( "Change Set Alias [2] is incorrect!", new Integer(1010), repo.getOutgoingChangeSetAliases().get(2));
278         assertEquals( "Change Set Alias [3] is incorrect!", new Integer(1009), repo.getOutgoingChangeSetAliases().get(3));
279         assertEquals( "Change Set Alias [4] is incorrect!", new Integer(1008), repo.getOutgoingChangeSetAliases().get(4));
280         assertEquals( "Change Set Alias [5] is incorrect!", new Integer(1007), repo.getOutgoingChangeSetAliases().get(5));
281         assertEquals( "Change Set Alias [6] is incorrect!", new Integer(1006), repo.getOutgoingChangeSetAliases().get(6));
282     }
283     
284     public void testConsumerUnresolvedIncomingOutgoing()
285     {
286     	statusConsumer.consumeLine( "Workspace: (1756) \"Scott's GPDBWorkspace\" <-> (1157) \"GPDBStream\"" );
287     	statusConsumer.consumeLine( "  Component: (1158) \"GPDB\"" );
288     	statusConsumer.consumeLine( "    Baseline: (1718) 25 \"GPDB-1.0.25\"" );
289     	statusConsumer.consumeLine( "    Unresolved:" );
290     	statusConsumer.consumeLine( "      -c- /GPDB/pom.xml" );
291     	statusConsumer.consumeLine( "    Outgoing:" );
292     	statusConsumer.consumeLine( "      Change sets:" );
293     	statusConsumer.consumeLine( "        (2389) *--@  \"<No comment>\" 23-May-2015 07:09 PM" );
294     	statusConsumer.consumeLine( "    Incoming:" );
295     	statusConsumer.consumeLine( "      Change sets:" );
296     	statusConsumer.consumeLine( "        (2385) ---$ Deb 62 \"Release the next release of GPDB.\""
297     	    + " - \"[maven-release-plugin] prepare for next development itera...\" 02-May-2015 11:01 PM" );
298     	statusConsumer.consumeLine( "    Baselines:" );
299     	statusConsumer.consumeLine( "      (2386) 52 \"GPDB-1.0.53\"" );
300     	statusConsumer.consumeLine( "      (2387) 51 \"GPDB-1.0.52\"" );
301     	statusConsumer.consumeLine( "      (2388) 50 \"GPDB-1.0.51\"" );
302     	statusConsumer.consumeLine( "      (2369) 49 \"GPDB-MAN-1.0.50\"" );
303     	statusConsumer.consumeLine( "      (2362) 48 \"GPDB-1.0.50\"" );
304     	statusConsumer.consumeLine( "      (2357) 47 \"GPDB-1.0.49\"" );
305     	statusConsumer.consumeLine( "      (2352) 46 \"GPDB-1.0.48\"" );
306     	statusConsumer.consumeLine( "      (2347) 45 \"GPDB-1.0.47\"" );
307     	statusConsumer.consumeLine( "      (2292) 44 \"GPDB-1.0.46\"" );
308     	statusConsumer.consumeLine( "      (2285) 42 \"GPDB-1.0.42\"" );
309     	statusConsumer.consumeLine( "      (2276) 41 \"GPDB-1.0.41\"" );
310     	statusConsumer.consumeLine( "      (2259) 40 \"GPDB-1.0.40\"" );
311     	statusConsumer.consumeLine( "      (2250) 39 \"GPDB-1.0.39\"" );
312     	statusConsumer.consumeLine( "      (2241) 38 \"GPDB-1.0.38\"" );
313     	statusConsumer.consumeLine( "      (2232) 37 \"GPDB-1.0.37\"" );
314     	statusConsumer.consumeLine( "      (2222) 36 \"GPDB-1.0.36\"" );
315     	statusConsumer.consumeLine( "      (2212) 35 \"GPDB-1.0.35\"" );
316     	statusConsumer.consumeLine( "      (2202) 34 \"GPDB-1.0.34\"" );
317     	statusConsumer.consumeLine( "      (2191) 33 \"GPDB-1.0.33\"" );
318     	statusConsumer.consumeLine( "      (2181) 32 \"GPDB-1.0.32\"" );
319     	statusConsumer.consumeLine( "      (2171) 31 \"GPDB-1.0.31\"" );
320     	statusConsumer.consumeLine( "      (2160) 30 \"GPDB-1.0.30\"" );
321     	statusConsumer.consumeLine( "      (2147) 29 \"GPDB-1.0.29\"" );
322     	statusConsumer.consumeLine( "      (2079) 28 \"GPDB-1.0.28\"" );
323     	statusConsumer.consumeLine( "      (1851) 27 \"GPDB-1.0.27\"" );
324     	statusConsumer.consumeLine( "      (1807) 26 \"GPDB-1.0.26\"" );
325 
326         // Test the additional collected data, Workspace, Component, Baseline.
327         assertEquals( "Workspace is incorrect!", "Scott's GPDBWorkspace", repo.getWorkspace() );
328         assertEquals( "Workspace Alias is incorrect!", 1756, repo.getWorkspaceAlias() );
329         assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() );
330         assertEquals( "Flow Target Alias is incorrect!", 1157, repo.getFlowTargetAlias() );
331         assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() );
332         assertEquals( "Baseline is incorrect!", "GPDB-1.0.25", repo.getBaseline() );
333 
334         // Test the stream parsing and isPushChanges bits.
335         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
336         repo.setPushChanges( false );
337         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
338         repo.setPushChanges( true );
339         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
340 
341         assertNotNull( repo.getOutgoingChangeSetAliases() );
342         assertEquals( "Change Set Alias length is incorrect!", 1, repo.getOutgoingChangeSetAliases().size() );
343         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(2389), repo.getOutgoingChangeSetAliases().get(0));
344 
345         assertNotNull( repo.getIncomingChangeSetAliases() );
346         assertEquals( "Change Set Alias length is incorrect!", 1, repo.getIncomingChangeSetAliases().size() );
347         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(2385), repo.getIncomingChangeSetAliases().get(0));
348     }
349     
350     public void testCollision()
351     {
352     	statusConsumer.consumeLine( "Workspace: (8551) \"myNewWorkspace\" <-> (8552) \"stream19_test_max_results_1256765247692134\"" );
353     	statusConsumer.consumeLine( "  Component: (8553) \"Flux Capacitor\"" );
354     	statusConsumer.consumeLine( "    Baseline: (8554) 1 \"Initial Baseline\"" );
355     	statusConsumer.consumeLine( "    Outgoing:" );
356     	statusConsumer.consumeLine( "      Change sets:" );
357     	statusConsumer.consumeLine( "        (8617) -#@ \"Update from November planning meeting\"" );
358     	statusConsumer.consumeLine( "          Changes:" );
359     	statusConsumer.consumeLine( "            -#-c /flux.capacitor/requirements.txt" );
360     	statusConsumer.consumeLine( "    Incoming:" );
361     	statusConsumer.consumeLine( "      Change sets:" );
362     	statusConsumer.consumeLine( "        (8616) -#$ \"Results of initial trials\"" );
363     	statusConsumer.consumeLine( "          Changes:" );
364     	statusConsumer.consumeLine( "            -#-c /flux.capacitor/requirements.txt" );
365 
366         // Test the additional collected data, Workspace, Component, Baseline.
367         assertEquals( "Workspace is incorrect!", "myNewWorkspace", repo.getWorkspace() );
368         assertEquals( "Workspace Alias is incorrect!", 8551, repo.getWorkspaceAlias() );
369         assertEquals( "Flow Target is incorrect!", "stream19_test_max_results_1256765247692134", repo.getFlowTarget() );
370         assertEquals( "Flow Target Alias is incorrect!", 8552, repo.getFlowTargetAlias() );
371         assertEquals( "Component is incorrect!", "Flux Capacitor", repo.getComponent() );
372         assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
373 
374         // Test the stream parsing and isPushChanges bits.
375         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
376         repo.setPushChanges( false );
377         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
378         repo.setPushChanges( true );
379         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
380 
381         assertNotNull( repo.getOutgoingChangeSetAliases() );
382         assertEquals( "Change Set Alias length is incorrect!", 1, repo.getOutgoingChangeSetAliases().size() );
383         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(8617), repo.getOutgoingChangeSetAliases().get(0));
384 
385         assertNotNull( repo.getIncomingChangeSetAliases() );
386         assertEquals( "Change Set Alias length is incorrect!", 1, repo.getIncomingChangeSetAliases().size() );
387         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(8616), repo.getIncomingChangeSetAliases().get(0));
388 
389 //        // Test the ScmFile and ScmFileStatus bits. (Needs a bit of work here)
390 //        List<ScmFile> changedFiles = statusConsumer.getChangedFiles();
391 //        assertNotNull( changedFiles );
392 //        assertEquals( 1, changedFiles.size() );
393 //        assertTrue( changedFiles.contains( new ScmFile( "/flux.capacitor/requirements.txt", ScmFileStatus.CONFLICT ) ) );
394     }
395     
396     public void testIncoming()
397     {
398     	statusConsumer.consumeLine( "Workspace: (1026) \"DEV-build-POC-Builder\" <-> (1011) \"DEV-build-Management-Release plugin POC\"" );
399     	statusConsumer.consumeLine( "  Component: (1095) \"FW-Maven-ReleasePlugin-POC\"" );
400     	statusConsumer.consumeLine( "    Baseline: (1103) 2 \"release_poc-build-0.0.3\"" );
401     	statusConsumer.consumeLine( "    Incoming:" );
402     	statusConsumer.consumeLine( "      Change sets:" );
403     	statusConsumer.consumeLine( "        (1106) ---$  28383 \"Detemine more efficient way to perform releases using mav...\" - \"Updated SCM settings\" 05-May-2015 10:26 AM" );
404 
405         // Test the additional collected data, Workspace, Component, Baseline.
406         assertEquals( "Workspace is incorrect!", "DEV-build-POC-Builder", repo.getWorkspace() );
407         assertEquals( "Workspace Alias is incorrect!", 1026, repo.getWorkspaceAlias() );
408         assertEquals( "Flow Target is incorrect!", "DEV-build-Management-Release plugin POC", repo.getFlowTarget() );
409         assertEquals( "Flow Target Alias is incorrect!", 1011, repo.getFlowTargetAlias() );
410         assertEquals( "Component is incorrect!", "FW-Maven-ReleasePlugin-POC", repo.getComponent() );
411         assertEquals( "Baseline is incorrect!", "release_poc-build-0.0.3", repo.getBaseline() );
412 
413         // Test the stream parsing and isPushChanges bits.
414         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
415         repo.setPushChanges( false );
416         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
417         repo.setPushChanges( true );
418         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
419 
420         assertNotNull( repo.getIncomingChangeSetAliases() );
421         assertEquals( "Change Set Alias length is incorrect!", 1, repo.getIncomingChangeSetAliases().size() );
422         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1106), repo.getIncomingChangeSetAliases().get(0));
423     }
424     
425     public void testMultipleIncoming()
426     {
427     	statusConsumer.consumeLine( "Workspace: (1000) \"Chris-Blah-Workspace\" <-> (1001) \"CHRIS_Blah_Stream\"" );
428     	statusConsumer.consumeLine( "  Component: (1002) \"Data_Models\"" );
429     	statusConsumer.consumeLine( "    Baseline: (1003) 465 \"CHRIS_BLAH_20150516_190700_1\"" );
430     	statusConsumer.consumeLine( "    Unresolved:" );
431     	statusConsumer.consumeLine( "      -c- /Data Model/.settings/org.eclipse.core.resources.prefs" );
432     	statusConsumer.consumeLine( "    Incoming:" );
433     	statusConsumer.consumeLine( "      Change sets:" );
434     	statusConsumer.consumeLine( "        (1004) ---$ chrisgwarp 1573 \"Manage Work Order Business Spec\" - \"PROJ-1001 - Added Hist...\" 15-May-2015 12:53 PM" );
435     	statusConsumer.consumeLine( "        (1005) ---$ chrisgwarp 1573 \"Manage Work Order Business Spec\" - \"PROJ-1001 - Removed Error Code 020...\" 14-May-2015 05:59 PM" );
436 
437         // Test the additional collected data, Workspace, Component, Baseline.
438         assertEquals( "Workspace is incorrect!", "Chris-Blah-Workspace", repo.getWorkspace() );
439         assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
440         assertEquals( "Flow Target is incorrect!", "CHRIS_Blah_Stream", repo.getFlowTarget() );
441         assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
442         assertEquals( "Component is incorrect!", "Data_Models", repo.getComponent() );
443         assertEquals( "Baseline is incorrect!", "CHRIS_BLAH_20150516_190700_1", repo.getBaseline() );
444 
445         // Test the stream parsing and isPushChanges bits.
446         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
447         repo.setPushChanges( false );
448         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
449         repo.setPushChanges( true );
450         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
451 
452         assertNotNull( repo.getIncomingChangeSetAliases() );
453         assertEquals( "Change Set Alias length is incorrect!", 2, repo.getIncomingChangeSetAliases().size() );
454         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1004), repo.getIncomingChangeSetAliases().get(0));
455         assertEquals( "Change Set Alias [1] is incorrect!", new Integer(1005), repo.getIncomingChangeSetAliases().get(1));
456     }
457     
458     public void testIncomingOutgoing()
459     {
460     	statusConsumer.consumeLine( "Workspace: (8551) \"myNewWorkspace\" <-> (8552) \"stream19_test_max_results_1256765247692134\"" );
461     	statusConsumer.consumeLine( "  Component: (8553) \"Flux Capacitor\"" );
462     	statusConsumer.consumeLine( "    Baseline: (8554) 1 \"Initial Baseline\"" );
463     	statusConsumer.consumeLine( "    Outgoing:" );
464     	statusConsumer.consumeLine( "      Change sets:" );
465     	statusConsumer.consumeLine( "        (8556) ---@" );
466     	statusConsumer.consumeLine( "          Changes:" );
467     	statusConsumer.consumeLine( "            ---c- /flux.capacitor/requirements.txt" );
468     	statusConsumer.consumeLine( "    Incoming:" );
469     	statusConsumer.consumeLine( "      Change sets:" );
470     	statusConsumer.consumeLine( "        (8615) ---$ \"Initial layout\"" );
471     	statusConsumer.consumeLine( "          Changes:" );
472     	statusConsumer.consumeLine( "            ---c- /flux.capacitor/diagrams/design.cad" );
473 
474         // Test the additional collected data, Workspace, Component, Baseline.
475         assertEquals( "Workspace is incorrect!", "myNewWorkspace", repo.getWorkspace() );
476         assertEquals( "Workspace Alias is incorrect!", 8551, repo.getWorkspaceAlias() );
477         assertEquals( "Flow Target is incorrect!", "stream19_test_max_results_1256765247692134", repo.getFlowTarget() );
478         assertEquals( "Flow Target Alias is incorrect!", 8552, repo.getFlowTargetAlias() );
479         assertEquals( "Component is incorrect!", "Flux Capacitor", repo.getComponent() );
480         assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
481 
482         // Test the stream parsing and isPushChanges bits.
483         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
484         repo.setPushChanges( false );
485         assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
486         repo.setPushChanges( true );
487         assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
488 
489         assertNotNull( repo.getOutgoingChangeSetAliases() );
490         assertEquals( "Change Set Alias length is incorrect!", 1, repo.getOutgoingChangeSetAliases().size() );
491         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(8556), repo.getOutgoingChangeSetAliases().get(0));
492 
493         assertNotNull( repo.getIncomingChangeSetAliases() );
494         assertEquals( "Change Set Alias length is incorrect!", 1, repo.getIncomingChangeSetAliases().size() );
495         assertEquals( "Change Set Alias [0] is incorrect!", new Integer(8615), repo.getIncomingChangeSetAliases().get(0));
496     }
497     
498     public void testServerUnreachable1()
499     {
500     	statusConsumer.consumeLine( "Workspace: (1000) \"GPDBWorkspace\" (This workspace is unreachable.)" );
501     	statusConsumer.consumeLine( "  Could not log in to https://rtc:9444/jazz/ as user Deb: CRJAZ2384E Cannot" );
502     	statusConsumer.consumeLine( "  connect to the repository at URL \"https://rtc:9444/jazz\", see the nested" );
503     	statusConsumer.consumeLine( "  exception for more details. For more details, open the help system and search" );
504     	statusConsumer.consumeLine( "  for CRJAZ2384E." );
505     	
506     }
507     
508     public void testServerUnreachable2()
509     {
510     	statusConsumer.consumeLine( "Workspace: (1000) \"Chris-Blah-Workspace\" (This workspace is unreachable.)" );
511     	statusConsumer.consumeLine( "  Could not determine the URI required to connect to the repository. The UUID of" );
512     	statusConsumer.consumeLine( "  the repository is _Bzjnksdkmfsaklmz-5uTdf. If you know the repository URI run" );
513     	statusConsumer.consumeLine( "  'login' command providing the repository URI. If not, please contact your" );
514     	statusConsumer.consumeLine( "  administrator." );
515     	
516     }
517     
518     public void testServerUnreachable3()
519     {
520         statusConsumer.consumeLine( "Workspace: (----) \"Chris-Project-XXXXXX-Workspace\" (This workspace is unreachable.)" );
521         statusConsumer.consumeLine( "  Could not determine the URI required to connect to the repository. The UUID of" );
522         statusConsumer.consumeLine( "  the repository is _ZdjnafkjnEmkEW5-4HuDag. If you know the repository URI run" );
523         statusConsumer.consumeLine( "  'login' command providing the repository URI. If not, please contact your" );
524         statusConsumer.consumeLine( "  administrator." );
525 
526     }
527 }