Subversion Repositories DevTools

Rev

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