~rogpeppe/juju-core/themue-058-debug-log-api

« back to all changes in this revision

Viewing changes to cmd/juju/bootstrap_test.go

  • Committer: Frank Mueller
  • Date: 2014-01-23 14:14:49 UTC
  • mfrom: (2152.1.95 juju-core)
  • Revision ID: frank.mueller@canonical.com-20140123141449-b30l57y7gs3wjkpw
debugger: merged trunk and fixed permission and interface problems

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
        "launchpad.net/juju-core/constraints"
15
15
        "launchpad.net/juju-core/environs"
16
16
        "launchpad.net/juju-core/environs/configstore"
 
17
        "launchpad.net/juju-core/environs/filestorage"
 
18
        "launchpad.net/juju-core/environs/imagemetadata"
 
19
        imtesting "launchpad.net/juju-core/environs/imagemetadata/testing"
 
20
        "launchpad.net/juju-core/environs/simplestreams"
17
21
        "launchpad.net/juju-core/environs/storage"
18
22
        "launchpad.net/juju-core/environs/sync"
19
23
        envtesting "launchpad.net/juju-core/environs/testing"
319
323
        // Bootstrap the environment with an invalid source.
320
324
        // The command returns with an error.
321
325
        ctx := coretesting.Context(c)
322
 
        code := cmd.Main(&BootstrapCommand{}, ctx, []string{"--source", c.MkDir()})
 
326
        code := cmd.Main(&BootstrapCommand{}, ctx, []string{"--metadata-source", c.MkDir()})
323
327
        c.Check(code, gc.Equals, 1)
324
328
 
325
329
        // Now check that there are no tools available.
328
332
        c.Assert(err, gc.FitsTypeOf, errors.NotFoundf(""))
329
333
}
330
334
 
 
335
// createImageMetadata creates some image metadata in a local directory.
 
336
func createImageMetadata(c *gc.C) (string, []*imagemetadata.ImageMetadata) {
 
337
        // Generate some image metadata.
 
338
        im := []*imagemetadata.ImageMetadata{
 
339
                {
 
340
                        Id:         "1234",
 
341
                        Arch:       "amd64",
 
342
                        Version:    "13.04",
 
343
                        RegionName: "region",
 
344
                        Endpoint:   "endpoint",
 
345
                },
 
346
        }
 
347
        cloudSpec := &simplestreams.CloudSpec{
 
348
                Region:   "region",
 
349
                Endpoint: "endpoint",
 
350
        }
 
351
        sourceDir := c.MkDir()
 
352
        sourceStor, err := filestorage.NewFileStorageWriter(sourceDir, filestorage.UseDefaultTmpDir)
 
353
        c.Assert(err, gc.IsNil)
 
354
        err = imagemetadata.MergeAndWriteMetadata("raring", im, cloudSpec, sourceStor)
 
355
        c.Assert(err, gc.IsNil)
 
356
        return sourceDir, im
 
357
}
 
358
 
 
359
// checkImageMetadata checks that the environment contains the expected image metadata.
 
360
func checkImageMetadata(c *gc.C, stor storage.StorageReader, expected []*imagemetadata.ImageMetadata) {
 
361
        metadata := imtesting.ParseMetadataFromStorage(c, stor)
 
362
        c.Assert(metadata, gc.HasLen, 1)
 
363
        c.Assert(expected[0], gc.DeepEquals, metadata[0])
 
364
}
 
365
 
 
366
func (s *BootstrapSuite) TestUploadLocalImageMetadata(c *gc.C) {
 
367
        sourceDir, expected := createImageMetadata(c)
 
368
        env, fake := makeEmptyFakeHome(c)
 
369
        defer fake.Restore()
 
370
 
 
371
        // Bootstrap the environment with the valid source.
 
372
        ctx := coretesting.Context(c)
 
373
        code := cmd.Main(&BootstrapCommand{}, ctx, []string{"--metadata-source", sourceDir})
 
374
        c.Check(code, gc.Equals, 0)
 
375
 
 
376
        // Now check the image metadata has been uploaded.
 
377
        checkImageMetadata(c, env.Storage(), expected)
 
378
}
 
379
 
331
380
func (s *BootstrapSuite) TestAutoSyncLocalSource(c *gc.C) {
332
381
        sourceDir := createToolsSource(c, vAll)
333
382
        s.PatchValue(&version.Current.Number, version.MustParse("1.2.0"))
338
387
        // The bootstrapping has to show no error, because the tools
339
388
        // are automatically synchronized.
340
389
        ctx := coretesting.Context(c)
341
 
        code := cmd.Main(&BootstrapCommand{}, ctx, []string{"--source", sourceDir})
 
390
        code := cmd.Main(&BootstrapCommand{}, ctx, []string{"--metadata-source", sourceDir})
342
391
        c.Check(code, gc.Equals, 0)
343
392
 
344
393
        // Now check the available tools which are the 1.2.0 envtools.