~james-page/ubuntu/wily/juju-core/mir-fixes

« back to all changes in this revision

Viewing changes to src/launchpad.net/juju-core/cmd/juju/bootstrap_test.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-04-07 18:24:59 UTC
  • mfrom: (1.1.22)
  • Revision ID: package-import@ubuntu.com-20140407182459-1b6zvm5ygm4ki7yp
Tags: 1.18.0-0ubuntu1
* New upstream release (LP: #1287147), including fixes for:
  - maas/lxc: LXC permission denied issue (LP: #1299588).
  - core: mega-watcher for machines does not include container
    addresses (LP: #1301464).

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
        "launchpad.net/juju-core/cmd"
16
16
        "launchpad.net/juju-core/constraints"
17
17
        "launchpad.net/juju-core/environs"
 
18
        "launchpad.net/juju-core/environs/config"
18
19
        "launchpad.net/juju-core/environs/configstore"
19
20
        "launchpad.net/juju-core/environs/filestorage"
20
21
        "launchpad.net/juju-core/environs/imagemetadata"
119
120
func (s *BootstrapSuite) runAllowRetriesTest(c *gc.C, test bootstrapRetryTest) {
120
121
        toolsVersions := envtesting.VAll
121
122
        if test.version != "" {
122
 
                testVersion := version.MustParseBinary(test.version)
 
123
                useVersion := strings.Replace(test.version, "%LTS%", config.LatestLtsSeries(), 1)
 
124
                testVersion := version.MustParseBinary(useVersion)
123
125
                s.PatchValue(&version.Current, testVersion)
124
126
                if test.addVersionToSource {
125
127
                        toolsVersions = append([]version.Binary{}, toolsVersions...)
201
203
        defer fake.Restore()
202
204
 
203
205
        if test.version != "" {
 
206
                useVersion := strings.Replace(test.version, "%LTS%", config.LatestLtsSeries(), 1)
204
207
                origVersion := version.Current
205
 
                version.Current = version.MustParseBinary(test.version)
 
208
                version.Current = version.MustParseBinary(useVersion)
206
209
                defer func() { version.Current = origVersion }()
207
210
        }
208
211
 
217
220
        uploadCount := len(test.uploads)
218
221
        if uploadCount == 0 {
219
222
                usefulVersion := version.Current
220
 
                usefulVersion.Series = env.Config().DefaultSeries()
 
223
                usefulVersion.Series = config.PreferredSeries(env.Config())
221
224
                envtesting.AssertUploadFakeToolsVersions(c, env.Storage(), usefulVersion)
222
225
        }
223
226
 
245
248
                urls := list.URLs()
246
249
                c.Check(urls, gc.HasLen, len(test.uploads))
247
250
                for _, v := range test.uploads {
 
251
                        v := strings.Replace(v, "%LTS%", config.LatestLtsSeries(), 1)
248
252
                        c.Logf("seeking: " + v)
249
253
                        vers := version.MustParseBinary(v)
250
254
                        _, found := urls[vers]
300
304
        err:  `--series requires --upload-tools`,
301
305
}, {
302
306
        info:    "bad environment",
303
 
        version: "1.2.3-precise-amd64",
 
307
        version: "1.2.3-%LTS%-amd64",
304
308
        args:    []string{"-e", "brokenenv"},
305
309
        err:     `dummy.Bootstrap is broken`,
306
310
}, {
312
316
        version: "1.2.3-saucy-amd64",
313
317
        args:    []string{"--upload-tools"},
314
318
        uploads: []string{
315
 
                "1.2.3.1-saucy-amd64",   // from version.Current
316
 
                "1.2.3.1-raring-amd64",  // from env.Config().DefaultSeries()
317
 
                "1.2.3.1-precise-amd64", // from environs/config.DefaultSeries
 
319
                "1.2.3.1-saucy-amd64",  // from version.Current
 
320
                "1.2.3.1-raring-amd64", // from env.Config().DefaultSeries()
 
321
                "1.2.3.1-%LTS%-amd64",  // from environs/config.DefaultSeries
318
322
        },
319
323
}, {
320
324
        info:     "--upload-tools uses arch from constraint if it matches current version",
322
326
        hostArch: "ppc64",
323
327
        args:     []string{"--upload-tools", "--constraints", "arch=ppc64"},
324
328
        uploads: []string{
325
 
                "1.3.3.1-saucy-ppc64",   // from version.Current
326
 
                "1.3.3.1-raring-ppc64",  // from env.Config().DefaultSeries()
327
 
                "1.3.3.1-precise-ppc64", // from environs/config.DefaultSeries
 
329
                "1.3.3.1-saucy-ppc64",  // from version.Current
 
330
                "1.3.3.1-raring-ppc64", // from env.Config().DefaultSeries()
 
331
                "1.3.3.1-%LTS%-ppc64",  // from environs/config.DefaultSeries
328
332
        },
329
333
        constraints: constraints.MustParse("arch=ppc64"),
330
334
}, {
331
335
        info:    "--upload-tools only uploads each file once",
332
 
        version: "1.2.3-precise-amd64",
 
336
        version: "1.2.3-%LTS%-amd64",
333
337
        args:    []string{"--upload-tools"},
334
338
        uploads: []string{
335
339
                "1.2.3.1-raring-amd64",
336
 
                "1.2.3.1-precise-amd64",
 
340
                "1.2.3.1-%LTS%-amd64",
337
341
        },
338
342
}, {
339
343
        info:    "--upload-tools rejects invalid series",
357
361
        args:    []string{"--upload-tools"},
358
362
        uploads: []string{
359
363
                "1.2.3.5-raring-amd64",
360
 
                "1.2.3.5-precise-amd64",
 
364
                "1.2.3.5-%LTS%-amd64",
361
365
        },
362
366
}}
363
367
 
365
369
        env, fake := makeEmptyFakeHome(c)
366
370
        defer fake.Restore()
367
371
        defaultSeriesVersion := version.Current
368
 
        defaultSeriesVersion.Series = env.Config().DefaultSeries()
 
372
        defaultSeriesVersion.Series = config.PreferredSeries(env.Config())
 
373
        // Force a dev version by having an odd minor version number.
 
374
        // This is because we have not uploaded any tools and auto
 
375
        // upload is only enabled for dev versions.
 
376
        defaultSeriesVersion.Minor = 11
 
377
        s.PatchValue(&version.Current, defaultSeriesVersion)
369
378
 
370
379
        ctx := coretesting.Context(c)
371
380
        code := cmd.Main(&BootstrapCommand{}, ctx, nil)
384
393
        env, fake := makeEmptyFakeHome(c)
385
394
        defer fake.Restore()
386
395
        defaultSeriesVersion := version.Current
387
 
        defaultSeriesVersion.Series = env.Config().DefaultSeries()
 
396
        defaultSeriesVersion.Series = config.PreferredSeries(env.Config())
 
397
        // Force a dev version by having an odd minor version number.
 
398
        // This is because we have not uploaded any tools and auto
 
399
        // upload is only enabled for dev versions.
 
400
        defaultSeriesVersion.Minor = 11
 
401
        s.PatchValue(&version.Current, defaultSeriesVersion)
388
402
 
389
403
        store, err := configstore.Default()
390
404
        c.Assert(err, gc.IsNil)
455
469
        defer fake.Restore()
456
470
 
457
471
        // Bootstrap the environment with the valid source.
 
472
        // Force a dev version by having an odd minor version number.
 
473
        // This is because we have not uploaded any tools and auto
 
474
        // upload is only enabled for dev versions.
 
475
        devVersion := version.Current
 
476
        devVersion.Minor = 11
 
477
        s.PatchValue(&version.Current, devVersion)
458
478
        ctx := coretesting.Context(c)
459
479
        code := cmd.Main(&BootstrapCommand{}, ctx, []string{"--metadata-source", sourceDir})
460
480
        c.Check(code, gc.Equals, 0)
516
536
        c.Assert(err, gc.IsNil)
517
537
        c.Logf("found: " + list.String())
518
538
        urls := list.URLs()
519
 
        c.Assert(urls, gc.HasLen, 2)
 
539
        expectedUrlCount := 2
 
540
 
 
541
        // There will be distinct tools for each of these if they are different
 
542
        if config.LatestLtsSeries() != coretesting.FakeDefaultSeries {
 
543
                expectedUrlCount++
 
544
        }
 
545
        c.Assert(urls, gc.HasLen, expectedUrlCount)
520
546
        expectedVers := []version.Binary{
521
547
                version.MustParseBinary(fmt.Sprintf("1.7.3.1-%s-%s", otherSeries, version.Current.Arch)),
522
548
                version.MustParseBinary(fmt.Sprintf("1.7.3.1-%s-%s", version.Current.Series, version.Current.Arch)),
558
584
        code := cmd.Main(&BootstrapCommand{}, context, nil)
559
585
        c.Assert(code, gc.Equals, 1)
560
586
        errText := context.Stderr.(*bytes.Buffer).String()
561
 
        expectedErrText := "uploading tools for series \\[precise raring\\]\n"
 
587
        expectedErrText := "uploading tools for series \\[precise "
 
588
        if config.LatestLtsSeries() != coretesting.FakeDefaultSeries {
 
589
                expectedErrText += config.LatestLtsSeries() + " "
 
590
        }
 
591
        expectedErrText += "raring\\]\n"
562
592
        expectedErrText += "Bootstrap failed, destroying environment\n"
563
593
        expectedErrText += "error: cannot upload bootstrap tools: an error\n"
564
594
        c.Assert(errText, gc.Matches, expectedErrText)
567
597
func (s *BootstrapSuite) TestBootstrapDestroy(c *gc.C) {
568
598
        _, fake := makeEmptyFakeHome(c)
569
599
        defer fake.Restore()
 
600
        devVersion := version.Current
 
601
        // Force a dev version by having an odd minor version number.
 
602
        // This is because we have not uploaded any tools and auto
 
603
        // upload is only enabled for dev versions.
 
604
        devVersion.Minor = 11
 
605
        s.PatchValue(&version.Current, devVersion)
570
606
        opc, errc := runCommand(nullContext(c), new(BootstrapCommand), "-e", "brokenenv")
571
607
        err := <-errc
572
608
        c.Assert(err, gc.ErrorMatches, "dummy.Bootstrap is broken")