Subversion Repositories DevTools

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6914 dpurdie 1
package com.erggroup.buildtool.utf;
2
 
3
 
4
import java.sql.SQLException;
5
import java.util.ArrayList;
6
import java.util.Date;
7048 dpurdie 7
import java.util.Iterator;
6914 dpurdie 8
 
9
import com.erggroup.buildtool.daemon.BuildDaemon;
10
import com.erggroup.buildtool.daemon.BuildThread;
11
import com.erggroup.buildtool.daemon.MasterThread;
12
import com.erggroup.buildtool.daemon.SlaveThread;
13
import com.erggroup.buildtool.ripple.BuildFile;
14
import com.erggroup.buildtool.ripple.BuildFile.BuildFileState;
15
import com.erggroup.buildtool.ripple.BuildStandard;
16
import com.erggroup.buildtool.ripple.ReleaseConfig;
17
import com.erggroup.buildtool.ripple.ReleaseManager;
18
import com.erggroup.buildtool.ripple.Package;
19
import com.erggroup.buildtool.ripple.RippleEngine;
20
import com.erggroup.buildtool.ripple.RunLevelData;
21
import com.erggroup.buildtool.ripple.RunLevel.BuildState;
22
 
7033 dpurdie 23
import org.slf4j.Logger;
24
import org.slf4j.LoggerFactory;
6914 dpurdie 25
import org.junit.AfterClass;
26
import org.junit.BeforeClass;
27
import org.junit.After;
28
import org.junit.Before;
29
import org.junit.Test;
30
import org.junit.runner.JUnitCore;
31
 
32
import static org.junit.Assert.*;
33
 
34
/**
35
 * container of Build Daemon test methods
36
 */
37
public class DaemonBuildTestCase
38
{
7033 dpurdie 39
    private static final Logger mLogger = LoggerFactory.getLogger(DaemonBuildTestCase.class);
7051 dpurdie 40
    myReleaseManager            releaseManager = null;
6914 dpurdie 41
    RippleEngine                rippleEngine   = null;
7051 dpurdie 42
    ArrayList<Package> testPackageCollection   = new ArrayList<Package>();
6914 dpurdie 43
 
7051 dpurdie 44
    /**
45
     * Init the package set
46
     */
7070 dpurdie 47
    public void initTestPackages(String setName)
7051 dpurdie 48
    {
7070 dpurdie 49
        releaseManager.initTestPackages(rippleEngine, testPackageCollection, setName);
7051 dpurdie 50
    }
51
 
52
    /** Create a WIP for a package in the Release
53
     * This will mark it as directlyPlanned
54
     * @param newPvId
55
     * @param alias
56
     */
57
    private Package createWip(int newPvId, String alias) {
58
 
59
        Package wip = ReleaseManager.NULL_PACKAGE;
60
 
61
        for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
62
        {
63
            Package p = it.next();
64
 
65
            if ( p.mAlias.compareTo( alias ) == 0 )
66
            {
67
                wip = new Package(newPvId, p);
68
                wip.mDirectlyPlanned = true;
69
                testPackageCollection.add(wip);
70
                break;
71
            }
72
        }
73
        return wip;
74
    }
75
 
76
 
77
 
6914 dpurdie 78
    /** Subclass and override key methods so that the test can control
79
     *  the data being used
80
     */
81
    public class myReleaseManager extends ReleaseManagerUtf
82
	{
83
        int mAmyReleaseManager = 1;
7051 dpurdie 84
 
85
       public myReleaseManager(final String connectionString, final String username, final String password)
6914 dpurdie 86
		{
7070 dpurdie 87
           super(connectionString, username, password);
88
           mLogger.error("Test {}", connectionString);
6914 dpurdie 89
		}
90
 
91
		public myReleaseManager()
92
		{
93
			super();
94
		}
95
 
96
		@Override
7048 dpurdie 97
		public void queryPackageVersions(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
6914 dpurdie 98
		{
7048 dpurdie 99
 
100
		    //    Filter for the packages that are in the release
101
		    for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
102
	        {
103
	            Package p = it.next();
104
	            if (!p.mDirectlyPlanned && p.mTestBuildInstruction == 0 && p.mForcedRippleInstruction == 0)
105
	            {
106
	                p.mIsNotReleased = false;
7070 dpurdie 107
	                p.mBuildTime = 90;
7048 dpurdie 108
	                packageCollection.add(p);
109
	            }
110
	        }
6914 dpurdie 111
 
7048 dpurdie 112
		}
113
 
114
		@Override
115
        public void queryWips(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
116
        {
117
            //    Filter for the packages that are WIPs
118
            for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
119
            {
120
                Package p = it.next();
121
                if (p.mDirectlyPlanned )
122
                {
123
                    p.mIsNotReleased = true;
124
                    p.mDirectlyPlanned = true;
125
                    p.mBuildReason = BuildReason.NewVersion;
7070 dpurdie 126
                    p.mBuildTime = 100;
7048 dpurdie 127
                    packageCollection.add(p);
128
                }
129
            }
130
 
131
        }
132
 
133
		@Override
134
        public void queryTest(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
135
        {
136
		    //    Filter for the packages that are TEST builds
137
            for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
138
            {
139
    		    Package p = it.next();
140
                if (p.mTestBuildInstruction != 0 )
141
                {
142
                    p.mIsNotReleased = true;
143
                    p.mDirectlyPlanned = false;
144
                    p.mBuildReason = BuildReason.Test;
145
                    packageCollection.add(p);
146
                }
147
            }
148
 
149
        }
150
 
151
		@Override
152
        public void queryRipples(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
153
        {
154
		    //    Filter for the packages that are forced Ripples
155
            for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
156
            {		    
157
    		    Package p = it.next();
158
                if (p.mForcedRippleInstruction != 0)
159
                {
160
                    p.mIsNotReleased = true;
161
                    p.mDirectlyPlanned = false;
162
                    p.mBuildReason = BuildReason.Ripple;
7070 dpurdie 163
                    p.mBuildTime = 3;
7048 dpurdie 164
                    packageCollection.add(p);
165
                } 
166
            }
167
        }
168
 
6914 dpurdie 169
		@Override
170
		public void queryReleaseConfig(final String hostname) throws SQLException, Exception
171
		{
172
		    mReleaseConfigCollection.resetData();
173
 
174
		    if ( mConnectionString.compareTo("unit test spawn thread") == 0)
175
		    {
176
		        mLogger.info("queryReleaseConfig 3 unit test spawn thread");
177
		        // specifying a gbebuildfilter of unit test is designed to invoke a benign thread for unit test purposes
178
		        ReleaseConfig releaseConfig = new ReleaseConfig(1,1,'M', "DummyHost1","DummyTarget1", "DummyMachtype1", "Win32");
179
		        mReleaseConfigCollection.add(releaseConfig);
180
		        releaseConfig = new ReleaseConfig(2,2,'S', "DummyHost2","DummyTarget2", "DummyMachtype2", "Linux");
181
		        mReleaseConfigCollection.add(releaseConfig);
182
		    }
183
		}
184
 
185
		@Override 
186
		public boolean queryReleaseConfig(final int rtag_id, final int rcon_id,final String machine_hostname, final char daemon_mode,  final long threadStartTime) throws SQLException, Exception
187
		 {
188
		     boolean retVal = false;
189
 
190
		     if ( mConnectionString.compareTo("unit test exit") != 0 )
191
		     {
192
		         retVal = true;
193
		     }
194
		     return retVal;
195
		 }
196
 
197
		@Override
198
		 public void queryRunLevel(final int rtag_id) throws SQLException, Exception
199
		 {
200
		     if ( mConnectionString.compareTo("unit test coordinate slave threads") == 0)
201
		     {
202
 
203
		         if ( mRunLevelCollection.size() == 0)
204
		         {
205
		             // first time not all slave threads are waiting
206
		             RunLevelData runLevel = new RunLevelData(1, BuildState.DB_WAITING, 'S',0);
207
		             mRunLevelCollection.add(runLevel);
208
		             runLevel = new RunLevelData(2, BuildState.DB_IDLE, 'S',0);
209
		             mRunLevelCollection.add(runLevel);
210
		         }
211
		         else
212
		         {
213
		             // subsequent times all slave threads are waiting
214
		             mRunLevelCollection.clear();
215
		             RunLevelData runLevel = new RunLevelData(1, BuildState.DB_WAITING, 'S',0);
216
		             mRunLevelCollection.add(runLevel);
217
		             runLevel = new RunLevelData(2, BuildState.DB_WAITING, 'S',0);
218
		             mRunLevelCollection.add(runLevel);
219
		         }
220
		     }
221
		 }
222
 
223
		 public boolean queryRunLevelSchedule(Date resumeTime, boolean recover) throws SQLException, Exception
224
		 {
225
		     boolean retVal = true;
226
 
227
		     if ( mConnectionString.compareTo("unit test not allowed to proceed") == 0 )
228
		     {
229
		         // schedule a 100ms max wait
230
		         resumeTime.setTime( resumeTime.getTime() + 100 );
231
		         retVal = false;
232
		     }
233
		     return retVal;
234
		 }
7051 dpurdie 235
 
236
		 /** Build a single package collection
237
		     * It will be split up when requested by the classes under test 
238
		     * 
239
		     * @param packageCollection
240
		     */
7070 dpurdie 241
		    private void initTestPackages(RippleEngine rippleEngine, ArrayList<Package> packageCollection, String setName)
7051 dpurdie 242
		    {
243
		        packageCollection.clear();
244
 
245
		        /* a highly unlikely set of packages
246
		         * planned info
247
		         * pv_id pkg_id pkg_name                     v_ext pkg_vcs_tag                            change_type
248
		         * 0     76     UncommonDependency           .tim  0.TIM.WIP \vob\UncommonDependency           P
249
		         * 1     1011   DependencyMissingFromRelease .tim  1.TIM.WIP \vob\DependencyMissingFromRelease M
250
		         * 2     34     CommonDependency             .tim  2.TIM.WIP \vob\CommonDependency             M
251
		         * 3     908    SolarisCentricProduct        .tim  3.TIM.WIP \vob\SolarisCentricProduct        N
252
		         * 4     6      GenericProduct               .tim  4.TIM.WIP \vob\GenericProduct               P
253
		         * 5     11     Product                      .tim  5.TIM.WIP \vob\Product                      M
254
		         * 6     113    UnfinishedProduct            .tim  6.TIM.WIP \vob\UnfinishedProduct            M
255
		         * 25    45     Banana                       .tim  B.TIM.WIP \vob\Banana                       M
256
		         */
257
                 Package p;
258
 
7070 dpurdie 259
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 260
		         {
261
		           p = new Package(76, 0, "UncommonDependency", "1.0.0000", ".tim", "UncommonDependency.tim", "CC::/vob/UncommonDependency::0.TIM.WIP", 'b', 'P');
262
		           //p.mDirectlyPlanned = true;
263
		           packageCollection.add(p);
264
		         }
265
 
266
	             p = new Package(1011, 1, "DependencyMissingFromRelease", "1.0.0000", ".tim", "DependencyMissingFromRelease.tim", "CC::/vob/DependencyMissingFromRelease::1.TIM.WIP", 'b', 'M');
267
	             //p.mDirectlyPlanned = true;
268
	             packageCollection.add(p);
269
 
270
 
7070 dpurdie 271
		         if ( setName.compareTo("iteration1") == 0 
272
		           || setName.compareTo("iteration2") == 0 )
7051 dpurdie 273
		         {
274
		           p = new Package(34, 2, "CommonDependency", "1.0.0000", ".tim", "CommonDependency.tim", "CC::/vob/CommonDependency::2.TIM.WIP", 'b', 'M');
275
		           //p.mDirectlyPlanned = true;
276
		           packageCollection.add(p);
277
		         }
278
 
7070 dpurdie 279
		         if ( setName.compareTo("iteration1") == 0 
280
		           || setName.compareTo("iteration2") == 0
281
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 282
		         {
283
		           p = new Package(908, 3, "SolarisCentricProduct", "1.0.0000", ".tim", "SolarisCentricProduct.tim", "CC::/vob/SolarisCentricProduct::3.TIM.WIP", 'b', 'N');
284
		           //p.mDirectlyPlanned = true;
285
		           packageCollection.add(p);
286
		         }
287
 
7070 dpurdie 288
		         if ( setName.compareTo("iteration1") == 0 
289
		           || setName.compareTo("iteration2") == 0
290
		           || setName.compareTo("iteration3") == 0
291
		           || setName.compareTo("iteration4") == 0 )
7051 dpurdie 292
		         {
293
		           p = new Package(6, 4, "GenericProduct", "1.0.0000", ".tim", "GenericProduct.tim", "CC::/vob/GenericProduct::4.TIM.WIP", 'b', 'P');
294
		           //p.mDirectlyPlanned = true;
295
		           packageCollection.add(p);
296
		         }
297
 
7070 dpurdie 298
		         if ( setName.compareTo("iteration1") == 0 
299
		           || setName.compareTo("iteration2") == 0
300
		           || setName.compareTo("iteration3") == 0
301
		           || setName.compareTo("iteration4") == 0
302
		           || setName.compareTo("iteration5") == 0 )
7051 dpurdie 303
		         {
304
		           p = new Package(11, 5, "Product", "1.0.0000", ".tim", "Product.tim", "CC::/vob/Product::5.TIM.WIP", 'b', 'M');
305
		           //p.mDirectlyPlanned = true;
306
		           packageCollection.add(p);
307
		         }
308
 
309
		         p = new Package(113, 6, "UnfinishedProduct", "1.0.0000", ".tim", "UnfinishedProduct.tim", "CC::/vob/UnfinishedProduct::6.TIM.WIP", 'b', 'M');
310
		         //p.mDirectlyPlanned = true;
311
		         packageCollection.add(p);
312
 
7070 dpurdie 313
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 314
		         {
315
		           p = new Package(45, 25, "Banana", "1.0.0000", ".tim", "Banana.tim", "CC::B.TIM.WIP/vob/Banana", 'b', 'M');
316
		           //p.mDirectlyPlanned = true;
317
		           packageCollection.add(p);
318
		         }
319
 
320
		        /* planned dependencies
321
		         * pv_id pkg_name                     v_ext
322
		         * 1     NotInTheRelease              .cots
323
		         * 2     CotsWithFunnyVersion         .cots
324
		         * 2     UncommonDependency           .tim
325
		         * 3     CommonDependency             .tim
326
		         * 4     CommonDependency             .tim
327
		         * 5     UncommonDependency           .tim
328
		         * 25    Car                          .tim
329
		         */
330
		         p = findPackage(1, packageCollection);
331
		         p.mDependencyCollection.add("NotInTheRelease.cots");
332
		         p.mDependencyIDCollection.add(-1);
333
 
7070 dpurdie 334
		         if ( setName.compareTo("iteration1") == 0 
335
		           || setName.compareTo("iteration2") == 0 )
7051 dpurdie 336
		         {
337
		           p = findPackage(2, packageCollection);
338
		           p.mDependencyCollection.add("CotsWithFunnyVersion.cots");
339
		           p.mDependencyIDCollection.add(7);
340
		           p.mDependencyCollection.add("UncommonDependency.tim");
341
		           p.mDependencyIDCollection.add(0);
342
		         }
343
 
7070 dpurdie 344
		         if ( setName.compareTo("iteration1") == 0 
345
		           || setName.compareTo("iteration2") == 0
346
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 347
		         {
348
		           p = findPackage(3, packageCollection);
349
		           p.mDependencyCollection.add("CommonDependency.tim");
350
		           p.mDependencyIDCollection.add(2);
351
		         }
352
 
7070 dpurdie 353
		         if ( setName.compareTo("iteration1") == 0 
354
		           || setName.compareTo("iteration2") == 0
355
		           || setName.compareTo("iteration3") == 0
356
		           || setName.compareTo("iteration4") == 0 )
7051 dpurdie 357
		         {
358
		           p = findPackage(4, packageCollection);
359
		           p.mDependencyCollection.add("CommonDependency.tim");
360
		           p.mDependencyIDCollection.add(2);
361
		         }
362
 
7070 dpurdie 363
		         if ( setName.compareTo("iteration1") == 0 
364
		           || setName.compareTo("iteration2") == 0
365
		           || setName.compareTo("iteration3") == 0
366
		           || setName.compareTo("iteration4") == 0
367
		           || setName.compareTo("iteration5") == 0 )
7051 dpurdie 368
		         {
369
		           p = findPackage(5, packageCollection);
370
		           p.mDependencyCollection.add("UncommonDependency.tim");
371
		           p.mDependencyIDCollection.add(0);
372
		         }
373
 
7070 dpurdie 374
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 375
		         {
376
		           p = findPackage(25, packageCollection);
377
 
378
		           p.mDependencyCollection.add("Car.tim");
379
		           p.mDependencyIDCollection.add(24);
380
		         }
381
 
382
 
383
 
384
		        /* planned build info
385
		         * pv_id bm_name bsa_name
386
		         * 0     Linux   Java 1.6
387
		         * 1     Linux   Debug
388
		         * 2     Linux   Debug
389
		         * 2     Solaris Production
390
		         * 2     Win32   Production and Debug
391
		         * 3     Solaris Java 1.4
392
		         * 4     Generic Java 1.5
393
		         * 5     Linux   Java 1.6
394
		         * 5     Win32   Java 1.6
395
		         * 25    Linux   Java 1.6
396
		         */
7070 dpurdie 397
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 398
		         {
399
		           p = findPackage(0, packageCollection);
400
		           BuildStandard bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
401
		           p.mBuildStandardCollection.add(bs);
402
		         }
403
 
404
		         p = findPackage(1, packageCollection);
405
		         BuildStandard bs = new BuildStandard(rippleEngine, "Linux", "Debug");
406
		         p.mBuildStandardCollection.add(bs);
407
 
7070 dpurdie 408
		         if ( setName.compareTo("iteration1") == 0 || setName.compareTo("iteration2") == 0 )
7051 dpurdie 409
		         {
410
		           p = findPackage(2, packageCollection);
411
		           bs = new BuildStandard(rippleEngine, "Linux", "Debug");
412
		           p.mBuildStandardCollection.add(bs);
413
		           bs = new BuildStandard(rippleEngine, "Solaris","Production");
414
		           p.mBuildStandardCollection.add(bs);
415
		           bs = new BuildStandard(rippleEngine, "Win32", "Production and Debug");
416
		           p.mBuildStandardCollection.add(bs);
417
		         }
418
 
7070 dpurdie 419
		         if ( setName.compareTo("iteration1") == 0 
420
		           || setName.compareTo("iteration2") == 0
421
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 422
		         {
423
		           p = findPackage(3, packageCollection);
424
		           bs = new BuildStandard(rippleEngine, "Solaris", "Java 1.4");
425
		           p.mBuildStandardCollection.add(bs);
426
		         }
427
 
7070 dpurdie 428
		         if ( setName.compareTo("iteration1") == 0 
429
		           || setName.compareTo("iteration2") == 0
430
		           || setName.compareTo("iteration3") == 0
431
		           || setName.compareTo("iteration4") == 0 )
7051 dpurdie 432
		         {
433
		           p = findPackage(4, packageCollection);
434
		           bs = new BuildStandard(rippleEngine, "Generic", "Java 1.5");
435
		           p.mBuildStandardCollection.add(bs);
436
		         }
437
 
7070 dpurdie 438
		         if ( setName.compareTo("iteration1") == 0 
439
		           || setName.compareTo("iteration2") == 0
440
		           || setName.compareTo("iteration3") == 0
441
		           || setName.compareTo("iteration4") == 0
442
		           || setName.compareTo("iteration5") == 0 )
7051 dpurdie 443
		         {
444
		           p = findPackage(5, packageCollection);
445
		           bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
446
		           p.mBuildStandardCollection.add(bs);
447
		           bs = new BuildStandard(rippleEngine, "Win32", "Java 1.6");
448
		           p.mBuildStandardCollection.add(bs);
449
		         }
450
 
7070 dpurdie 451
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 452
		         {
453
		           p = findPackage(25, packageCollection);
454
		           bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
455
		           p.mBuildStandardCollection.add(bs);
456
		         }
457
 
458
		         /* planned unit test info
459
		         * pv_id test_type_name
460
		         * 2     Manual Test
461
		         * 2     Interactive Test
462
		         * 2     Integration Test
463
		         * 5     Autobuild UTF
464
		         */
7070 dpurdie 465
		         if ( setName.compareTo("iteration1") == 0 
466
		           || setName.compareTo("iteration2") == 0
467
		           || setName.compareTo("iteration3") == 0
468
		           || setName.compareTo("iteration4") == 0
469
		           || setName.compareTo("iteration5") == 0 )
7051 dpurdie 470
		         {
471
		           p = findPackage(5, packageCollection);
472
		           p.mHasAutomatedUnitTests = true;
473
		         }
474
 
475
		        /* planned build failure info
476
		         * pv_id user_email
477
		         * 3     jimmyfishcake@vixtechnology.com
478
		         * 3     rayhaddock@vixtechnology.com
479
		         * 5     timbutdim@vixtechnology.com
480
		         */
7070 dpurdie 481
		         if ( setName.compareTo("iteration1") == 0 
482
		           || setName.compareTo("iteration2") == 0
483
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 484
		         {
485
		           p = findPackage(3, packageCollection);
486
		           p.addEmail("jimmyfishcake@vixtechnology.com");
487
		           p.addEmail("rayhaddock@vixtechnology.com");
488
		         }
489
 
7070 dpurdie 490
		         if ( setName.compareTo("iteration1") == 0 
491
		           || setName.compareTo("iteration2") == 0
492
		           || setName.compareTo("iteration3") == 0
493
		           || setName.compareTo("iteration4") == 0
494
		           || setName.compareTo("iteration5") == 0 )
7051 dpurdie 495
		         {
496
		           p = findPackage(5, packageCollection);
497
		           p.addEmail("timbutdim@vixtechnology.com");
498
		         }
499
 
500
		        /* planned advisory ripple info
501
		         * pv_id
502
		         * 0
503
		         */
7070 dpurdie 504
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 505
		         {
506
		           p = findPackage(0, packageCollection);
507
		           p.mAdvisoryRipple = true;
508
		         }
509
 
510
		        /* released info
511
		         * pv_id pkg_id pkg_name                     pkg_version      v_ext pkg_vcs_tag                                                    ripple_field
512
		         * 7     8      CotsWithFunnyVersion         hoopla2_x.cots   .cots CotsWithFunnyVersion_hoopla2_x.cots \vob\CotsWithFunnyVersion
513
		         * 8     17     NotInAnyWayReproducible      1.0.0.tim        .tim  NA                                  NA
514
		         * 9     34     CommonDependency             1.0.0000.tim     .tim  CommonDependency_1.0.0000.tim       \vob\CommonDependency
515
		         * 10    908    SolarisCentricProduct        1.0.0000.tim     .tim  SolarisCentricProduct_1.0.0000.tim  \vob\SolarisCentricProduct m
516
		         * 11    16     LinuxCentricProduct          1.0.0000.tim     .tim  LinuxCentricProduct_1.0.0000.tim    \vob\LinuxCentricProduct
517
		         * 12    312    Win32CentricProduct          1.0.0000.tim     .tim  Win32CentricProduct_1.0.0000.tim    \vob\Win32CentricProduct
518
		         * 13    6      GenericProduct               1.0.0000.tim     .tim  GenericProduct_1.0.0000.tim         \vob\ToBeMovedFromHere     M
519
		         * 14    81     AdvisoryDependency           1.0.0000.tim     .tim  AdvisoryDependency_1.0.0000.tim     \vob\AdvisoryDependency
520
		         * 15    1      MergedProduct                1.0.0000.tim     .tim  MergedProduct_1.0.0000.tim          \vob\MergedProduct         m
521
		         * 22    45     Banana                       1.1.0000.tim     .tim  Banana_1.1.0000.tim                 \vob\Banana
522
		         * 23    18     Aardvark                     1.1.1000.tim     .tim  Aardvark_1.1.1000.tim               \vob\Aardvark
523
		         * 24    227    Car                          1.0.10000.tim    .tim  Car_1.0.10000.tim                   \vob\Car
524
		         */
7070 dpurdie 525
		         if ( setName.compareTo("iteration1") != 0 )
7051 dpurdie 526
		         {
527
		           p = new Package(76, 0, "UncommonDependency", "0.0.1000.tim", ".tim", "UncommonDependency.tim", "CC::/vob/UncommonDependency::UncommonDependency_0.0.1000.tim", 'x');
528
		           Package plannedPackage = findPackage(p.mAlias, packageCollection);
529
 
530
		           if ( plannedPackage == NULL_PACKAGE )
531
		           {
532
		             packageCollection.add(p);
533
		           }
534
		           else
535
		           {
536
		             plannedPackage.mVersion = "0.0.1000";
537
		           }
538
		         }
539
 
7070 dpurdie 540
		         if ( setName.compareTo("iteration1") != 0 
541
		           && setName.compareTo("iteration2") != 0
542
		           && setName.compareTo("iteration3") != 0 )
7051 dpurdie 543
		         {
544
		           p = new Package(908, 3, "SolarisCentricProduct", "1.1.0000.tim", ".tim", "SolarisCentricProduct.tim", "CC::/vob/SolarisCentricProduct::SolarisCentricProduct_1.1.0000.tim", 'm');
545
		           Package plannedPackage = findPackage(p.mAlias, packageCollection);
546
 
547
		           if ( plannedPackage == NULL_PACKAGE )
548
		           {
549
		             packageCollection.add(p);
550
		           }
551
		           else
552
		           {
553
		             plannedPackage.mVersion = "1.1.0000";
554
		           }
555
		         }
556
 
7070 dpurdie 557
		         if ( setName.compareTo("iteration1") != 0 
558
		           && setName.compareTo("iteration2") != 0
559
		           && setName.compareTo("iteration3") != 0
560
		           && setName.compareTo("iteration4") != 0 )
7051 dpurdie 561
		         {
562
		           p = new Package(6, 4, "GenericProduct", "1.0.1000.tim", ".tim", "GenericProduct.tim", "CC::/vob/GenericProduct::GenericProduct_1.0.1000.tim", 'M');
563
		           Package plannedPackage = findPackage(p.mAlias, packageCollection);
564
 
565
		           if ( plannedPackage == NULL_PACKAGE )
566
		           {
567
		             packageCollection.add(p);
568
		           }
569
		           else
570
		           {
571
		             plannedPackage.mVersion = "1.0.1000";
572
		           }
573
		         }
574
 
7070 dpurdie 575
		         if ( setName.compareTo("iteration1") != 0 
576
		           && setName.compareTo("iteration2") != 0
577
		           && setName.compareTo("iteration3") != 0
578
		           && setName.compareTo("iteration4") != 0
579
		           && setName.compareTo("iteration5") != 0 )
7051 dpurdie 580
		         {
581
		           p = new Package(11, 5, "Product", "1.0.0000.tim", ".tim", "Product.tim", "CC::/vob/Product::Product_1.0.0000.tim", 'M');
582
		           Package plannedPackage = findPackage(p.mAlias, packageCollection);
583
 
584
		           if ( plannedPackage == NULL_PACKAGE )
585
		           {
586
		             packageCollection.add(p);
587
		           }
588
		           else
589
		           {
590
		             plannedPackage.mVersion = "1.0.0000";
591
		           }
592
		         }
593
 
594
		         p = new Package(8, 7, "CotsWithFunnyVersion", "hoopla2_x.cots", ".cots", "CotsWithFunnyVersion.cots", "CC::/vob/CotsWithFunnyVersion::CotsWithFunnyVersion_hoopla2_x", 'x');
595
		         Package plannedPackage = findPackage(p.mAlias, packageCollection);
596
 
597
		         if ( plannedPackage == NULL_PACKAGE )
598
		         {
599
		           packageCollection.add(p);
600
		         }
601
		         else
602
		         {
603
		           plannedPackage.mVersion = "hoopla2_x";
604
		         }
605
 
606
		         p = new Package(17, 8, "NotInAnyWayReproducible", "1.0.0.tim", ".tim", "NotInAnyWayReproducible.tim", "CC::NA::NA", 'x');
607
		         plannedPackage = findPackage(p.mAlias, packageCollection);
608
 
609
		         if ( plannedPackage == NULL_PACKAGE )
610
		         {
611
		           packageCollection.add(p);
612
		         }
613
		         else
614
		         {
615
		           plannedPackage.mVersion = "1.0.0";
616
		         }
617
 
7070 dpurdie 618
		         if ( setName.compareTo("iteration1") == 0 
619
		           || setName.compareTo("iteration2") == 0
620
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 621
		         {
622
		           p = new Package(908, 10, "SolarisCentricProduct", "1.0.0000.tim", ".tim", "SolarisCentricProduct.tim", "CC::/vob/SolarisCentricProduct::SolarisCentricProduct_1.0.0000.tim", 'm');
623
		           plannedPackage = findPackage(p.mAlias, packageCollection);
624
 
625
		           if ( plannedPackage == NULL_PACKAGE )
626
		           {
627
		             packageCollection.add(p);
628
		           }
629
		           else
630
		           {
631
		             plannedPackage.mVersion = "1.0.0000";
632
		           }
633
		         }
634
 
635
		         p = new Package(16, 11, "LinuxCentricProduct", "1.0.0000.tim", ".tim", "LinuxCentricProduct.tim", "CC::/vob/LinuxCentricProduct::LinuxCentricProduct_1.0.0000.tim", 'x');
636
		         plannedPackage = findPackage(p.mAlias, packageCollection);
637
 
638
		         if ( plannedPackage == NULL_PACKAGE )
639
		         {
640
		           packageCollection.add(p);
641
		         }
642
		         else
643
		         {
644
		           plannedPackage.mVersion = "1.0.0000";
645
		         }
646
 
647
		         p = new Package(312, 12, "Win32CentricProduct", "1.0.0000.tim", ".tim", "Win32CentricProduct.tim", "CC::/vob/Win32CentricProduct::Win32CentricProduct_1.0.0000.tim", 'x');
648
		         plannedPackage = findPackage(p.mAlias, packageCollection);
649
 
650
		         if ( plannedPackage == NULL_PACKAGE )
651
		         {
652
		           packageCollection.add(p);
653
		         }
654
		         else
655
		         {
656
		           plannedPackage.mVersion = "1.0.0000";
657
		         }
658
 
7070 dpurdie 659
		         if ( setName.compareTo("iteration1") == 0 
660
		           || setName.compareTo("iteration2") == 0
661
		           || setName.compareTo("iteration3") == 0
662
		           || setName.compareTo("iteration4") == 0 )
7051 dpurdie 663
		         {
664
		           p = new Package(6, 13, "GenericProduct", "1.0.0000.tim", ".tim", "GenericProduct.tim", "CC::/vob/ToBeMovedFromHere::GenericProduct_1.0.0000.tim", 'M');
665
		           plannedPackage = findPackage(p.mAlias, packageCollection);
7070 dpurdie 666
 
667
 
668
    		         if ( plannedPackage == NULL_PACKAGE )
669
    		         {
670
    		           packageCollection.add(p);
671
    		         }
672
    		         else
673
    		         {
674
    		           plannedPackage.mVersion = "1.0.0000";
675
    		         }
676
                 }	
677
 
7051 dpurdie 678
		         p = new Package(81, 14, "AdvisoryDependency", "1.0.0000.tim", ".tim", "AdvisoryDependency.tim", "CC::/vob/AdvisoryDependency::AdvisoryDependency_1.0.0000.tim", 'x');
679
		         plannedPackage = findPackage(p.mAlias, packageCollection);
680
 
681
		         if ( plannedPackage == NULL_PACKAGE )
682
		         {
683
		           packageCollection.add(p);
684
		         }
685
		         else
686
		         {
687
		           plannedPackage.mVersion = "1.0.0000";
688
		         }
689
 
7070 dpurdie 690
		         if ( setName.compareTo("iteration1") == 0 
691
		           || setName.compareTo("iteration2") == 0
692
		           || setName.compareTo("iteration3") == 0
693
		           || setName.compareTo("iteration4") == 0
694
		           || setName.compareTo("iteration5") == 0
695
		           || setName.compareTo("iteration6") == 0 )
7051 dpurdie 696
		         {
697
		           p = new Package(1, 15, "MergedProduct", "1.0.0000.tim", ".tim", "MergedProduct.tim", "CC::/vob/MergedProduct::MergedProduct_1.0.0000.tim", 'm');
698
		           plannedPackage = findPackage(p.mAlias, packageCollection);
699
		         }
700
		         else
701
		         {
702
		           p = new Package(1, 16, "MergedProduct", "1.0.0000.tim", ".tim", "MergedProduct.tim", "CC::/vob/MergedProduct::MergedProduct_1.0.0000.tim", 'm');
703
		           plannedPackage = findPackage(p.mAlias, packageCollection);
704
		         }
705
 
706
		         if ( plannedPackage == NULL_PACKAGE )
707
		         {
708
		           packageCollection.add(p);
709
		         }
710
		         else
711
		         {
712
		           plannedPackage.mVersion = "1.0.0000";
713
		         }
714
 
7070 dpurdie 715
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 716
		         {
717
		           p = new Package(45, 22, "Banana", "1.1.0000.tim", ".tim", "Banana.tim", "CC::/vob/Banana::Banana_1.1.0000.tim", 'x');
718
		           plannedPackage = findPackage(p.mAlias, packageCollection);
719
 
720
		           if ( plannedPackage == NULL_PACKAGE )
721
		           {
722
		             packageCollection.add(p);
723
		           }
724
		           else
725
		           {
726
		             plannedPackage.mVersion = "1.1.0000";
727
		           }
728
 
729
		           p = new Package(18, 23, "Aardvark", "1.1.1000.tim", ".tim", "Aardvark.tim", "CC::/vob/Aardvark::Aardvark_1.1.1000.tim", 'x');
730
		           plannedPackage = findPackage(p.mAlias, packageCollection);
731
 
732
		           if ( plannedPackage == NULL_PACKAGE )
733
		           {
734
		             packageCollection.add(p);
735
		           }
736
		           else
737
		           {
738
		             plannedPackage.mVersion = "1.1.1000";
739
		           }
740
 
741
		           p = new Package(227, 24, "Car", "1.0.10000.tim", ".tim", "Car.tim", "CC::/vob/Car::Car_1.0.10000.tim", 'x');
742
		           plannedPackage = findPackage(p.mAlias, packageCollection);
743
 
744
		           if ( plannedPackage == NULL_PACKAGE )
745
		           {
746
		             packageCollection.add(p);
747
		           }
748
		           else
749
		           {
750
		             plannedPackage.mVersion = "1.0.10000";
751
		           }
752
		         }
753
 
7070 dpurdie 754
		         if ( setName.compareTo("iteration1") != 0 
755
		           && setName.compareTo("iteration2") != 0 )
7051 dpurdie 756
		         {
757
		           p = new Package(34, 2, "CommonDependency", "2.0.0000.tim", ".tim", "CommonDependency.tim", "CC::/vob/CommonDependency::CommonDependency_2.0.0000.tim", 'x');
758
		           plannedPackage = findPackage(p.mAlias, packageCollection);
759
 
760
		           if ( plannedPackage == NULL_PACKAGE )
761
		           {
762
		             packageCollection.add(p);
763
		           }
764
		           else
765
		           {
766
		             plannedPackage.mVersion = "2.0.0000";
767
		           }
768
		         }           
769
 
7070 dpurdie 770
		         if ( setName.compareTo("iteration1") == 0 || setName.compareTo("iteration2") == 0 )
7051 dpurdie 771
		         {
772
		             p = new Package(34, 9, "CommonDependency", "1.0.0000.tim", ".tim", "CommonDependency.tim", "CC::/vob/CommonDependency::CommonDependency_1.0.0000.tim", 'x');
773
		             plannedPackage = findPackage(p.mAlias, packageCollection);
774
 
775
		             if ( plannedPackage == NULL_PACKAGE )
776
		             {
777
		                 packageCollection.add(p);
778
		             }
779
		             else
780
		             {
781
		                 plannedPackage.mVersion = "1.0.0000";
782
		             }
783
		         }
784
 
785
		         /* released dependencies
786
		         * pv_id dpv_id pkg_name                     v_ext
787
		         * 8     9      CommonDependency             .tim
788
		         * 9     7      CotsWithFunnyVersion         .cots
789
		         * 10    9      CommonDependency             .tim
790
		         * 11    44     AdvisoryDependency           .tim
791
		         * 13    9      CommonDependency             .tim
792
		         * 15    99     CommonDependency             .tim
793
		         * 23    22     Banana                       .tim
794
		         * 24    23     Aardvark                     .tim
795
		         */
7070 dpurdie 796
		         if ( setName.compareTo("iteration1") != 0 
797
		           && setName.compareTo("iteration2") != 0 )
7051 dpurdie 798
		         {
799
		           p = findPackage(2, packageCollection);
800
		           p.mDependencyCollection.add("CotsWithFunnyVersion.cots");
801
		           p.mDependencyIDCollection.add(7);
802
		           p.mDependencyCollection.add("UncommonDependency.tim");
803
		           p.mDependencyIDCollection.add(0);
804
		         }
805
 
7070 dpurdie 806
		         if ( setName.compareTo("iteration1") != 0 
807
		           && setName.compareTo("iteration2") != 0
808
		           && setName.compareTo("iteration3") != 0 )
7051 dpurdie 809
		         {
810
		           p = findPackage(3, packageCollection);
811
		           p.mDependencyCollection.add("CommonDependency.tim");
812
		           p.mDependencyIDCollection.add(2);
813
		         }
814
 
7070 dpurdie 815
		         if ( setName.compareTo("iteration1") != 0 
816
		           && setName.compareTo("iteration2") != 0
817
		           && setName.compareTo("iteration3") != 0
818
		           && setName.compareTo("iteration4") != 0 )
7051 dpurdie 819
		         {
820
		           p = findPackage(4, packageCollection);
821
		           p.mDependencyCollection.add("CommonDependency.tim");
822
		           p.mDependencyIDCollection.add(2);
823
		         }
824
 
7070 dpurdie 825
		         if ( setName.compareTo("iteration1") != 0 
826
		           && setName.compareTo("iteration2") != 0
827
		           && setName.compareTo("iteration3") != 0
828
		           && setName.compareTo("iteration4") != 0
829
		           && setName.compareTo("iteration5") != 0 )
7051 dpurdie 830
		         {
831
		           p = findPackage(5, packageCollection);
832
		           p.mDependencyCollection.add("UncommonDependency.tim");
833
		           p.mDependencyIDCollection.add(0);
834
		         }
835
 
836
		         p = findPackage(8, packageCollection);
837
		         p.mDependencyCollection.add("CommonDependency.tim");
838
		         p.mDependencyIDCollection.add(9);
839
 
7070 dpurdie 840
		         if ( setName.compareTo("iteration1") == 0 
841
		           || setName.compareTo("iteration2") == 0 )
7051 dpurdie 842
		         {
843
		           p = findPackage(9, packageCollection);
844
		           p.mDependencyCollection.add("CotsWithFunnyVersion.cots");
845
		           p.mDependencyIDCollection.add(7);
846
		         }
847
 
7070 dpurdie 848
		         if ( setName.compareTo("iteration1") == 0 
849
		           || setName.compareTo("iteration2") == 0
850
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 851
		         {
852
		           p = findPackage(10, packageCollection);
853
		           p.mDependencyCollection.add("CommonDependency.tim");
854
		           p.mDependencyIDCollection.add(9);
855
		         }
856
 
857
		         p = findPackage(11, packageCollection);
858
		         p.mDependencyCollection.add("AdvisoryDependency.tim");
859
		         p.mDependencyIDCollection.add(44);
860
 
7070 dpurdie 861
		         if ( setName.compareTo("iteration1") == 0 
862
		           || setName.compareTo("iteration2") == 0
863
		           || setName.compareTo("iteration3") == 0
864
		           || setName.compareTo("iteration4") == 0 )
7051 dpurdie 865
		         {
866
		           p = findPackage(13, packageCollection);
867
		           p.mDependencyCollection.add("CommonDependency.tim");
868
		           p.mDependencyIDCollection.add(9);
869
		         }
870
 
7070 dpurdie 871
		         if ( setName.compareTo("iteration1") == 0 
872
		           || setName.compareTo("iteration2") == 0
873
		           || setName.compareTo("iteration3") == 0
874
		           || setName.compareTo("iteration4") == 0
875
		           || setName.compareTo("iteration5") == 0
876
		           || setName.compareTo("iteration6") == 0 )
7051 dpurdie 877
		         {
878
		           p = findPackage(15, packageCollection);
879
		           p.mDependencyCollection.add("CommonDependency.tim");
880
		           p.mDependencyIDCollection.add(99);                                 // PVID of package not in the release
881
		         }
882
		         else
883
		         {
884
		           p = findPackage(16, packageCollection);
885
		           p.mDependencyCollection.add("CommonDependency.tim");
886
		           p.mDependencyIDCollection.add(2);
887
		         }
888
 
7070 dpurdie 889
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 890
		         {
891
		           p = findPackage(23, packageCollection);
892
		           p.mDependencyCollection.add("Banana.tim");
893
		           p.mDependencyIDCollection.add(22);
894
 
895
		           p = findPackage(24, packageCollection);
896
		           p.mDependencyCollection.add("Aardvark.tim");
897
		           p.mDependencyIDCollection.add(23);
898
		         }
899
 
900
		        /* released build info
901
		         * pv_id bm_name bsa_name
902
		         * 7     Solaris Debug
903
		         * 9     Linux   Debug
904
		         * 9     Solaris Debug
905
		         * 9     Win32   Production
906
		         * 10    Solaris Java 1.4
907
		         * 11    Linux   Production and Debug
908
		         * 12    Win32   Java 1.6
909
		         * 13    Generic Java 1.4
910
		         * 14    Linux   Debug
911
		         * 15    Linux   Debug
912
		         * 22    Linux   Java 1.6
913
		         * 23    Linux   Java 1.6
914
		         * 24    Linux   Java 1.6
915
		         */
7070 dpurdie 916
		         if ( setName.compareTo("iteration1") != 0 )
7051 dpurdie 917
		         {
918
		           p = findPackage(0, packageCollection);
919
		           bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
920
		           p.mBuildStandardCollection.add(bs);
921
		         }
922
 
7070 dpurdie 923
		         if ( setName.compareTo("iteration1") != 0 
924
		           && setName.compareTo("iteration2") != 0 )
7051 dpurdie 925
		         {
926
		           p = findPackage(2, packageCollection);
927
		           bs = new BuildStandard(rippleEngine, "Linux", "Debug");
928
		           p.mBuildStandardCollection.add(bs);
929
		           bs = new BuildStandard(rippleEngine, "Solaris", "Production");
930
		           p.mBuildStandardCollection.add(bs);
931
		           bs = new BuildStandard(rippleEngine, "Win32", "Production and Debug");
932
		           p.mBuildStandardCollection.add(bs);
933
		         }
934
 
7070 dpurdie 935
		         if ( setName.compareTo("iteration1") != 0 
936
		           && setName.compareTo("iteration2") != 0
937
		           && setName.compareTo("iteration3") != 0 )
7051 dpurdie 938
		         {
939
		           p = findPackage(3, packageCollection);
940
		           bs = new BuildStandard(rippleEngine, "Solaris", "Java 1.4");
941
		           p.mBuildStandardCollection.add(bs);
942
		         }
943
 
7070 dpurdie 944
		         if ( setName.compareTo("iteration1") != 0 
945
		           && setName.compareTo("iteration2") != 0
946
		           && setName.compareTo("iteration3") != 0
947
		           && setName.compareTo("iteration4") != 0 )
7051 dpurdie 948
		         {
949
		           p = findPackage(4, packageCollection);
950
		           bs = new BuildStandard(rippleEngine, "Generic", "Java 1.5");
951
		           p.mBuildStandardCollection.add(bs);
952
		         }
953
 
7070 dpurdie 954
		         if ( setName.compareTo("iteration1") != 0 
955
		           && setName.compareTo("iteration2") != 0
956
		           && setName.compareTo("iteration3") != 0
957
		           && setName.compareTo("iteration4") != 0
958
		           && setName.compareTo("iteration5") != 0 )
7051 dpurdie 959
		         {
960
		           p = findPackage(5, packageCollection);
961
		           bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
962
		           p.mBuildStandardCollection.add(bs);
963
		           bs = new BuildStandard(rippleEngine, "Win32", "Java 1.6");
964
		           p.mBuildStandardCollection.add(bs);
965
		         }
966
 
967
		         p = findPackage(7, packageCollection);
968
		         bs = new BuildStandard(rippleEngine, "Solaris", "Debug");
969
		         p.mBuildStandardCollection.add(bs);
970
 
7070 dpurdie 971
		         if ( setName.compareTo("iteration1") == 0 || setName.compareTo("iteration2") == 0 )
7051 dpurdie 972
		         {
973
		           p = findPackage(9, packageCollection);
974
		           bs = new BuildStandard(rippleEngine, "Linux", "Debug");
975
		           p.mBuildStandardCollection.add(bs);
976
		           bs = new BuildStandard(rippleEngine, "Solaris", "Debug");
977
		           p.mBuildStandardCollection.add(bs);
978
		           bs = new BuildStandard(rippleEngine, "Win32", "Production");
979
		           p.mBuildStandardCollection.add(bs);
980
		         }
981
 
7070 dpurdie 982
		         if ( setName.compareTo("iteration1") == 0 
983
		           || setName.compareTo("iteration2") == 0
984
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 985
		         {
986
		           p = findPackage(10, packageCollection);
987
		           bs = new BuildStandard(rippleEngine, "Solaris", "Java 1.4");
988
		           p.mBuildStandardCollection.add(bs);
989
		         }
990
 
991
		         p = findPackage(11, packageCollection);
992
		         bs = new BuildStandard(rippleEngine, "Linux", "Production and Debug");
993
		         p.mBuildStandardCollection.add(bs);
994
 
995
		         p = findPackage(12, packageCollection);
996
		         bs = new BuildStandard(rippleEngine, "Win32", "Java 1.6");
997
		         p.mBuildStandardCollection.add(bs);
998
 
7070 dpurdie 999
		         if ( setName.compareTo("iteration1") == 0 
1000
		           || setName.compareTo("iteration2") == 0
1001
		           || setName.compareTo("iteration3") == 0
1002
		           || setName.compareTo("iteration4") == 0 )
7051 dpurdie 1003
		         {
1004
		           p = findPackage(13, packageCollection);
1005
		           bs = new BuildStandard(rippleEngine, "Generic", "Java 1.4");
1006
		           p.mBuildStandardCollection.add(bs);
1007
		         }
1008
 
1009
		         p = findPackage(14, packageCollection);
1010
		         bs = new BuildStandard(rippleEngine, "Linux", "Debug");
1011
		         p.mBuildStandardCollection.add(bs);
1012
 
7070 dpurdie 1013
		         if ( setName.compareTo("iteration1") == 0 
1014
		           || setName.compareTo("iteration2") == 0
1015
		           || setName.compareTo("iteration3") == 0
1016
		           || setName.compareTo("iteration4") == 0
1017
		           || setName.compareTo("iteration5") == 0
1018
		           || setName.compareTo("iteration6") == 0 )
7051 dpurdie 1019
		         {
1020
		           p = findPackage(15, packageCollection);
1021
		           bs = new BuildStandard(rippleEngine, "Linux", "Debug");
1022
		           p.mBuildStandardCollection.add(bs);
1023
		         }
1024
		         else
1025
		         {
1026
		           p = findPackage(16, packageCollection);
1027
		           bs = new BuildStandard(rippleEngine, "Linux", "Debug");
1028
		           p.mBuildStandardCollection.add(bs);
1029
		         }        
1030
 
7070 dpurdie 1031
		         if ( setName.compareTo("iteration1") == 0 )
7051 dpurdie 1032
		         {
1033
		           p = findPackage(22, packageCollection);
1034
		           bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
1035
		           p.mBuildStandardCollection.add(bs);
1036
 
1037
		           p = findPackage(23, packageCollection);
1038
		           bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
1039
		           p.mBuildStandardCollection.add(bs);
1040
 
1041
		           p = findPackage(24, packageCollection);
1042
		           bs = new BuildStandard(rippleEngine, "Solaris", "Java 1.6");
1043
		           p.mBuildStandardCollection.add(bs);
1044
		         }
1045
 
1046
		         /* released package unit test info
1047
		         * pv_id tt.test_type_name
1048
		         * 9     Manual Test
1049
		         * 9     Interactive Test
1050
		         * 9     Integration Test
1051
		         * 11    Autobuild UTF
1052
		         */
7070 dpurdie 1053
		         if ( setName.compareTo("iteration1") != 0 
1054
		           && setName.compareTo("iteration2") != 0
1055
		           && setName.compareTo("iteration3") != 0
1056
		           && setName.compareTo("iteration4") != 0
1057
		           && setName.compareTo("iteration5") != 0 )
7051 dpurdie 1058
		         {
1059
		           p = findPackage(5, packageCollection);
1060
		           p.mHasAutomatedUnitTests = true;
1061
		         }
1062
 
1063
		         p = findPackage(11, packageCollection);
1064
		         p.mHasAutomatedUnitTests = true;
1065
 
1066
		        /* released build failure email info
1067
		         * pv_id user_email
1068
		         * 10    jimmyfishcake@vixtechnology.com
1069
		         */
7070 dpurdie 1070
		         if ( setName.compareTo("iteration1") != 0 
1071
		           && setName.compareTo("iteration2") != 0
1072
		           && setName.compareTo("iteration3") != 0 )
7051 dpurdie 1073
		         {
1074
		           p = findPackage(3, packageCollection);
1075
		           p.addEmail("jimmyfishcake@vixtechnology.com");
1076
		           p.addEmail("rayhaddock@vixtechnology.com");
1077
		         }
1078
 
7070 dpurdie 1079
		         if ( setName.compareTo("iteration1") != 0 
1080
		           && setName.compareTo("iteration2") != 0
1081
		           && setName.compareTo("iteration3") != 0
1082
		           && setName.compareTo("iteration4") != 0
1083
		           && setName.compareTo("iteration5") != 0 )
7051 dpurdie 1084
		         {
1085
		           p = findPackage(5, packageCollection);
1086
		           p.addEmail("timbutdim@vixtechnology.com");
1087
		         }
1088
 
7070 dpurdie 1089
		         if ( setName.compareTo("iteration1") == 0 
1090
		           || setName.compareTo("iteration2") == 0
1091
		           || setName.compareTo("iteration3") == 0 )
7051 dpurdie 1092
		         {
1093
		           p = findPackage(10, packageCollection);
1094
		           p.addEmail("jimmyfishcake@vixtechnology.com");
1095
		         }
1096
 
1097
		        /* released advisory ripple info
1098
		         * pv_id
1099
		         * 14
1100
		         */
7070 dpurdie 1101
		         if ( setName.compareTo("iteration1") != 0 )
7051 dpurdie 1102
		         {
1103
		           p = findPackage(0, packageCollection);
1104
		           p.mAdvisoryRipple = true;
1105
		         }
1106
 
1107
		         p = findPackage(14, packageCollection);
1108
		         p.mAdvisoryRipple = true;
1109
 
1110
		         // Insert sequence for later sorting
1111
		         Package.setSequence(packageCollection);
1112
 
1113
		    }
1114
 
6914 dpurdie 1115
	}
1116
 
1117
 
1118
    public DaemonBuildTestCase()
1119
    {
1120
        mLogger.debug("DaemonBuildTestCase");
1121
    }
1122
 
1123
    /**
1124
     * Test Case main line
1125
     */
1126
    public static void main(String[] args)
1127
    {
1128
        mLogger.debug("main");
1129
        JUnitCore.main("com.erggroup.buildtool.utf.DaemonBuildTestCase");
1130
    }
1131
 
1132
    /**
1133
     * set up performed prior to any test method
1134
     */
1135
    @BeforeClass
1136
    public static void TestCaseSetUp()
1137
    {
1138
        mLogger.debug("TestCaseSetUp");
1139
    }
1140
 
1141
    /**
1142
     * tear down performed after test methods
1143
     */
1144
    @AfterClass
1145
    public static void TestCaseTearDown()
1146
    {
1147
        mLogger.debug("TestCaseTearDown");
1148
    }
1149
 
1150
    /**
1151
     * set up performed prior to each test method
1152
     */
1153
    @Before
1154
    public void TestSetUp()
1155
    {
1156
        mLogger.debug("TestSetUp");
1157
        System.setProperty("vix.utf.name", "DaemonBuildTestCase");
1158
        Package.mGenericMachtype = "win32";
1159
        Package.mGbeDpkg = ".";
1160
    }
1161
 
1162
    /**
1163
     * tear down performed after each test method
1164
     */
1165
    @After
1166
    public void TestTearDown()
1167
    {
1168
        mLogger.debug("TestTearDown");
1169
    }
1170
 
1171
    /**
1172
     * test method designed primarily to test the sequence diagram spawn thread
1173
     * also tests thread control out of necessity:
1174
     * 1 constructs a BuildDaemon object, passing a connectionString of "unit test spawn thread"
1175
     * this utilises the following unit test hooks in the codebase:
1176
     * - BuildDaemon::BuildDaemon connectionString of "unit test spawn thread" exits while forever loop
1177
     * - BuildDaemon constructor, isActive and cleanUp made public for unit test use
1178
     * - ReleaseManager::queryReleaseConfig instantiates 2 ReleaseConfig objects
1179
     * with rcon_id's of 1 and 2, daemon_modes of 'M' and 'S' respectively, and gbebuildfilters of
1180
     * "unit test spawn thread"
1181
     * - MasterThread::run gbebuildfilter of "unit test spawn thread" limits method to sleep in while forever loop
1182
     * - SlaveThread::run gbebuildfilter of "unit test spawn thread" limits method to sleep in while forever loop
1183
     * 2 checks the number of threads in the thread group is 3 (mainline thread + MasterThread + SlaveThread)
1184
     * 3 checks isActive on the BuildDaemon object returns true when passed an rcon_id of 1
1185
     * 4 checks isActive on the BuildDaemon object returns true when passed an rcon_id of 2
1186
     * 5 checks isActive on the BuildDaemon object returns false when passed an rcon_id of 3
1187
     * 6 calls cleanUp on the BuildDaemon object
1188
     * 7 checks the number of threads in the thread group is 1 (mainline thread)
1189
     * 8 checks isActive on the BuildDaemon object returns false when passed an rcon_id of 1
1190
     * 9 checks isActive on the BuildDaemon object returns false when passed an rcon_id of 2
1191
     * 10 checks isActive on the BuildDaemon object returns false when passed an rcon_id of 3
1192
     */
1193
    @Test
1194
    public void TestSpawnThread()
1195
    {
1196
        mLogger.debug("TestSpawnThread");
1197
        int tcount;
1198
        releaseManager = new myReleaseManager("unit test spawn thread", "not used", "not used");
1199
        BuildDaemon buildDaemon = new BuildDaemon(releaseManager);
1200
        tcount = BuildThread.mThreadGroup.activeCount();
1201
        System.out.println("TestSpawnThread. tCount:" + tcount);
1202
        assertTrue(tcount == 2);
1203
        assertTrue(buildDaemon.isActive(1));
1204
        assertTrue(buildDaemon.isActive(2));
1205
        assertFalse(buildDaemon.isActive(3));
1206
        buildDaemon.cleanUp();
1207
        tcount = BuildThread.mThreadGroup.activeCount();
1208
        System.out.println("TestSpawnThread Cleanup. tCount:" + tcount);
1209
        assertTrue(tcount == 0);
1210
        assertFalse(buildDaemon.isActive(1));
1211
        assertFalse(buildDaemon.isActive(2));
1212
        assertFalse(buildDaemon.isActive(3));
1213
    }
1214
 
1215
    /**
1216
     * test method designed to test the sequence diagram coordinate slave thread:
1217
     * 1 constructs a ReleaseManager object, passing a connectionString of "unit test coordinate slave threads"
1218
     * 2 constructs a MasterThread object, passing a gbebuildfilter of "unit test coordinate slave threads"
1219
     * this utilises the following unit test hooks in the codebase:
1220
     * - MasterThread constructor made public for unit test use
1221
     * - MasterThread::run gbebuildfilter of "unit test coordinate slave threads" limits method to the sequence diagram
1222
     * interrupts the thread if, on one pass, at least one RunLevel object does not have a run level DB_WAITING
1223
     * exits the while forever loop if, on one pass, all RunLevel objects have a run level DB_WAITING
1224
     * - ReleaseManager::queryRunLevel connectionString of "unit test coordinate slave threads" instantiates 2 RunLevel
1225
     * objects
1226
     * initially with run levels of waiting and idle
1227
     * subsequently with run levels both waiting
1228
     * 3 calls run on the MasterThread object
1229
     * 4 checks its thread has been interrupted
1230
     */
1231
    @Test
1232
    public void TestCoordinateSlaveThreads()
1233
    {
1234
        mLogger.debug("TestCoordinateSlaveThreads");
1235
        ReleaseManager releaseManager = new myReleaseManager("unit test coordinate slave threads", "not used", "not used");
1236
        MasterThread masterThread = new MasterThread(1, 1, releaseManager ,"unit test coordinate slave threads");
1237
        assertFalse(Thread.interrupted());
1238
        masterThread.run();
1239
        // interrupted checks and importantly clears the interrupted status of this thread for subsequent tests
1240
        assertTrue(Thread.interrupted());
1241
        assertFalse(Thread.interrupted());
1242
    }
1243
 
1244
    /**
1245
     * test method designed to test the sequence diagram generate build files
1246
     * note does not test the RippleEngine:
1247
     * 1 constructs a ReleaseManager object, passing a connectionString of "unit test generate build files"
1248
     * 2 constructs a MasterThread object, passing a gbebuildfilter of "unit test generate build files"
1249
     * this utilises the following unit test hooks in the codebase:
1250
     * - MasterThread constructor made public for unit test use
1251
     * - MasterThread::run gbebuildfilter of "unit test generate build files" limits method to the sequence diagram
1252
     * exits the while forever loop
1253
     * - ReleaseManager::queryReleaseConfig instantiates 2 ReleaseConfig objects
1254
     * with rcon_id's of 1 and 2, daemon_modes of 'M' and 'S' respectively, and gbebuildfilters of
1255
     * "unit test spawn thread"
1256
     * - ReleaseManager::updateCurrentRunLevel utilises the public mPersistedRunLevelCollection
1257
     * 3 calls run on the MasterThread object
1258
     * 4 checks the first persisted run level is DB_ACTIVE
1259
     * 5 checks the second persisted run level is DB_ACTIVE
1260
     * 6 checks no further run levels were persisted
1261
     */
1262
    @Test
1263
    public void TestGenerateBuildFiles()
1264
    {
1265
        mLogger.debug("TestGenerateBuildFiles");
1266
        myReleaseManager releaseManager = new myReleaseManager("unit test generate build files", "not used", "not used");
1267
        MasterThread masterThread = new MasterThread(1, 1, releaseManager, "unit test generate build files");
1268
        masterThread.run();
1269
        assertTrue(RunLevelData.isAt(BuildState.DB_ACTIVE, releaseManager.mPersistedRunLevelCollection.get(0)));
1270
        assertTrue(RunLevelData.isAt(BuildState.DB_ACTIVE, releaseManager.mPersistedRunLevelCollection.get(1)));
1271
        assertTrue( releaseManager.mPersistedRunLevelCollection.size() == 2);
1272
    }
1273
 
1274
    /**
1275
     * test method designed to test the sequence diagram consume build files
1276
     * 1 constructs a ReleaseManager object, passing a connectionString of "unit test consume build files"
1277
     * 2 constructs a SlaveThread object, passing a gbebuildfilter of "unit test consume build files"
1278
     * this utilises the following unit test hooks in the codebase:
1279
     * - SlaveThread constructor made public for unit test use
1280
     * - SlaveThread::run gbebuildfilter of "unit test consume build files" limits method to the sequence diagram
1281
     * interrupts the thread if, on one pass, the current build file string is empty
1282
     * exits the while forever loop
1283
     * - ReleaseManager::queryRunLevel
1284
     * initially returns an empty current build file string
1285
     * subsequently returns a "unit test build file content" current build file string
1286
     * 3 calls run on the SlaveThread object
1287
     */
1288
     @Test
1289
    public void TestConsumeBuildFiles()
1290
    {
1291
        mLogger.debug("TestConsumeBuildFiles");
1292
        ReleaseManager releaseManager = new myReleaseManager("unit test consume build files", "not used", "not used");
1293
        SlaveThread slaveThread = new SlaveThread(1, 1, releaseManager, "unit test consume build files");
1294
        assertFalse(Thread.interrupted());
1295
        slaveThread.run();
1296
    }
1297
 
1298
    /**
1299
     * test method designed to test the sequence diagram allowed to proceed
1300
     * 1 constructs a ReleaseManager object, passing a connectionString of "unit test allowed to proceed"
1301
     * 2 constructs a MasterThread object, passing a gbebuildfilter of "unit test allowed to proceed"
1302
     * this utilises the following unit test hooks in the codebase:
1303
     * - MasterThread constructor made public for unit test use
1304
     * - MasterThread::run gbebuildfilter of "unit test allowed to proceed" limits method to the sequence diagram
1305
     * exits the while forever loop
1306
     * - ReleaseManager::queryReleaseConfig, queryRunLevelSchedule, queryDirectedRunLevel methods return true
1307
     * - ReleaseManager::updateCurrentRunLevel utilises the public mPersistedRunLevelCollection
1308
     * 3 calls run on the MasterThread object
1309
     * 4 checks the first persisted run level is DB_IDLE
1310
     * 5 checks the second persisted run level is DB_IDLE
1311
     * 6 checks the third persisted run level is DB_WAITING
1312
     * 7 checks no further run levels were persisted
1313
     */
1314
    @Test
1315
    public void TestAllowedToProceed()
1316
    {
1317
        mLogger.debug("TestAllowedToProceed");
1318
        myReleaseManager releaseManager = new myReleaseManager("unit test allowed to proceed", "not used", "not used");
1319
        MasterThread masterThread = new MasterThread(1, 1, releaseManager, "unit test allowed to proceed");
1320
        masterThread.run();
1321
 
1322
        assertTrue( RunLevelData.isAt(BuildState.DB_IDLE, releaseManager.mPersistedRunLevelCollection.get(0)));
1323
        assertTrue( releaseManager.mPersistedRunLevelCollection.size() == 1);
1324
    }
1325
 
1326
    /**
1327
     * test method designed to test the sequence diagram not allowed to proceed
1328
     * 1 constructs a ReleaseManager object, passing a connectionString of "unit test not allowed to proceed"
1329
     * 2 constructs a MasterThread object, passing a gbebuildfilter of "unit test not allowed to proceed"
1330
     * this utilises the following unit test hooks in the codebase:
1331
     * - MasterThread constructor made public for unit test use
1332
     * - MasterThread::run gbebuildfilter of "unit test not allowed to proceed" limits method to the sequence diagram
1333
     *   exits the while forever loop
1334
     * - ReleaseManager::queryReleaseConfig method returns true
1335
     * - ReleaseManager::queryRunLevelSchedule method returns false
1336
     * - ReleaseManager::updateCurrentRunLevel utilises the public mPersistedRunLevelCollection
1337
     * 3 calls run on the MasterThread object
1338
     * 4 checks the first persisted run level is DB_IDLE
1339
     * 5 checks the second persisted run level is DB_IDLE
1340
     * 6 checks the third persisted run level is DB_PAUSED
1341
     * 7 checks no further run levels were persisted
1342
     * nb cannot check only one thread is running,
1343
     * a Timer thread, though having run to completion, may still be "active"
1344
     */
1345
    @Test
1346
    public void TestNotAllowedToProceed()
1347
    {
1348
        mLogger.debug("TestNotAllowedToProceed");
1349
        myReleaseManager releaseManager = new myReleaseManager("unit test not allowed to proceed", "not used", "not used");
1350
        MasterThread masterThread = new MasterThread(1, 1, releaseManager, "unit test not allowed to proceed");
1351
        masterThread.run();
1352
 
1353
        assertTrue(RunLevelData.isAt(BuildState.DB_IDLE, releaseManager.mPersistedRunLevelCollection.get(0)));
1354
        assertTrue(RunLevelData.isAt(BuildState.DB_PAUSED, releaseManager.mPersistedRunLevelCollection.get(1)));
1355
        assertTrue( releaseManager.mPersistedRunLevelCollection.size() == 2);
1356
    }
1357
 
1358
    /**
1359
     * test method designed to test the sequence diagram exit
1360
     * 1 constructs a ReleaseManager object, passing a connectionString of "unit test exit"
1361
     * 2 constructs a MasterThread object, passing a gbebuildfilter of "unit test exit"
1362
     * this utilises the following unit test hooks in the codebase:
1363
     * - MasterThread constructor made public for unit test use
1364
     * - MasterThread::run gbebuildfilter of "unit test exit" limits method to the sequence diagram
1365
     * - ReleaseManager::queryReleaseConfig method returns false
1366
     * - ReleaseManager::updateCurrentRunLevel utilises the public mPersistedRunLevelCollection
1367
     * 3 calls run on the MasterThread object
1368
     * 4 checks the first persisted run level is DB_IDLE
1369
     * 5 checks no further run levels were persisted
1370
     */
1371
    @Test
1372
    public void TestExit()
1373
    {
1374
        mLogger.debug("TestExit");
1375
        myReleaseManager releaseManager = new myReleaseManager("unit test exit", "not used", "not used");
1376
        MasterThread masterThread = new MasterThread(1, 1, releaseManager, "unit test exit");
1377
        masterThread.run();
1378
 
1379
        assertTrue(RunLevelData.isAt(BuildState.DB_IDLE, releaseManager.mPersistedRunLevelCollection.get(0)));
1380
        assertTrue( releaseManager.mPersistedRunLevelCollection.size() == 1);
1381
    }
1382
 
1383
    /**
1384
     * test method designed to test the sequence diagram check environment
1385
     * 1 constructs a ReleaseManager object, passing a connectionString of "unit check environment"
1386
     * 2 constructs a MasterThread object, passing a gbebuildfilter of "unit check environment"
1387
     * this utilises the following unit test hooks in the codebase:
1388
     * - MasterThread constructor made public for unit test use
1389
     * - MasterThread::run gbebuildfilter of "unit test check environment" limits method to the sequence diagram
1390
     * exits the while forever loop
1391
     * - MasterThread::housekeep method does not call deleteDirectory
1392
     * - MasterThread::hasSufficientDiskSpace initially returns false, then true
1393
     * - ReleaseManager::updateCurrentRunLevel utilises the public mPersistedRunLevelCollection
1394
     * 3 calls run on the MasterThread object
1395
     * 4 checks the first persisted run level is DB_CANNOT_CONTINUE
1396
     * 5 checks the next persisted run level is DB_ACTIVE
1397
     * 6 checks no further run levels were persisted
1398
     */
1399
    @Test
1400
    public void TestCheckEnvironment()
1401
    {
1402
        mLogger.debug("TestCheckEnvironment");
1403
        myReleaseManager releaseManager = new myReleaseManager("unit test check environment", "not used", "not used");
1404
        MasterThread masterThread = new MasterThread(1, 1, releaseManager, "unit test check environment");
1405
        masterThread.run();
1406
        assertTrue(RunLevelData.isAt(BuildState.DB_CANNOT_CONTINUE, releaseManager.mPersistedRunLevelCollection.get(0)));
1407
        assertTrue(RunLevelData.isAt(BuildState.DB_ACTIVE, releaseManager.mPersistedRunLevelCollection.get(1)));
1408
        assertTrue( releaseManager.mPersistedRunLevelCollection.size() == 2);
1409
    }
1410
 
1411
    /**
7051 dpurdie 1412
     * I'm guessing as to the function of this test
1413
     * Test for:
1414
     *      Circular dependencies
1415
     *      Build Dependency not in the release
1416
     *      Package has no build environment
1417
     *      Package not built for configured platforms
1418
     *      A package is selected to be built
1419
     * 
6914 dpurdie 1420
     */
1421
    @Test
1422
    public void TestPlanRelease_1()
1423
    {
7070 dpurdie 1424
        mLogger.debug("TestPlanRelease - Iteration 1");
6914 dpurdie 1425
        System.out.println("TestPlanRelease - Iteration 1");
7051 dpurdie 1426
        releaseManager = new myReleaseManager("iteration1", "not used", "not used");
1427
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
1428
 
6914 dpurdie 1429
        try
1430
        {
1431
            rippleEngine.collectMetaData();
7051 dpurdie 1432
 
1433
            //  Generate basic test set and then tweak for this test
7070 dpurdie 1434
            initTestPackages(releaseManager.mConnectionString);
7051 dpurdie 1435
            createWip(1000, "UncommonDependency.tim");
1436
            createWip(1001, "DependencyMissingFromRelease.tim");
1437
            createWip(1002, "CommonDependency.tim");
1438
            createWip(1003, "SolarisCentricProduct.tim");
1439
            createWip(1004, "GenericProduct.tim");
1440
            createWip(1005, "Product.tim");
1441
            createWip(1006, "UnfinishedProduct.tim");
1442
            createWip(1007, "Banana.tim");
1443
 
6914 dpurdie 1444
            rippleEngine.planRelease(false);
1445
        }
1446
        catch (Exception e)
1447
        {
1448
        }
1449
 
1450
        boolean rv;
1451
        BuildFile buildFile;
1452
 
1453
        buildFile = rippleEngine.getFirstBuildFileContent();
1454
        assertTrue(buildFile != null);
1455
        assertTrue(buildFile.state != BuildFileState.Dummy);
1456
        assertTrue(buildFile.state != BuildFileState.Empty);
1457
 
1458
        rv = Utilities.checkBuildfile(buildFile.content, "daemon1");
1459
        assertTrue(rv);
1460
 
1461
        buildFile = rippleEngine.getNextBuildFileContent();
1462
        assertTrue(buildFile != null);
1463
        assertTrue(buildFile.state == BuildFileState.Empty);
1464
    }
1465
 
1466
    @Test
1467
    public void TestPlanRelease_2()
1468
    {
1469
        //
1470
        System.out.println("TestPlanRelease - Iteration 2");
1471
        releaseManager = new myReleaseManager("iteration2", "not used", "not used");
7051 dpurdie 1472
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
6914 dpurdie 1473
 
1474
        // this is all the MasterThread does
1475
        try
1476
        {
1477
            rippleEngine.collectMetaData();
7070 dpurdie 1478
            initTestPackages(releaseManager.mConnectionString);
7051 dpurdie 1479
 
1480
            createWip(1001, "DependencyMissingFromRelease.tim");
1481
            createWip(1002, "CommonDependency.tim");
1482
            createWip(1003, "SolarisCentricProduct.tim");
1483
            createWip(1004, "GenericProduct.tim");
1484
            createWip(1005, "Product.tim");
1485
            createWip(1006, "UnfinishedProduct.tim");
1486
            createWip(1007, "Banana.tim");
1487
 
6914 dpurdie 1488
            rippleEngine.planRelease(false);
1489
        }
1490
        catch (Exception e)
1491
        {
1492
        }
1493
 
1494
        boolean rv;
1495
        BuildFile buildFile;
1496
 
1497
        buildFile = rippleEngine.getFirstBuildFileContent();
1498
        assertTrue(buildFile != null);
1499
        assertTrue(buildFile.state != BuildFileState.Dummy);
1500
        assertTrue(buildFile.state != BuildFileState.Empty);
1501
 
1502
        rv = Utilities.checkBuildfile(buildFile.content, "daemon2");
1503
        assertTrue(rv);
1504
 
1505
        buildFile = rippleEngine.getNextBuildFileContent();
1506
        assertTrue(buildFile != null);
1507
        assertTrue(buildFile.state == BuildFileState.Empty);
1508
    }
1509
 
1510
    @Test
1511
    public void TestPlanRelease_3()
1512
    {
1513
        //
1514
        System.out.println("TestPlanRelease - Iteration 3");
1515
        releaseManager = new myReleaseManager("iteration3", "not used", "not used");
7051 dpurdie 1516
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
1517
 
6914 dpurdie 1518
        // this is all the MasterThread does
1519
        try
1520
        {
1521
            rippleEngine.collectMetaData();
7070 dpurdie 1522
            initTestPackages(releaseManager.mConnectionString);
7051 dpurdie 1523
 
1524
            createWip(1001, "DependencyMissingFromRelease.tim");
1525
            createWip(1003, "SolarisCentricProduct.tim");
1526
            createWip(1004, "GenericProduct.tim");
1527
            createWip(1005, "Product.tim");
1528
            createWip(1006, "UnfinishedProduct.tim");
1529
 
6914 dpurdie 1530
            rippleEngine.planRelease(false);
1531
        }
1532
        catch (Exception e)
1533
        {
1534
        }
1535
 
1536
        boolean rv;
1537
        BuildFile buildFile;
1538
 
1539
        buildFile = rippleEngine.getFirstBuildFileContent();
1540
        assertTrue(buildFile != null);
1541
        assertTrue(buildFile.state != BuildFileState.Dummy);
1542
        assertTrue(buildFile.state != BuildFileState.Empty);
1543
 
1544
        rv = Utilities.checkBuildfile(buildFile.content, "daemon3");
1545
        assertTrue(rv);
1546
 
1547
        buildFile = rippleEngine.getNextBuildFileContent();
1548
        assertTrue(buildFile != null);
1549
        assertTrue(buildFile.state == BuildFileState.Empty);
1550
    }
1551
 
1552
    @Test
1553
    public void TestPlanRelease_4()
1554
    {
1555
 
1556
        // 
1557
        System.out.println("TestPlanRelease - Iteration 4");
1558
        releaseManager = new myReleaseManager("iteration4", "not used", "not used");
7051 dpurdie 1559
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
6914 dpurdie 1560
 
1561
        // this is all the MasterThread does
1562
        try
1563
        {
1564
            rippleEngine.collectMetaData();
7051 dpurdie 1565
 
7070 dpurdie 1566
            initTestPackages(releaseManager.mConnectionString);
7051 dpurdie 1567
            createWip(1001, "DependencyMissingFromRelease.tim");
1568
            createWip(1004, "GenericProduct.tim");
1569
            createWip(1005, "Product.tim");
1570
            createWip(1006, "UnfinishedProduct.tim");
1571
 
6914 dpurdie 1572
            rippleEngine.planRelease(false);
1573
        }
1574
        catch (Exception e)
1575
        {
1576
        }
1577
 
1578
        boolean rv;
1579
        BuildFile buildFile;
1580
 
1581
        buildFile = rippleEngine.getFirstBuildFileContent();
1582
        assertTrue(buildFile != null);
1583
        assertTrue(buildFile.state != BuildFileState.Dummy);
1584
        assertTrue(buildFile.state != BuildFileState.Empty);
1585
 
1586
        rv = Utilities.checkBuildfile(buildFile.content, "daemon4");
1587
        assertTrue(rv)
1588
        ;
1589
        buildFile = rippleEngine.getNextBuildFileContent();
1590
        assertTrue(buildFile != null);
1591
        assertTrue(buildFile.state == BuildFileState.Empty);
1592
    }
1593
 
1594
    @Test
1595
    public void TestPlanRelease_5()
1596
    {
1597
 
1598
        //
1599
        System.out.println("TestPlanRelease - Iteration 5");
1600
        releaseManager = new myReleaseManager("iteration5", "not used", "not used");
7051 dpurdie 1601
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
6914 dpurdie 1602
 
1603
        // this is all the MasterThread does
1604
        try
1605
        {
1606
            rippleEngine.collectMetaData();
7051 dpurdie 1607
 
7070 dpurdie 1608
            initTestPackages(releaseManager.mConnectionString);
7051 dpurdie 1609
            createWip(1001, "DependencyMissingFromRelease.tim");
1610
            createWip(1005, "Product.tim");
1611
            createWip(1006, "UnfinishedProduct.tim");
1612
 
6914 dpurdie 1613
            rippleEngine.planRelease(false);
1614
        }
1615
        catch (Exception e)
1616
        {
1617
        }
1618
 
1619
        boolean rv;
1620
        BuildFile buildFile;
1621
 
1622
        buildFile = rippleEngine.getFirstBuildFileContent();
1623
        assertTrue(buildFile != null);
1624
        assertTrue(buildFile.state != BuildFileState.Dummy);
1625
        assertTrue(buildFile.state != BuildFileState.Empty);
1626
 
1627
        rv = Utilities.checkBuildfile(buildFile.content, "daemon5");
1628
        assertTrue(rv);
1629
 
1630
        buildFile = rippleEngine.getNextBuildFileContent();
1631
        assertTrue(buildFile != null);
1632
        assertTrue(buildFile.state == BuildFileState.Empty);
1633
    }
1634
 
1635
    @Test
1636
    public void TestPlanRelease_6()
1637
    {
1638
 
1639
        //
1640
        System.out.println("TestPlanRelease - Iteration 6");
1641
        releaseManager = new myReleaseManager("iteration6", "not used", "not used");
7051 dpurdie 1642
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
6914 dpurdie 1643
 
1644
        // this is all the MasterThread does
1645
        try
1646
        {
1647
            rippleEngine.collectMetaData();
7051 dpurdie 1648
 
7070 dpurdie 1649
            initTestPackages(releaseManager.mConnectionString);
7051 dpurdie 1650
            createWip(1001, "DependencyMissingFromRelease.tim");
1651
            createWip(1006, "UnfinishedProduct.tim");
1652
 
6914 dpurdie 1653
            rippleEngine.planRelease(false);
1654
        }
1655
        catch (Exception e)
1656
        {
1657
        }
1658
 
1659
        boolean rv;
1660
        BuildFile buildFile;
1661
 
1662
        buildFile = rippleEngine.getFirstBuildFileContent();
1663
        assertTrue(buildFile != null);
1664
        assertTrue(buildFile.state != BuildFileState.Dummy);
1665
        assertTrue(buildFile.state != BuildFileState.Empty);
1666
 
1667
        rv = Utilities.checkBuildfile(buildFile.content, "daemon6");
1668
        assertTrue(rv);
1669
 
1670
        buildFile = rippleEngine.getNextBuildFileContent();
1671
        assertTrue(buildFile != null);
1672
        assertTrue(buildFile.state == BuildFileState.Empty);
1673
    }
1674
 
1675
    @Test
1676
    public void TestPlanRelease_7()
1677
    {
1678
 
1679
        //
1680
        System.out.println("TestPlanRelease - Iteration 7");
1681
        releaseManager = new myReleaseManager("iteration7", "not used", "not used");
7051 dpurdie 1682
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
6914 dpurdie 1683
 
1684
        // this is all the MasterThread does
1685
        try
1686
        {
1687
            rippleEngine.collectMetaData();
7070 dpurdie 1688
 
1689
            initTestPackages(releaseManager.mConnectionString);
1690
            createWip(1001, "DependencyMissingFromRelease.tim");
1691
            createWip(1006, "UnfinishedProduct.tim");
1692
 
6914 dpurdie 1693
            rippleEngine.planRelease(false);
1694
        }
1695
        catch (Exception e)
1696
        {
1697
        }
1698
 
1699
        boolean rv;
1700
        BuildFile buildFile;
1701
 
1702
        buildFile = rippleEngine.getFirstBuildFileContent();
1703
        assertTrue(buildFile != null);
1704
        assertTrue(buildFile.state == BuildFileState.Dummy);
1705
 
1706
        rv = Utilities.checkBuildfile(buildFile.content, "daemon7");
1707
        assertTrue(rv);
1708
 
1709
        buildFile = rippleEngine.getNextBuildFileContent();
1710
        assertTrue(buildFile != null);
1711
        assertTrue(buildFile.state == BuildFileState.Empty);
1712
    }
1713
 
1714
 
1715
    /**
1716
     * test method designed to test ripple field limits
1717
     * 1 tests applyPV returns 1 for package with version a.b.1.2.0
1718
     */
1719
    @Test
1720
    public void TestRippleFieldLimits()
1721
    {
1722
        ReleaseManager rm = new myReleaseManager();
1723
        // for test purposes, p.mId will contain the return value of applyPV
1724
        // test applyPV returns 1 and leaves mVersion alone
1725
        Package p = new Package(rm, "a.b.1.2.0", 255, 255, 255, 255);
1726
        assertTrue(p.getId() == 1);
1727
        assertTrue(p.getVersion().compareTo("a.b.1.2.0") == 0);
1728
 
1729
        // test applyPV returns 2 and leaves mVersion alone
1730
        p = new Package(rm, "1.0.0000", 0, 0, 0, 0);
1731
        assertTrue(p.getId() == 2);
1732
        assertTrue(p.getVersion().compareTo("1.0.0000") == 0);
1733
 
1734
        // test applyPV returns 2 and leaves mVersion alone
1735
        p = new Package(rm, "1.0.0009", 0, 0, 0, 9);
1736
        assertTrue(p.getId() == 2);
1737
        assertTrue(p.getVersion().compareTo("1.0.0009") == 0);
1738
 
1739
        // test applyPV returns 2 and leaves mVersion alone
1740
        p = new Package(rm, "1.0.9000", 0, 0, 9, 0);
1741
        assertTrue(p.getId() == 2);
1742
        assertTrue(p.getVersion().compareTo("1.0.9000") == 0);
1743
 
1744
        // test applyPV returns 2 and leaves mVersion alone
1745
        p = new Package(rm, "1.9.0000", 0, 9, 0, 0);
1746
        assertTrue(p.getId() == 2);
1747
        assertTrue(p.getVersion().compareTo("1.9.0000") == 0);
1748
 
1749
        // test applyPV returns 2 and leaves mVersion alone
1750
        p = new Package(rm, "1.0.0000", 1, 0, 0, 0);
1751
        assertTrue(p.getId() == 2);
1752
        assertTrue(p.getVersion().compareTo("1.0.0000") == 0);
1753
 
1754
        // test applyPV returns 2 and leaves mVersion alone - wince style limits
1755
        p = new Package(rm, "9.9.9000", 9, 9, 9, 0);
1756
        assertTrue(p.getId() == 2);
1757
        assertTrue(p.getVersion().compareTo("9.9.9000") == 0);
1758
 
7049 dpurdie 1759
        // test applyPV returns 0 and sets mNextVersion from 8.8.8000 to 8.8.9000 and does not change mVersion
6914 dpurdie 1760
        p = new Package(rm, "8.8.8000", 9, 9, 9, 0);
1761
        assertTrue(p.getId() == 0);
7049 dpurdie 1762
        assertTrue(p.getVersion().compareTo("8.8.8000") == 0);
1763
        assertTrue(p.getNextVersion().compareTo("8.8.9000") == 0);
6914 dpurdie 1764
 
7049 dpurdie 1765
        // test applyPV returns 0 and sets mNextVersion from 8.8.9000 to 8.9.0000
6914 dpurdie 1766
        p = new Package(rm, "8.8.9000", 9, 9, 9, 0);
1767
        assertTrue(p.getId() == 0);
7049 dpurdie 1768
        assertTrue(p.getVersion().compareTo("8.8.9000") == 0);
1769
        assertTrue(p.getNextVersion().compareTo("8.9.0000") == 0);
6914 dpurdie 1770
 
7049 dpurdie 1771
        // test applyPV returns 0 and sets mNextVersion from 8.9.9000 to 9.0.0000
6914 dpurdie 1772
        p = new Package(rm, "8.9.9000", 9, 9, 9, 0);
1773
        assertTrue(p.getId() == 0);
7049 dpurdie 1774
        assertTrue(p.getVersion().compareTo("8.9.9000") == 0);
1775
        assertTrue(p.getNextVersion().compareTo("9.0.0000") == 0);
6914 dpurdie 1776
 
1777
        // test applyPV returns 2 and leaves mVersion alone - mos style limits
1778
        p = new Package(rm, "99.99.0000", 99, 99, 0, 0);
1779
        assertTrue(p.getId() == 2);
1780
        assertTrue(p.getVersion().compareTo("99.99.0000") == 0);
1781
 
7049 dpurdie 1782
        // test applyPV returns 0 and sets mNextVersion from 98.98.0000 to 98.99.0000
6914 dpurdie 1783
        p = new Package(rm, "98.98.0000", 99, 99, 0, 0);
1784
        assertTrue(p.getId() == 0);
7049 dpurdie 1785
        assertTrue(p.getVersion().compareTo("98.98.0000") == 0);
1786
        assertTrue(p.getNextVersion().compareTo("98.99.0000") == 0);
6914 dpurdie 1787
 
7049 dpurdie 1788
        // test applyPV returns 0 and sets mNextVersion from 98.99.0000 to 99.0.0000
6914 dpurdie 1789
        p = new Package(rm, "98.99.0000", 99, 99, 0, 0);
1790
        assertTrue(p.getId() == 0);
7049 dpurdie 1791
        assertTrue(p.getVersion().compareTo("98.99.0000") == 0);
1792
        assertTrue(p.getNextVersion().compareTo("99.0.0000") == 0);
6914 dpurdie 1793
 
1794
    }
1795
 
1796
    /**
1797
     * test method designed to ripple of COTS packages
1798
     * 1 tests applyPV returns 1 for package with version a.b.1.2.0
1799
     */
1800
    @Test
1801
    public void TestCotsRipples()
1802
    {
1803
        ReleaseManager rm = new myReleaseManager();
1804
        // for test purposes, p.mId will contain the return value of applyPV
1805
        // test applyPV returns 1 and leaves mVersion alone
1806
 
1807
        mLogger.debug("TestCotsRipples: willNotRipple.cots");
1808
        Package p = new Package(rm, "willNotRipple.cots", 255, 255, 255, 255);
1809
        assertTrue(p.getId() == 1);
1810
        assertTrue(p.getVersion().compareTo("willNotRipple") == 0);
1811
 
1812
        mLogger.debug("TestCotsRipples: willRipple.0000.cots");
1813
        p = new Package(rm, "willRipple.0000.cots", 255, 255, 255, 255);
1814
        assertTrue(p.getId() == 0);
7049 dpurdie 1815
        assertTrue(p.getVersion().compareTo("willRipple.0000") == 0);
1816
        assertTrue(p.getNextVersion().compareTo("willRipple.1000") == 0);
6914 dpurdie 1817
 
1818
        mLogger.debug("TestCotsRipples: willNotRipple.000.cots");
1819
        p = new Package(rm, "willNotRipple.000.cots", 255, 255, 255, 255);
1820
        assertTrue(p.getId() == 1);
1821
        assertTrue(p.getVersion().compareTo("willNotRipple.000") == 0);
1822
 
1823
    }
1824
 
1825
}