001package org.apache.maven.scm.provider.jazz.command.status;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import org.apache.maven.scm.ScmFile;
023import org.apache.maven.scm.ScmFileStatus;
024import org.apache.maven.scm.log.DefaultLog;
025import org.apache.maven.scm.provider.jazz.JazzScmTestCase;
026import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository;
027import org.codehaus.plexus.util.cli.Commandline;
028
029import java.util.List;
030
031/**
032 * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
033 */
034public class JazzStatusCommandTest
035    extends JazzScmTestCase
036{
037    private JazzScmProviderRepository repo;
038
039    private JazzStatusConsumer statusConsumer;
040
041    protected void setUp()
042        throws Exception
043    {
044        super.setUp();
045        repo = getScmProviderRepository();
046        statusConsumer = new JazzStatusConsumer( repo, new DefaultLog() );
047    }
048
049    public void testCreateStatusCommand()
050        throws Exception
051    {
052        Commandline cmd = new JazzStatusCommand().createStatusCommand( repo, getScmFileSet() ).getCommandline();
053        String expected = "scm status --username myUserName --password myPassword --wide";
054        assertCommandLine( expected, getWorkingDirectory(), cmd );
055    }
056
057    public void testConsumer()
058    {
059        statusConsumer.consumeLine(
060            "Workspace: (1000) \"Dave's Repository Workspace\" <-> (1001) \"SCM Plugin Stream\"" );
061        statusConsumer.consumeLine( "  Component: (1002) \"SCM Plugins\"" );
062        statusConsumer.consumeLine( "    Baseline: (1003) 1 \"Initial Baseline\"" );
063        statusConsumer.consumeLine( "    Unresolved:" );
064        statusConsumer.consumeLine(
065            "      d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java" );
066        statusConsumer.consumeLine(
067            "      a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProviderRenamed.java" );
068        statusConsumer.consumeLine(
069            "      d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/DeletedFile.java" );
070        statusConsumer.consumeLine(
071            "      a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/AddedFile.java" );
072        statusConsumer.consumeLine(
073            "      -c /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/ModifiedFile.java" );
074        statusConsumer.consumeLine( "    Outgoing:" );
075        statusConsumer.consumeLine( "      Change sets:" );
076        statusConsumer.consumeLine( "        (1008) --@ <No comment>" );
077        statusConsumer.consumeLine( "" );
078
079        // Test the additional collected data, Workspace, Component, Baseline.
080        assertEquals( "Workspace is incorrect!", "Dave's Repository Workspace", repo.getWorkspace() );
081        assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
082        assertEquals( "Flow Target is incorrect!", "SCM Plugin Stream", repo.getFlowTarget() );
083        assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
084        assertEquals( "Component is incorrect!", "SCM Plugins", repo.getComponent() );
085        assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
086        assertNotNull( repo.getOutgoingChangeSetAliases() );
087        assertEquals( "Change Set Alias length is incorrect!", 1, repo.getOutgoingChangeSetAliases().size() );
088        assertEquals( "Change Set Alias is incorrect!", new Integer(1008), repo.getOutgoingChangeSetAliases().get(0));
089
090        // Test the stream parsing and isPushChanges bits.
091        assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
092
093        // Test the ScmFile and ScmFileStatus bits.
094        List<ScmFile> changedFiles = statusConsumer.getChangedFiles();
095        assertNotNull( changedFiles );
096        assertEquals( 5, changedFiles.size() );
097        assertTrue( changedFiles.contains(
098            new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java",
099                         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}