Subversion Repositories DevTools

Rev

Rev 7097 | Details | Compare with Previous | Last modification | View Log | RSS feed

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