Subversion Repositories DevTools

Rev

Rev 7093 | Rev 7095 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7079 dpurdie 1
package com.erggroup.buildtool.utf;
2
 
3
 
4
import java.sql.SQLException;
5
import java.util.ArrayList;
6
import java.util.Iterator;
7
 
8
import com.erggroup.buildtool.ripple.BuildFile;
9
import com.erggroup.buildtool.ripple.BuildFile.BuildFileState;
10
import com.erggroup.buildtool.ripple.BuildStandard;
11
import com.erggroup.buildtool.ripple.ReleaseManager;
12
import com.erggroup.buildtool.ripple.Package;
13
import com.erggroup.buildtool.ripple.RippleEngine;
14
import org.slf4j.Logger;
15
import org.slf4j.LoggerFactory;
16
import org.junit.AfterClass;
17
import org.junit.BeforeClass;
18
import org.junit.After;
19
import org.junit.Before;
20
import org.junit.Test;
21
import org.junit.runner.JUnitCore;
22
 
23
import static org.junit.Assert.*;
24
 
25
/**
26
 * container of Build Daemon test methods
27
 */
28
public class DaemonRippleTestCase
29
{
30
    private static final Logger mLogger = LoggerFactory.getLogger(DaemonRippleTestCase.class);
31
    myReleaseManager            releaseManager = null;
32
    RippleEngine                rippleEngine   = null;
33
    ArrayList<Package> testPackageCollection   = new ArrayList<Package>();
34
 
35
    /**
36
     * Init the package set
37
     */
38
    public void initTestPackages(String setName)
39
    {
40
 
41
        /*    A basic set of packages
42
         *    All buildable
43
         */
44
         Package  p1 = createPackage(1, setName + "1");
45
         Package  p2 = createPackage(2, setName + "2");
46
         Package  p3 = createPackage(3, setName + "3");
47
         Package  p4 = createPackage(4, setName + "4");
48
         Package  p5 = createPackage(5, setName + "5");
49
         Package  p6 = createPackage(6, setName + "6");
50
         Package  p7 = createPackage(7, setName + "7");
51
 
52
         testPackageCollection.add(p1);
53
         testPackageCollection.add(p2);
54
         testPackageCollection.add(p3);
55
         testPackageCollection.add(p4);
56
         testPackageCollection.add(p5);
57
         testPackageCollection.add(p6);
58
         testPackageCollection.add(p7);
59
 
60
         p2.addDependency(p1);
61
         p3.addDependency(p1);
62
         p4.addDependency(p2).addDependency(p3);
63
         p5.addDependency(p2).addDependency(p4);
64
         p6.addDependency(p3).addDependency(p4);
65
         p7.addDependency(p5).addDependency(p6);
66
 
67
    }
68
 
69
    /** Create a WIP for a package in the Release
70
     * This will mark it as directlyPlanned
71
     * @param newPvId
72
     * @param alias
73
     */
74
    private Package createWip(int newPvId, String alias) {
75
 
76
        Package wip = ReleaseManager.NULL_PACKAGE;
77
 
78
        for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
79
        {
80
            Package p = it.next();
81
 
82
            if ( p.mAlias.compareTo( alias ) == 0 )
83
            {
84
                wip = new Package(newPvId, p);
85
                wip.mDirectlyPlanned = true;
86
                testPackageCollection.add(wip);
87
                break;
88
            }
89
        }
90
        return wip;
91
    }
92
 
93
    /** Create a TEST for a package in the Release
94
     * This will mark it as test package
95
     * @param newPvId <0 - use PVID of the base package
96
     * @param alias
97
     */
98
    private Package createTest(int newPvId, String alias) {
99
 
100
        Package wip = ReleaseManager.NULL_PACKAGE;
101
 
102
        for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
103
        {
104
            Package p = it.next();
105
 
106
            if ( p.mAlias.compareTo( alias ) == 0 )
107
            {
108
                if (newPvId < 0 )
109
                    newPvId = p.mId;
110
                wip = new Package(newPvId, p);
111
                wip.mTestBuildInstruction = 1;
112
                testPackageCollection.add(wip);
113
                break;
114
            }
115
        }
116
        return wip;
117
    }
118
 
119
    /** Create a RippleRequest for a package in the Release
120
     * This will mark it as ripple request
121
     * @param alias
122
     */
123
    private Package requestRipple(String alias) {
124
 
125
        Package wip = ReleaseManager.NULL_PACKAGE;
126
 
127
        for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
128
        {
129
            Package p = it.next();
130
 
131
            if ( p.mAlias.compareTo( alias ) == 0 )
132
            {
133
                wip = new Package(p.mId, p);
134
                wip.mForcedRippleInstruction = 1;
135
                testPackageCollection.add(wip);
136
                break;
137
            }
138
        }
139
        return wip;
140
    }
141
 
142
    /** Create a basic package
143
     * 
144
     */
145
    private Package createPackage(int idx, String pName) {
146
        Package  p = new Package(idx, idx * 100, pName, "1.0.0000", ".cr", pName + ".cr" , "CC::/vob/"+pName+".WIP", 'b', 'P');
147
        BuildStandard bs = new BuildStandard(rippleEngine, "Linux", "Java 1.6");
148
        p.mBuildStandardCollection.add(bs);
149
        p.mBuildTime = 100;
150
        return p;
151
    }
152
 
153
    /** Update build time for a package
154
     * 
155
     *  @param alias
156
     *  @param buildTime - Set a new build time
157
     */
158
    private Package setBuildTime(String alias, int buildTime) {
159
 
160
        Package wip = ReleaseManager.NULL_PACKAGE;
161
 
162
        for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
163
        {
164
            Package p = it.next();
165
 
166
            if ( p.mAlias.compareTo( alias ) == 0 )
167
            {
168
                p.mBuildTime = buildTime;
169
                break;
170
            }
171
        }
172
        return wip;
173
    }
174
 
175
    /** Setup a package so that it will be detected as being rippled
176
     *      Change its pvid so that consumers will see that they need to be rippled
177
     */
178
    private Package ripplePackage(String alias) {
179
 
180
        Package wip = ReleaseManager.NULL_PACKAGE;
181
 
182
        for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
183
        {
184
            Package p = it.next();
185
 
186
            if ( p.mAlias.compareTo( alias ) == 0 )
187
            {
188
                p.mId += 10000;
189
                break;
190
            }
191
        }
192
        return wip;
193
    }
194
 
195
 
196
 
197
    /** Subclass and override key methods so that the test can control
198
     *  the data being used
199
     */
200
    public class myReleaseManager extends ReleaseManagerUtf
201
	{
202
       public myReleaseManager(final String connectionString, final String username, final String password)
203
		{
204
           super(connectionString, username, password);
205
           mLogger.error("Test {}", connectionString);
206
		}
207
 
208
		public myReleaseManager()
209
		{
210
			super();
211
		}
212
 
213
		@Override
214
		public void queryPackageVersions(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
215
		{
216
 
217
		    //    Filter for the packages that are in the release
218
		    for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
219
	        {
220
	            Package p = it.next();
221
	            if (!p.mDirectlyPlanned && p.mTestBuildInstruction == 0 && p.mForcedRippleInstruction == 0)
222
	            {
223
	                p.mIsNotReleased = false;
224
	                packageCollection.add(p);
225
	            }
226
	        }
227
		}
228
 
229
		@Override
230
        public void queryWips(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
231
        {
232
            //    Filter for the packages that are WIPs
233
            for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
234
            {
235
                Package p = it.next();
236
                if (p.mDirectlyPlanned )
237
                {
238
                    p.mIsNotReleased = true;
239
                    p.mDirectlyPlanned = true;
240
                    p.mBuildReason = BuildReason.NewVersion;
241
                    packageCollection.add(p);
242
                }
243
            }
244
 
245
        }
246
 
247
		@Override
248
        public void queryTest(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
249
        {
250
		    //    Filter for the packages that are TEST builds
251
            for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
252
            {
253
    		    Package p = it.next();
254
                if (p.mTestBuildInstruction != 0 )
255
                {
256
                    p.mIsNotReleased = true;
257
                    p.mDirectlyPlanned = false;
258
                    p.mBuildReason = BuildReason.Test;
259
                    packageCollection.add(p);
260
                }
261
            }
262
        }
263
 
264
		@Override
265
        public void queryRipples(RippleEngine rippleEngine, ArrayList<Package> packageCollection, int baseline) throws SQLException, Exception
266
        {
267
		    //    Filter for the packages that are forced Ripples
268
            for (Iterator<Package> it = testPackageCollection.iterator(); it.hasNext(); )
269
            {		    
270
    		    Package p = it.next();
271
                if (p.mForcedRippleInstruction != 0)
272
                {
273
                    p.mIsNotReleased = true;
274
                    p.mDirectlyPlanned = false;
7093 dpurdie 275
                    p.mBuildReason = BuildReason.Forced;
276
                    if ( p.mBuildTime == 100)
277
                        p.mBuildTime = 3;
7079 dpurdie 278
                    packageCollection.add(p);
279
                } 
280
            }
281
        }
282
 
283
	}
284
 
285
 
286
    public DaemonRippleTestCase()
287
    {
288
        mLogger.debug("DaemonBuildTestCase2");
289
    }
290
 
291
    /**
292
     * Test Case main line
293
     */
294
    public static void main(String[] args)
295
    {
296
        mLogger.debug("main");
297
        JUnitCore.main("com.erggroup.buildtool.utf.DaemonBuildTestCase2");
298
    }
299
 
300
    /**
301
     * set up performed prior to any test method
302
     */
303
    @BeforeClass
304
    public static void TestCaseSetUp()
305
    {
306
        mLogger.debug("TestCaseSetUp");
307
    }
308
 
309
    /**
310
     * tear down performed after test methods
311
     */
312
    @AfterClass
313
    public static void TestCaseTearDown()
314
    {
315
        mLogger.debug("TestCaseTearDown");
316
    }
317
 
318
    /**
319
     * set up performed prior to each test method
320
     */
321
    @Before
322
    public void TestSetUp()
323
    {
324
        mLogger.debug("TestSetUp");
325
        System.setProperty("vix.utf.name", "DaemonBuildTestCase2");
326
        Package.mGenericMachtype = "win32";
327
        Package.mGbeDpkg = ".";
328
    }
329
 
330
    /**
331
     * tear down performed after each test method
332
     */
333
    @After
334
    public void TestTearDown()
335
    {
336
        mLogger.debug("TestTearDown");
337
    }
338
 
339
    /** Check the build file contents
340
     *  @param expectedName - Name of the expected output file 
341
     */
342
    private void checkBuildFile(String expectedName) {
343
        boolean rv;
344
        BuildFile buildFile;
345
 
346
        buildFile = rippleEngine.getFirstBuildFileContent();
347
        assertTrue(buildFile != null);
348
        assertTrue(buildFile.state != BuildFileState.Dummy);
349
        assertTrue(buildFile.state != BuildFileState.Empty);
350
 
351
        rv = Utilities.checkBuildfile(buildFile.content, expectedName);
352
        assertTrue(rv);
353
    }
354
 
355
    /**
356
     *  Create a mesh of packages
357
     *  Ripple the one at the bottom
358
     */
359
    @Test
360
    public void RippleTest_1()
361
    {
362
        String tName = "ripple1";
363
        mLogger.debug("RippleTest {}", tName);
364
        System.out.println("RippleTest " + tName);
365
        releaseManager = new myReleaseManager(tName, "not used", "not used");
366
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
367
 
368
        try
369
        {
370
            rippleEngine.collectMetaData();
371
 
372
            //  Generate basic test set and then tweak for this test
373
            initTestPackages("p");
374
 
375
            createWip(2000, "p1.cr");
376
            rippleEngine.planRelease(false);
377
        }
378
        catch (Exception e)
379
        {
380
        }
381
 
382
        checkBuildFile(tName);
383
 
384
    }
385
 
386
    /**
387
     *  Create a mesh of packages
388
     *  Ripple the one not at the bottom
389
     */
390
    @Test
391
    public void RippleTest_2()
392
    {
393
        String tName = "ripple2";
394
        mLogger.debug("RippleTest {}", tName);
395
        System.out.println("RippleTest " + tName);
396
        releaseManager = new myReleaseManager(tName, "not used", "not used");
397
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
398
 
399
        try
400
        {
401
            rippleEngine.collectMetaData();
402
 
403
            //  Generate basic test set and then tweak for this test
404
            initTestPackages("p");
405
 
406
            createWip(2000, "p2.cr");
407
            rippleEngine.planRelease(false);
408
        }
409
        catch (Exception e)
410
        {
411
        }
412
 
413
        checkBuildFile(tName);
414
    }
415
 
416
 
417
 
418
    /**
419
     *  Create a mesh of packages
420
     *  Create a package that will feed into the mesh
421
     *  Mark bottom of the mesh as being rippled
422
     *  Mark create a WIP on the package feeding the mesh such that the additional time < 20%
423
     * 
424
     */
425
    @Test
426
    public void RippleTest_3()
427
    {
428
        String tName = "ripple3";
429
        mLogger.debug("RippleTest {}", tName);
430
        System.out.println("RippleTest " + tName);
431
        releaseManager = new myReleaseManager(tName, "not used", "not used");
432
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
433
 
434
        try
435
        {
436
            rippleEngine.collectMetaData();
437
 
438
            //  Generate basic test set and then tweak for this test
439
            initTestPackages("p");
440
 
441
            Package p1 = ripplePackage("p1.cr");
442
 
443
            Package  p0 = createPackage(20, "p0");
444
            testPackageCollection.add(p0);
445
            setBuildTime("p0.cr", 10);
446
            p1.addDependency(p0);
447
            createWip(21, "p0.cr");
448
 
449
            rippleEngine.planRelease(false);
450
        }
451
        catch (Exception e)
452
        {
453
        }
454
 
455
        checkBuildFile(tName);
456
    }
457
 
458
    /**
459
     *  Create a mesh of packages
460
     *  Create a package that will feed into the mesh
461
     *  Mark bottom of the mesh as being rippled
462
     *  Mark create a WIP on the package feeding the mesh such that the additional time > 20%
463
     * 
464
     */
465
    @Test
466
    public void RippleTest_4()
467
    {
468
        String tName = "ripple4";
469
        mLogger.debug("RippleTest {}", tName);
470
        System.out.println("RippleTest " + tName);
471
        releaseManager = new myReleaseManager(tName, "not used", "not used");
472
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
473
 
474
        try
475
        {
476
            rippleEngine.collectMetaData();
477
 
478
            //  Generate basic test set and then tweak for this test
479
            initTestPackages("p");
480
 
481
            Package p1 = ripplePackage("p1.cr");
482
 
483
            Package  p0 = createPackage(20, "p0");
484
            testPackageCollection.add(p0);
485
            setBuildTime("p0.cr", 200);
486
            p1.addDependency(p0);
487
            createWip(21, "p0.cr");
488
 
489
            rippleEngine.planRelease(false);
490
        }
491
        catch (Exception e)
492
        {
493
        }
494
 
495
        checkBuildFile(tName);
7093 dpurdie 496
    } 
497
 
498
    /**
499
     *  Create a mesh of packages
500
     *  Create a package that will feed into the mesh
501
     *  Mark bottom of the mesh as being rippled
502
     *  Mark RippleRequest on the package feeding the mesh such that the additional time > 20%
503
     * 
504
     */
505
    @Test
506
    public void RippleTest_4a()
507
    {
508
        String tName = "ripple4a";
509
        mLogger.debug("RippleTest {}", tName);
510
        System.out.println("RippleTest " + tName);
511
        releaseManager = new myReleaseManager(tName, "not used", "not used");
512
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
513
 
514
        try
515
        {
516
            rippleEngine.collectMetaData();
517
 
518
            //  Generate basic test set and then tweak for this test
519
            initTestPackages("p");
520
 
521
            Package p1 = ripplePackage("p1.cr");
522
 
523
            Package  p0 = createPackage(20, "p0");
524
            testPackageCollection.add(p0);
525
            setBuildTime("p0.cr", 200);
526
            p1.addDependency(p0);
527
            requestRipple("p0.cr");
528
 
529
            rippleEngine.planRelease(false);
530
        }
531
        catch (Exception e)
532
        {
533
        }
534
 
535
        checkBuildFile(tName);
7079 dpurdie 536
    }  
537
 
538
 
539
    /**
540
     *  Create a mesh of packages
541
     *      Create a test package
542
     *      Create a WIP
543
     *      Test should be built first          
544
     */
545
    @Test
546
    public void RippleTest_5()
547
    {
548
        String tName = "ripple5";
549
        mLogger.debug("RippleTest {}", tName);
550
        System.out.println("RippleTest " + tName);
551
        releaseManager = new myReleaseManager(tName, "not used", "not used");
552
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
553
 
554
        try
555
        {
556
            rippleEngine.collectMetaData();
557
 
558
            //  Generate basic test set and then tweak for this test
559
            initTestPackages("p");
560
 
561
            createWip (2000, "p1.cr");
562
            createTest(3333, "p5.cr");
563
            createTest(-1  , "p4.cr");
564
            rippleEngine.planRelease(false);
565
        }
566
        catch (Exception e)
567
        {
568
        }
569
 
570
        checkBuildFile(tName);
571
    }
572
 
573
    /**
574
     *  Create a mesh of packages
575
     *  Request a ripple (daemon Instruction)
576
     */
577
    @Test
578
    public void RippleTest_6()
579
    {
580
        String tName = "ripple6";
581
        mLogger.debug("RippleTest {}", tName);
582
        System.out.println("RippleTest " + tName);
583
        releaseManager = new myReleaseManager(tName, "not used", "not used");
584
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
585
 
586
        try
587
        {
588
            rippleEngine.collectMetaData();
589
 
590
            //  Generate basic test set and then tweak for this test
591
            initTestPackages("p");
592
 
593
            requestRipple("p5.cr");
594
            rippleEngine.planRelease(false);
595
        }
596
        catch (Exception e)
597
        {
598
        }
599
 
600
        checkBuildFile(tName);
601
    }
602
 
603
    /**
604
     * Create a mesh of packages
605
     * Create a circular dependency
606
     * Create a WIP to 'fix' the circular dependency
607
     */
608
    @Test
609
    public void RippleTest_7()
610
    {
611
        String tName = "ripple7";
612
        mLogger.debug("RippleTest {}", tName);
613
        System.out.println("RippleTest " + tName);
614
        releaseManager = new myReleaseManager(tName, "not used", "not used");
615
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
616
 
617
        try
618
        {
619
            rippleEngine.collectMetaData();
620
 
621
            //  Generate basic test set and then tweak for this test
622
            /*    A basic set of packages
623
             */
624
             Package  p1 = createPackage(1, "p1");
625
             Package  p2 = createPackage(2, "p2");
626
             Package  p3 = createPackage(3, "p3");
627
             Package  p4 = createPackage(4, "p4");
628
 
629
             testPackageCollection.add(p1);
630
             testPackageCollection.add(p2);
631
             testPackageCollection.add(p3);
632
             testPackageCollection.add(p4);
633
 
634
             // Create circular dependency
635
             p2.addDependency(p1);
636
             p3.addDependency(p2);
637
             p4.addDependency(p3);
638
             p1.addDependency(p4);
639
 
640
 
7094 dpurdie 641
             Package  p1fixed = createWip(4000, "p1.cr");
7079 dpurdie 642
             p1fixed.resetDependencies();
643
             testPackageCollection.add(p1fixed);
644
 
645
 
646
            rippleEngine.planRelease(false);
647
        }
648
        catch (Exception e)
649
        {
650
        }
651
 
652
        checkBuildFile(tName);
653
    }
654
 
655
    /**
656
     * Create a mesh of packages
657
     * Create a dependencies
658
     * Create a WIP to 'create' a circular dependency
659
     * 
660
     * Should detect that added package will create issue
661
     * 
662
     */
663
    @Test
664
    public void RippleTest_8()
665
    {
666
        String tName = "ripple8";
667
        mLogger.debug("RippleTest {}", tName);
668
        System.out.println("RippleTest " + tName);
669
        releaseManager = new myReleaseManager(tName, "not used", "not used");
670
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
671
 
672
        try
673
        {
674
            rippleEngine.collectMetaData();
675
 
676
            //  Generate basic test set and then tweak for this test
677
            /*    A basic set of packages
678
             */
679
             Package  p1 = createPackage(1, "p1");
680
             Package  p2 = createPackage(2, "p2");
681
             Package  p3 = createPackage(3, "p3");
682
             Package  p4 = createPackage(4, "p4");
683
 
684
             testPackageCollection.add(p1);
685
             testPackageCollection.add(p2);
686
             testPackageCollection.add(p3);
687
             testPackageCollection.add(p4);
688
 
689
             // Create dependency
690
             p2.addDependency(p1);
691
             p3.addDependency(p2);
692
             p4.addDependency(p3);
693
 
694
             Package  p1Broken = createWip(400, "p1.cr");
695
             p1Broken.resetDependencies().addDependency(p4);
696
 
697
          // Create a ripple, so we get some output
698
             Package  p5 = createPackage(5, "p5");
699
             testPackageCollection.add(p5);
700
             requestRipple("p5.cr");
701
 
702
            rippleEngine.planRelease(false);
703
        }
704
        catch (Exception e)
705
        {
706
        }
707
 
708
        checkBuildFile(tName);
709
    }
710
 
711
    /**
712
     * Create a WIP that will fail applyPV
713
     *      Expect it to be rejected
714
     *      Expect an email
715
     */
716
    @Test
717
    public void RippleTest_9()
718
    {
719
        String tName = "ripple9";
720
        mLogger.debug("RippleTest {}", tName);
721
        System.out.println("RippleTest " + tName);
722
        releaseManager = new myReleaseManager(tName, "not used", "not used");
723
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
724
 
725
        try
726
        {
727
            rippleEngine.collectMetaData();
728
 
729
            //  Generate basic test set and then tweak for this test
730
            /*    A basic set of packages
731
             */
732
             Package  p1 = createPackage(1, "p1");
733
             Package  p2 = createPackage(2, "p2");
734
             Package  p3 = createPackage(3, "p3");
735
             Package  p4 = createPackage(4, "p4");
736
 
737
             testPackageCollection.add(p1);
738
             testPackageCollection.add(p2);
739
             testPackageCollection.add(p3);
740
             testPackageCollection.add(p4);
741
 
742
             p2.addDependency(p1);
743
 
7094 dpurdie 744
             Package  p1Broken = createWip(4000, "p1.cr");
7079 dpurdie 745
             p1Broken.mVersion = "BadVersion";
746
 
747
             // Create a ripple, so we get some output
748
             requestRipple("p4.cr");
749
 
750
            rippleEngine.planRelease(false);
751
        }
752
        catch (Exception e)
753
        {
754
        }
755
 
756
        checkBuildFile(tName);
757
    }
758
 
759
 
760
    /**
761
     *  Create a mesh of packages
762
     *  Mark bottom as being rippled
763
     *  
764
     *  Expect a single plan with the next two two candidate packages
765
     */
766
    @Test
767
    public void RippleTest_10()
768
    {
769
        String tName = "ripple10";
770
        mLogger.debug("RippleTest {}", tName);
771
        System.out.println("RippleTest " + tName);
772
        releaseManager = new myReleaseManager(tName, "not used", "not used");
773
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
774
 
775
        try
776
        {
777
            rippleEngine.collectMetaData();
778
 
779
            //  Generate basic test set and then tweak for this test
780
            initTestPackages("p");
781
 
782
            ripplePackage("p1.cr");
783
            rippleEngine.planRelease(false);
784
        }
785
        catch (Exception e)
786
        {
787
        }
788
 
789
        checkBuildFile(tName);
790
    }
791
 
792
    /**
793
     *  Create two meshes of packages
794
     *  Create a ripple in both
795
     */
796
    @Test
797
    public void RippleTest_11()
798
    {
799
        String tName = "ripple11";
800
        mLogger.debug("RippleTest {}", tName);
801
        System.out.println("RippleTest " + tName);
802
        releaseManager = new myReleaseManager(tName, "not used", "not used");
803
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
804
 
805
        try
806
        {
807
            rippleEngine.collectMetaData();
808
 
809
            //  Generate basic test set and then tweak for this test
810
            initTestPackages("p");
811
            initTestPackages("z");
812
            setBuildTime("z4.cr", 200);
813
 
814
            createWip(2000, "p1.cr");
815
            createWip(2000, "z1.cr");
816
 
817
            rippleEngine.planRelease(false);
818
        }
819
        catch (Exception e)
820
        {
821
        }
822
 
823
        checkBuildFile(tName);
824
    }
825
 
826
    /**
827
     *  Create a simple dependency chain
828
     *  Mark one of the packages as an SDK
829
     *  Ensure that a ripple will not affect the SDK package
830
     *  
831
     */
832
    @Test
833
    public void RippleTest_12()
834
    {
835
        String tName = "ripple12";
836
        mLogger.debug("RippleTest {}", tName);
837
        System.out.println("RippleTest " + tName);
838
        releaseManager = new myReleaseManager(tName, "not used", "not used");
839
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
840
 
841
        try
842
        {
843
            rippleEngine.collectMetaData();
844
 
845
            /*    A basic set of packages
846
             */
847
             Package  p1 = createPackage(1, "p1");
848
             Package  p2 = createPackage(2, "p2");
849
             Package  p3 = createPackage(3, "p3");
850
             Package  p4 = createPackage(4, "p4");
851
             Package  p5 = createPackage(4, "p5");
852
 
853
             testPackageCollection.add(p1);
854
             testPackageCollection.add(p2);
855
             testPackageCollection.add(p3);
856
             testPackageCollection.add(p4);
857
             testPackageCollection.add(p5);
858
 
859
             p2.addDependency(p1);
860
             p3.addDependency(p1);
861
             p4.addDependency(p3).addDependency(p2);
862
             p5.addDependency(p3);
863
 
864
             // Mark SDK
865
             p3.mIsSdk = true;
866
 
867
             // Create a ripple, so we get some output
868
             requestRipple("p1.cr");
869
 
870
            rippleEngine.planRelease(false);
871
        }
872
        catch (Exception e)
873
        {
874
        }
875
 
876
        checkBuildFile(tName);
877
    }
878
 
879
    /**
880
     *  Create a simple dependency chain
881
     *  Mark one of the packages as having a rippleStop
7081 dpurdie 882
     *  Create a ripple
7079 dpurdie 883
     *  
7081 dpurdie 884
     *  Ensure that a ripple will not propagate through the ripple stop 
885
     *  
7079 dpurdie 886
     */
887
    @Test
888
    public void RippleTest_13()
889
    {
890
        String tName = "ripple13";
891
        mLogger.debug("RippleTest {}", tName);
892
        System.out.println("RippleTest " + tName);
893
        releaseManager = new myReleaseManager(tName, "not used", "not used");
894
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
895
 
896
        try
897
        {
898
            rippleEngine.collectMetaData();
899
 
900
            /*    A basic set of packages
901
             */
902
             Package  p1 = createPackage(1, "p1");
903
             Package  p2 = createPackage(2, "p2");
904
             Package  p3 = createPackage(3, "p3");
905
             Package  p4 = createPackage(4, "p4");
906
             Package  p5 = createPackage(4, "p5");
907
 
908
             testPackageCollection.add(p1);
909
             testPackageCollection.add(p2);
910
             testPackageCollection.add(p3);
911
             testPackageCollection.add(p4);
912
             testPackageCollection.add(p5);
913
 
914
             p2.addDependency(p1);
915
             p3.addDependency(p1);
916
             p4.addDependency(p3).addDependency(p2);
917
             p5.addDependency(p3);
918
 
919
             // Mark SDK
920
             p3.mRippleStop = 's';
921
 
922
             // Create a ripple, so we get some output
923
             requestRipple("p1.cr");
924
 
925
            rippleEngine.planRelease(false);
926
        }
927
        catch (Exception e)
928
        {
929
        }
930
 
931
        checkBuildFile(tName);
932
    } 
933
 
934
    /**
935
     *  Create a simple dependency chain
936
     *  Create a WIP that is not already in the release
937
     *
938
     *  Ensure the WIP is included into the build set
939
     *  
940
     */
941
    @Test
942
    public void RippleTest_14()
943
    {
944
        String tName = "ripple14";
945
        mLogger.debug("RippleTest {}", tName);
946
        System.out.println("RippleTest " + tName);
947
        releaseManager = new myReleaseManager(tName, "not used", "not used");
948
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
949
 
950
        try
951
        {
952
            rippleEngine.collectMetaData();
953
 
954
            /*    A basic set of packages
955
             */
956
             Package  p1 = createPackage(1, "p1");
957
             Package  p2 = createPackage(2, "p2");
958
             Package  p3 = createPackage(3, "p3");
959
             Package  p4 = createPackage(4, "p4");
960
 
961
             testPackageCollection.add(p1);
962
             testPackageCollection.add(p2);
963
             testPackageCollection.add(p3);
964
             testPackageCollection.add(p4);
965
 
966
             p2.addDependency(p1);
967
             p3.addDependency(p2);
968
 
969
             // Mark as a WIP
970
             p4.mDirectlyPlanned = true;
971
 
972
 
973
            rippleEngine.planRelease(false);
974
        }
975
        catch (Exception e)
976
        {
977
        }
978
 
979
        checkBuildFile(tName);
980
    }
981
 
982
    /**
983
     *  Create a simple dependency chain
984
     *  Create a package that will be excluded
985
     *
986
     *  Ensure the upstream packages show up in the excluded list
987
     *  
988
     */
989
    @Test
990
    public void RippleTest_15()
991
    {
992
        String tName = "ripple15";
993
        mLogger.debug("RippleTest {}", tName);
994
        System.out.println("RippleTest " + tName);
995
        releaseManager = new myReleaseManager(tName, "not used", "not used");
996
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
997
 
998
        try
999
        {
1000
            rippleEngine.collectMetaData();
1001
 
1002
            /*    A basic set of packages
1003
             */
1004
             Package  p1 = createPackage(1, "p1");
1005
             Package  p2 = createPackage(2, "p2");
1006
             Package  p3 = createPackage(3, "p3");
1007
             Package  p4 = createPackage(4, "p4");
7094 dpurdie 1008
             Package  p5 = createPackage(5, "p5");
1009
             Package  p6 = createPackage(6, "p6");
7079 dpurdie 1010
 
1011
             testPackageCollection.add(p1);
1012
             testPackageCollection.add(p2);
1013
             testPackageCollection.add(p3);
1014
             testPackageCollection.add(p4);
1015
             testPackageCollection.add(p5);
1016
             testPackageCollection.add(p6);
1017
 
1018
             p2.addDependency(p1);
1019
             p3.addDependency(p2);
1020
             p4.addDependency(p2);
1021
             p5.addDependency(p4);
1022
 
1023
             p2.mVersion = "BadVersion";
1024
             ripplePackage("p1.cr");
1025
 
1026
             // Create a ripple, so we get some output
1027
 
1028
             requestRipple("p6.cr");
1029
 
1030
            rippleEngine.planRelease(false);
1031
        }
1032
        catch (Exception e)
1033
        {
1034
        }
1035
 
1036
        checkBuildFile(tName);
1037
    }
1038
 
1039
}