Subversion Repositories DevTools

Rev

Rev 7096 | 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;
7095 dpurdie 6
import java.util.Collections;
7079 dpurdie 7
import java.util.Iterator;
8
 
9
import com.erggroup.buildtool.ripple.BuildFile;
10
import com.erggroup.buildtool.ripple.BuildFile.BuildFileState;
11
import com.erggroup.buildtool.ripple.BuildStandard;
12
import com.erggroup.buildtool.ripple.ReleaseManager;
13
import com.erggroup.buildtool.ripple.Package;
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;
7093 dpurdie 276
                    p.mBuildReason = BuildReason.Forced;
277
                    if ( p.mBuildTime == 100)
278
                        p.mBuildTime = 3;
7079 dpurdie 279
                    packageCollection.add(p);
280
                } 
281
            }
282
        }
283
 
284
	}
285
 
286
 
287
    public DaemonRippleTestCase()
288
    {
289
        mLogger.debug("DaemonBuildTestCase2");
290
    }
291
 
292
    /**
293
     * Test Case main line
294
     */
295
    public static void main(String[] args)
296
    {
297
        mLogger.debug("main");
298
        JUnitCore.main("com.erggroup.buildtool.utf.DaemonBuildTestCase2");
299
    }
300
 
301
    /**
302
     * set up performed prior to any test method
303
     */
304
    @BeforeClass
305
    public static void TestCaseSetUp()
306
    {
307
        mLogger.debug("TestCaseSetUp");
308
    }
309
 
310
    /**
311
     * tear down performed after test methods
312
     */
313
    @AfterClass
314
    public static void TestCaseTearDown()
315
    {
316
        mLogger.debug("TestCaseTearDown");
317
    }
318
 
319
    /**
320
     * set up performed prior to each test method
321
     */
322
    @Before
323
    public void TestSetUp()
324
    {
325
        mLogger.debug("TestSetUp");
326
        System.setProperty("vix.utf.name", "DaemonBuildTestCase2");
327
        Package.mGenericMachtype = "win32";
328
        Package.mGbeDpkg = ".";
329
    }
330
 
331
    /**
332
     * tear down performed after each test method
333
     */
334
    @After
335
    public void TestTearDown()
336
    {
337
        mLogger.debug("TestTearDown");
338
    }
339
 
340
    /** Check the build file contents
341
     *  @param expectedName - Name of the expected output file 
342
     */
343
    private void checkBuildFile(String expectedName) {
344
        boolean rv;
345
        BuildFile buildFile;
346
 
347
        buildFile = rippleEngine.getFirstBuildFileContent();
348
        assertTrue(buildFile != null);
349
        assertTrue(buildFile.state != BuildFileState.Dummy);
350
        assertTrue(buildFile.state != BuildFileState.Empty);
351
 
352
        rv = Utilities.checkBuildfile(buildFile.content, expectedName);
353
        assertTrue(rv);
354
    }
7096 dpurdie 355
 
356
    /** Check the build file contents
357
     *  @param expectedName - Name of the expected output file 
358
     */
359
    private void checkBuildFileDummy(String expectedName) {
360
        boolean rv;
361
        BuildFile buildFile;
362
 
363
        buildFile = rippleEngine.getFirstBuildFileContent();
364
        assertTrue(buildFile != null);
365
        assertTrue(buildFile.state == BuildFileState.Dummy);
366
        assertTrue(buildFile.state != BuildFileState.Empty);
367
 
368
        rv = Utilities.checkBuildfile(buildFile.content, expectedName);
369
        assertTrue(rv);
370
    }
7079 dpurdie 371
 
372
    /**
373
     *  Create a mesh of packages
374
     *  Ripple the one at the bottom
375
     */
376
    @Test
377
    public void RippleTest_1()
378
    {
379
        String tName = "ripple1";
380
        mLogger.debug("RippleTest {}", tName);
381
        System.out.println("RippleTest " + tName);
382
        releaseManager = new myReleaseManager(tName, "not used", "not used");
383
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
384
 
385
        try
386
        {
387
            rippleEngine.collectMetaData();
388
 
389
            //  Generate basic test set and then tweak for this test
390
            initTestPackages("p");
391
 
392
            createWip(2000, "p1.cr");
393
            rippleEngine.planRelease(false);
394
        }
395
        catch (Exception e)
396
        {
397
        }
398
 
399
        checkBuildFile(tName);
400
 
401
    }
402
 
403
    /**
404
     *  Create a mesh of packages
405
     *  Ripple the one not at the bottom
406
     */
407
    @Test
408
    public void RippleTest_2()
409
    {
410
        String tName = "ripple2";
411
        mLogger.debug("RippleTest {}", tName);
412
        System.out.println("RippleTest " + tName);
413
        releaseManager = new myReleaseManager(tName, "not used", "not used");
414
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
415
 
416
        try
417
        {
418
            rippleEngine.collectMetaData();
419
 
420
            //  Generate basic test set and then tweak for this test
421
            initTestPackages("p");
422
 
423
            createWip(2000, "p2.cr");
424
            rippleEngine.planRelease(false);
425
        }
426
        catch (Exception e)
427
        {
428
        }
429
 
430
        checkBuildFile(tName);
431
    }
432
 
433
 
434
 
435
    /**
436
     *  Create a mesh of packages
437
     *  Create a package that will feed into the mesh
438
     *  Mark bottom of the mesh as being rippled
439
     *  Mark create a WIP on the package feeding the mesh such that the additional time < 20%
440
     * 
441
     */
442
    @Test
443
    public void RippleTest_3()
444
    {
445
        String tName = "ripple3";
446
        mLogger.debug("RippleTest {}", tName);
447
        System.out.println("RippleTest " + tName);
448
        releaseManager = new myReleaseManager(tName, "not used", "not used");
449
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
450
 
451
        try
452
        {
453
            rippleEngine.collectMetaData();
454
 
455
            //  Generate basic test set and then tweak for this test
456
            initTestPackages("p");
457
 
458
            Package p1 = ripplePackage("p1.cr");
459
 
460
            Package  p0 = createPackage(20, "p0");
461
            testPackageCollection.add(p0);
462
            setBuildTime("p0.cr", 10);
463
            p1.addDependency(p0);
464
            createWip(21, "p0.cr");
465
 
466
            rippleEngine.planRelease(false);
467
        }
468
        catch (Exception e)
469
        {
470
        }
471
 
472
        checkBuildFile(tName);
473
    }
474
 
475
    /**
476
     *  Create a mesh of packages
477
     *  Create a package that will feed into the mesh
478
     *  Mark bottom of the mesh as being rippled
479
     *  Mark create a WIP on the package feeding the mesh such that the additional time > 20%
480
     * 
481
     */
482
    @Test
483
    public void RippleTest_4()
484
    {
485
        String tName = "ripple4";
486
        mLogger.debug("RippleTest {}", tName);
487
        System.out.println("RippleTest " + tName);
488
        releaseManager = new myReleaseManager(tName, "not used", "not used");
489
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
490
 
491
        try
492
        {
493
            rippleEngine.collectMetaData();
494
 
495
            //  Generate basic test set and then tweak for this test
496
            initTestPackages("p");
497
 
498
            Package p1 = ripplePackage("p1.cr");
499
 
500
            Package  p0 = createPackage(20, "p0");
501
            testPackageCollection.add(p0);
502
            setBuildTime("p0.cr", 200);
503
            p1.addDependency(p0);
504
            createWip(21, "p0.cr");
505
 
506
            rippleEngine.planRelease(false);
507
        }
508
        catch (Exception e)
509
        {
510
        }
511
 
512
        checkBuildFile(tName);
7093 dpurdie 513
    } 
514
 
515
    /**
516
     *  Create a mesh of packages
517
     *  Create a package that will feed into the mesh
518
     *  Mark bottom of the mesh as being rippled
519
     *  Mark RippleRequest on the package feeding the mesh such that the additional time > 20%
520
     * 
521
     */
522
    @Test
523
    public void RippleTest_4a()
524
    {
525
        String tName = "ripple4a";
526
        mLogger.debug("RippleTest {}", tName);
527
        System.out.println("RippleTest " + tName);
528
        releaseManager = new myReleaseManager(tName, "not used", "not used");
529
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
530
 
531
        try
532
        {
533
            rippleEngine.collectMetaData();
534
 
535
            //  Generate basic test set and then tweak for this test
536
            initTestPackages("p");
537
 
538
            Package p1 = ripplePackage("p1.cr");
539
 
540
            Package  p0 = createPackage(20, "p0");
541
            testPackageCollection.add(p0);
542
            setBuildTime("p0.cr", 200);
543
            p1.addDependency(p0);
544
            requestRipple("p0.cr");
545
 
546
            rippleEngine.planRelease(false);
547
        }
548
        catch (Exception e)
549
        {
550
        }
551
 
552
        checkBuildFile(tName);
7079 dpurdie 553
    }  
554
 
555
 
556
    /**
557
     *  Create a mesh of packages
558
     *      Create a test package
559
     *      Create a WIP
560
     *      Test should be built first          
561
     */
562
    @Test
563
    public void RippleTest_5()
564
    {
565
        String tName = "ripple5";
566
        mLogger.debug("RippleTest {}", tName);
567
        System.out.println("RippleTest " + tName);
568
        releaseManager = new myReleaseManager(tName, "not used", "not used");
569
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
570
 
571
        try
572
        {
573
            rippleEngine.collectMetaData();
574
 
575
            //  Generate basic test set and then tweak for this test
576
            initTestPackages("p");
577
 
578
            createWip (2000, "p1.cr");
579
            createTest(3333, "p5.cr");
580
            createTest(-1  , "p4.cr");
581
            rippleEngine.planRelease(false);
582
        }
583
        catch (Exception e)
584
        {
585
        }
586
 
587
        checkBuildFile(tName);
588
    }
589
 
590
    /**
591
     *  Create a mesh of packages
592
     *  Request a ripple (daemon Instruction)
593
     */
594
    @Test
595
    public void RippleTest_6()
596
    {
597
        String tName = "ripple6";
598
        mLogger.debug("RippleTest {}", tName);
599
        System.out.println("RippleTest " + tName);
600
        releaseManager = new myReleaseManager(tName, "not used", "not used");
601
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
602
 
603
        try
604
        {
605
            rippleEngine.collectMetaData();
606
 
607
            //  Generate basic test set and then tweak for this test
608
            initTestPackages("p");
609
 
610
            requestRipple("p5.cr");
611
            rippleEngine.planRelease(false);
612
        }
613
        catch (Exception e)
614
        {
615
        }
616
 
617
        checkBuildFile(tName);
618
    }
619
 
620
    /**
621
     * Create a mesh of packages
622
     * Create a circular dependency
623
     * Create a WIP to 'fix' the circular dependency
624
     */
625
    @Test
626
    public void RippleTest_7()
627
    {
628
        String tName = "ripple7";
629
        mLogger.debug("RippleTest {}", tName);
630
        System.out.println("RippleTest " + tName);
631
        releaseManager = new myReleaseManager(tName, "not used", "not used");
632
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
633
 
634
        try
635
        {
636
            rippleEngine.collectMetaData();
637
 
638
            //  Generate basic test set and then tweak for this test
639
            /*    A basic set of packages
640
             */
641
             Package  p1 = createPackage(1, "p1");
642
             Package  p2 = createPackage(2, "p2");
643
             Package  p3 = createPackage(3, "p3");
644
             Package  p4 = createPackage(4, "p4");
645
 
646
             testPackageCollection.add(p1);
647
             testPackageCollection.add(p2);
648
             testPackageCollection.add(p3);
649
             testPackageCollection.add(p4);
650
 
651
             // Create circular dependency
652
             p2.addDependency(p1);
653
             p3.addDependency(p2);
654
             p4.addDependency(p3);
655
             p1.addDependency(p4);
656
 
657
 
7094 dpurdie 658
             Package  p1fixed = createWip(4000, "p1.cr");
7079 dpurdie 659
             p1fixed.resetDependencies();
660
             testPackageCollection.add(p1fixed);
661
 
662
 
663
            rippleEngine.planRelease(false);
664
        }
665
        catch (Exception e)
666
        {
667
        }
668
 
669
        checkBuildFile(tName);
670
    }
671
 
672
    /**
673
     * Create a mesh of packages
674
     * Create a dependencies
675
     * Create a WIP to 'create' a circular dependency
676
     * 
677
     * Should detect that added package will create issue
678
     * 
679
     */
680
    @Test
681
    public void RippleTest_8()
682
    {
683
        String tName = "ripple8";
684
        mLogger.debug("RippleTest {}", tName);
685
        System.out.println("RippleTest " + tName);
686
        releaseManager = new myReleaseManager(tName, "not used", "not used");
687
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
688
 
689
        try
690
        {
691
            rippleEngine.collectMetaData();
692
 
693
            //  Generate basic test set and then tweak for this test
694
            /*    A basic set of packages
695
             */
696
             Package  p1 = createPackage(1, "p1");
697
             Package  p2 = createPackage(2, "p2");
698
             Package  p3 = createPackage(3, "p3");
699
             Package  p4 = createPackage(4, "p4");
700
 
701
             testPackageCollection.add(p1);
702
             testPackageCollection.add(p2);
703
             testPackageCollection.add(p3);
704
             testPackageCollection.add(p4);
705
 
706
             // Create dependency
707
             p2.addDependency(p1);
708
             p3.addDependency(p2);
709
             p4.addDependency(p3);
710
 
711
             Package  p1Broken = createWip(400, "p1.cr");
712
             p1Broken.resetDependencies().addDependency(p4);
713
 
714
          // Create a ripple, so we get some output
715
             Package  p5 = createPackage(5, "p5");
716
             testPackageCollection.add(p5);
717
             requestRipple("p5.cr");
718
 
719
            rippleEngine.planRelease(false);
720
        }
721
        catch (Exception e)
722
        {
723
        }
724
 
725
        checkBuildFile(tName);
726
    }
727
 
728
    /**
729
     * Create a WIP that will fail applyPV
730
     *      Expect it to be rejected
731
     *      Expect an email
732
     */
733
    @Test
734
    public void RippleTest_9()
735
    {
736
        String tName = "ripple9";
737
        mLogger.debug("RippleTest {}", tName);
738
        System.out.println("RippleTest " + tName);
739
        releaseManager = new myReleaseManager(tName, "not used", "not used");
740
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
741
 
742
        try
743
        {
744
            rippleEngine.collectMetaData();
745
 
746
            //  Generate basic test set and then tweak for this test
747
            /*    A basic set of packages
748
             */
749
             Package  p1 = createPackage(1, "p1");
750
             Package  p2 = createPackage(2, "p2");
751
             Package  p3 = createPackage(3, "p3");
752
             Package  p4 = createPackage(4, "p4");
753
 
754
             testPackageCollection.add(p1);
755
             testPackageCollection.add(p2);
756
             testPackageCollection.add(p3);
757
             testPackageCollection.add(p4);
758
 
759
             p2.addDependency(p1);
760
 
7094 dpurdie 761
             Package  p1Broken = createWip(4000, "p1.cr");
7079 dpurdie 762
             p1Broken.mVersion = "BadVersion";
763
 
7096 dpurdie 764
            rippleEngine.planRelease(false);
765
        }
766
        catch (Exception e)
767
        {
768
        }
7079 dpurdie 769
 
7096 dpurdie 770
        checkBuildFileDummy(tName);
771
    }
772
 
773
    /**
774
     * Create a few WIP that will fail applyPV and one that will succeed
775
     *      Expect it to be rejected
776
     */
777
    @Test
778
    public void RippleTest_9a()
779
    {
780
        String tName = "ripple9a";
781
        mLogger.debug("RippleTest {}", tName);
782
        System.out.println("RippleTest " + tName);
783
        releaseManager = new myReleaseManager(tName, "not used", "not used");
784
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
785
 
786
        try
787
        {
788
            rippleEngine.collectMetaData();
789
 
790
            //  Generate basic test set and then tweak for this test
791
            /*    A basic set of packages
792
             */
793
             Package  p1 = createPackage(1, "p1");
794
             Package  p2 = createPackage(2, "p2");
795
             Package  p3 = createPackage(3, "p3");
796
             Package  p4 = createPackage(4, "p4");
797
             Package  p5 = createPackage(4, "p5");
798
 
799
             testPackageCollection.add(p1);
800
             testPackageCollection.add(p2);
801
             testPackageCollection.add(p3);
802
             testPackageCollection.add(p4);
803
             testPackageCollection.add(p5);
804
 
805
             p5.addDependency(p2);
806
 
807
             Package  p1Broken = createWip(4001, "p1.cr");
808
             p1Broken.mVersion = "BadVersion";
809
 
810
             Package  p2Broken = createWip(4002, "p2.cr");
811
             p2Broken.mVersion = "BadVersion";
812
 
813
             Package  p3Broken = createWip(4003, "p3.cr");
814
             p3Broken.mVersion = "BadVersion";
815
 
816
             Package  p4Good = createWip(4004, "p4.cr");
817
 
7079 dpurdie 818
            rippleEngine.planRelease(false);
819
        }
820
        catch (Exception e)
821
        {
822
        }
823
 
824
        checkBuildFile(tName);
825
    }
826
 
7096 dpurdie 827
    /**
828
     * Create a few WIP that will fail applyPV and one that will succeed
829
     *      Expect it to be rejected
830
     */
831
    @Test
832
    public void RippleTest_9b()
833
    {
834
        String tName = "ripple9b";
835
        mLogger.debug("RippleTest {}", tName);
836
        System.out.println("RippleTest " + tName);
837
        releaseManager = new myReleaseManager(tName, "not used", "not used");
838
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
839
 
840
        try
841
        {
842
            rippleEngine.collectMetaData();
843
 
844
            //  Generate basic test set and then tweak for this test
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(5, "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(p2);
861
             p4.addDependency(p3);
862
 
863
             p2.mVersion = "BadVersion";
864
             ripplePackage("p1.cr");
865
             requestRipple("p5.cr").mBuildTime = 1000;
866
 
867
            rippleEngine.planRelease(false);
868
        }
869
        catch (Exception e)
870
        {
871
        }
872
 
873
        checkBuildFile(tName);
874
    }
7079 dpurdie 875
 
7096 dpurdie 876
 
7079 dpurdie 877
    /**
878
     *  Create a mesh of packages
879
     *  Mark bottom as being rippled
880
     *  
881
     *  Expect a single plan with the next two two candidate packages
882
     */
883
    @Test
884
    public void RippleTest_10()
885
    {
886
        String tName = "ripple10";
887
        mLogger.debug("RippleTest {}", tName);
888
        System.out.println("RippleTest " + tName);
889
        releaseManager = new myReleaseManager(tName, "not used", "not used");
890
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
891
 
892
        try
893
        {
894
            rippleEngine.collectMetaData();
895
 
896
            //  Generate basic test set and then tweak for this test
897
            initTestPackages("p");
898
 
899
            ripplePackage("p1.cr");
900
            rippleEngine.planRelease(false);
901
        }
902
        catch (Exception e)
903
        {
904
        }
905
 
906
        checkBuildFile(tName);
907
    }
908
 
909
    /**
910
     *  Create two meshes of packages
911
     *  Create a ripple in both
912
     */
913
    @Test
914
    public void RippleTest_11()
915
    {
916
        String tName = "ripple11";
917
        mLogger.debug("RippleTest {}", tName);
918
        System.out.println("RippleTest " + tName);
919
        releaseManager = new myReleaseManager(tName, "not used", "not used");
920
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
921
 
922
        try
923
        {
924
            rippleEngine.collectMetaData();
925
 
926
            //  Generate basic test set and then tweak for this test
927
            initTestPackages("p");
928
            initTestPackages("z");
929
            setBuildTime("z4.cr", 200);
930
 
931
            createWip(2000, "p1.cr");
932
            createWip(2000, "z1.cr");
933
 
934
            rippleEngine.planRelease(false);
935
        }
936
        catch (Exception e)
937
        {
938
        }
939
 
940
        checkBuildFile(tName);
941
    }
942
 
943
    /**
944
     *  Create a simple dependency chain
945
     *  Mark one of the packages as an SDK
946
     *  Ensure that a ripple will not affect the SDK package
947
     *  
948
     */
949
    @Test
950
    public void RippleTest_12()
951
    {
952
        String tName = "ripple12";
953
        mLogger.debug("RippleTest {}", tName);
954
        System.out.println("RippleTest " + tName);
955
        releaseManager = new myReleaseManager(tName, "not used", "not used");
956
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
957
 
958
        try
959
        {
960
            rippleEngine.collectMetaData();
961
 
962
            /*    A basic set of packages
963
             */
964
             Package  p1 = createPackage(1, "p1");
965
             Package  p2 = createPackage(2, "p2");
966
             Package  p3 = createPackage(3, "p3");
967
             Package  p4 = createPackage(4, "p4");
968
             Package  p5 = createPackage(4, "p5");
969
 
970
             testPackageCollection.add(p1);
971
             testPackageCollection.add(p2);
972
             testPackageCollection.add(p3);
973
             testPackageCollection.add(p4);
974
             testPackageCollection.add(p5);
975
 
976
             p2.addDependency(p1);
977
             p3.addDependency(p1);
978
             p4.addDependency(p3).addDependency(p2);
979
             p5.addDependency(p3);
980
 
981
             // Mark SDK
982
             p3.mIsSdk = true;
983
 
984
             // Create a ripple, so we get some output
985
             requestRipple("p1.cr");
986
 
987
            rippleEngine.planRelease(false);
988
        }
989
        catch (Exception e)
990
        {
991
        }
992
 
993
        checkBuildFile(tName);
994
    }
995
 
996
    /**
997
     *  Create a simple dependency chain
998
     *  Mark one of the packages as having a rippleStop
7081 dpurdie 999
     *  Create a ripple
7079 dpurdie 1000
     *  
7081 dpurdie 1001
     *  Ensure that a ripple will not propagate through the ripple stop 
1002
     *  
7079 dpurdie 1003
     */
1004
    @Test
1005
    public void RippleTest_13()
1006
    {
1007
        String tName = "ripple13";
1008
        mLogger.debug("RippleTest {}", tName);
1009
        System.out.println("RippleTest " + tName);
1010
        releaseManager = new myReleaseManager(tName, "not used", "not used");
1011
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
1012
 
1013
        try
1014
        {
1015
            rippleEngine.collectMetaData();
1016
 
1017
            /*    A basic set of packages
1018
             */
1019
             Package  p1 = createPackage(1, "p1");
1020
             Package  p2 = createPackage(2, "p2");
1021
             Package  p3 = createPackage(3, "p3");
1022
             Package  p4 = createPackage(4, "p4");
1023
             Package  p5 = createPackage(4, "p5");
1024
 
1025
             testPackageCollection.add(p1);
1026
             testPackageCollection.add(p2);
1027
             testPackageCollection.add(p3);
1028
             testPackageCollection.add(p4);
1029
             testPackageCollection.add(p5);
1030
 
1031
             p2.addDependency(p1);
1032
             p3.addDependency(p1);
1033
             p4.addDependency(p3).addDependency(p2);
1034
             p5.addDependency(p3);
1035
 
1036
             // Mark SDK
1037
             p3.mRippleStop = 's';
1038
 
1039
             // Create a ripple, so we get some output
1040
             requestRipple("p1.cr");
1041
 
1042
            rippleEngine.planRelease(false);
1043
        }
1044
        catch (Exception e)
1045
        {
1046
        }
1047
 
1048
        checkBuildFile(tName);
1049
    } 
1050
 
1051
    /**
1052
     *  Create a simple dependency chain
1053
     *  Create a WIP that is not already in the release
1054
     *
1055
     *  Ensure the WIP is included into the build set
1056
     *  
1057
     */
1058
    @Test
1059
    public void RippleTest_14()
1060
    {
1061
        String tName = "ripple14";
1062
        mLogger.debug("RippleTest {}", tName);
1063
        System.out.println("RippleTest " + tName);
1064
        releaseManager = new myReleaseManager(tName, "not used", "not used");
1065
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
1066
 
1067
        try
1068
        {
1069
            rippleEngine.collectMetaData();
1070
 
1071
            /*    A basic set of packages
1072
             */
1073
             Package  p1 = createPackage(1, "p1");
1074
             Package  p2 = createPackage(2, "p2");
1075
             Package  p3 = createPackage(3, "p3");
1076
             Package  p4 = createPackage(4, "p4");
1077
 
1078
             testPackageCollection.add(p1);
1079
             testPackageCollection.add(p2);
1080
             testPackageCollection.add(p3);
1081
             testPackageCollection.add(p4);
1082
 
1083
             p2.addDependency(p1);
1084
             p3.addDependency(p2);
1085
 
1086
             // Mark as a WIP
1087
             p4.mDirectlyPlanned = true;
1088
 
1089
 
1090
            rippleEngine.planRelease(false);
1091
        }
1092
        catch (Exception e)
1093
        {
1094
        }
1095
 
1096
        checkBuildFile(tName);
1097
    }
1098
 
1099
    /**
1100
     *  Create a simple dependency chain
1101
     *  Create a package that will be excluded
1102
     *
1103
     *  Ensure the upstream packages show up in the excluded list
1104
     *  
1105
     */
1106
    @Test
1107
    public void RippleTest_15()
1108
    {
1109
        String tName = "ripple15";
1110
        mLogger.debug("RippleTest {}", tName);
1111
        System.out.println("RippleTest " + tName);
1112
        releaseManager = new myReleaseManager(tName, "not used", "not used");
1113
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
1114
 
1115
        try
1116
        {
1117
            rippleEngine.collectMetaData();
1118
 
1119
            /*    A basic set of packages
1120
             */
1121
             Package  p1 = createPackage(1, "p1");
1122
             Package  p2 = createPackage(2, "p2");
1123
             Package  p3 = createPackage(3, "p3");
1124
             Package  p4 = createPackage(4, "p4");
7094 dpurdie 1125
             Package  p5 = createPackage(5, "p5");
1126
             Package  p6 = createPackage(6, "p6");
7079 dpurdie 1127
 
1128
             testPackageCollection.add(p1);
1129
             testPackageCollection.add(p2);
1130
             testPackageCollection.add(p3);
1131
             testPackageCollection.add(p4);
1132
             testPackageCollection.add(p5);
1133
             testPackageCollection.add(p6);
1134
 
1135
             p2.addDependency(p1);
1136
             p3.addDependency(p2);
1137
             p4.addDependency(p2);
1138
             p5.addDependency(p4);
1139
 
1140
             p2.mVersion = "BadVersion";
1141
             ripplePackage("p1.cr");
1142
 
1143
             // Create a ripple, so we get some output
1144
 
7096 dpurdie 1145
             //requestRipple("p6.cr");
7079 dpurdie 1146
 
1147
            rippleEngine.planRelease(false);
1148
        }
1149
        catch (Exception e)
1150
        {
1151
        }
1152
 
7096 dpurdie 1153
        checkBuildFileDummy(tName);
7079 dpurdie 1154
    }
7095 dpurdie 1155
 
1156
    /**
1157
     *  Create a simple dependency chain
1158
     *  
1159
     *  Ensure that the build level is correctly calculated
1160
     *  Should be able to build ALL the packages at the same level in any order
1161
     *  
1162
     */
1163
    @Test
1164
    public void RippleTest_16()
1165
    {
1166
        String tName = "ripple16";
1167
        mLogger.debug("RippleTest {}", tName);
1168
        System.out.println("RippleTest " + tName);
1169
        releaseManager = new myReleaseManager(tName, "not used", "not used");
1170
        rippleEngine = new RippleEngine(releaseManager, 11111, true);
1171
 
1172
        try
1173
        {
1174
            rippleEngine.collectMetaData();
1175
 
1176
            /*    A basic set of packages
1177
             */
1178
             Package  p1 = createPackage(1, "p1");
1179
             Package  p2 = createPackage(2, "p2");
1180
             Package  p3 = createPackage(3, "p3");
1181
             Package  p4 = createPackage(4, "p4");
1182
             Package  p5 = createPackage(5, "p5");
1183
             Package  p6 = createPackage(6, "p6");
1184
 
1185
             testPackageCollection.add(p1);
1186
             testPackageCollection.add(p2);
1187
             testPackageCollection.add(p3);
1188
             testPackageCollection.add(p4);
1189
             testPackageCollection.add(p5);
1190
             testPackageCollection.add(p6);
7079 dpurdie 1191
 
7095 dpurdie 1192
             p2.addDependency(p1);
1193
             p3.addDependency(p1);
1194
             p4.addDependency(p1);
1195
             p5.addDependency(p2);
1196
 
1197
             // Create a ripple, so we get some output
1198
             requestRipple("p1.cr");
1199
 
1200
            rippleEngine.planRelease(false);
1201
        }
1202
        catch (Exception e)
1203
        {
1204
        }
1205
 
1206
        checkBuildFile(tName);
1207
    }
1208
 
7079 dpurdie 1209
}