Subversion Repositories DevTools

Rev

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