本文整理汇总了Golang中github.com/juju/version.MustParseBinary函数的典型用法代码示例。如果您正苦于以下问题:Golang MustParseBinary函数的具体用法?Golang MustParseBinary怎么用?Golang MustParseBinary使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MustParseBinary函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestMockBuildTools
func (s *uploadSuite) TestMockBuildTools(c *gc.C) {
checkTools := func(tools *sync.BuiltAgent, vers version.Binary) {
c.Check(tools.StorageName, gc.Equals, "name")
c.Check(tools.Version, jc.DeepEquals, vers)
f, err := os.Open(filepath.Join(tools.Dir, "name"))
c.Assert(err, jc.ErrorIsNil)
defer f.Close()
gzr, err := gzip.NewReader(f)
c.Assert(err, jc.ErrorIsNil)
_, tr, err := tar.FindFile(gzr, names.Jujud)
c.Assert(err, jc.ErrorIsNil)
content, err := ioutil.ReadAll(tr)
c.Assert(err, jc.ErrorIsNil)
c.Check(string(content), gc.Equals, fmt.Sprintf("jujud contents %s", vers))
}
current := version.MustParseBinary("1.9.1-trusty-amd64")
s.PatchValue(&jujuversion.Current, current.Number)
s.PatchValue(&arch.HostArch, func() string { return current.Arch })
s.PatchValue(&series.HostSeries, func() string { return current.Series })
buildToolsFunc := toolstesting.GetMockBuildTools(c)
builtTools, err := buildToolsFunc(true, nil, "released")
c.Assert(err, jc.ErrorIsNil)
checkTools(builtTools, current)
vers := version.MustParseBinary("1.5.3-trusty-amd64")
builtTools, err = buildToolsFunc(true, &vers.Number, "released")
c.Assert(err, jc.ErrorIsNil)
checkTools(builtTools, vers)
}
开发者ID:bac,项目名称:juju,代码行数:34,代码来源:sync_test.go
示例2: TestWriteMetadataNoFetch
func (s *simplestreamsSuite) TestWriteMetadataNoFetch(c *gc.C) {
toolsList := coretools.List{
{
Version: version.MustParseBinary("1.2.3-precise-amd64"),
Size: 123,
SHA256: "abcd",
}, {
Version: version.MustParseBinary("2.0.1-raring-amd64"),
Size: 456,
SHA256: "xyz",
},
}
expected := toolsList
// Add tools with an unknown series. Do not add an entry in the
// expected list as these tools should be ignored.
vers, err := version.ParseBinary("3.2.1-xuanhuaceratops-amd64")
c.Assert(err, jc.Satisfies, series.IsUnknownOSForSeriesError)
toolsList = append(toolsList, &coretools.Tools{
Version: vers,
Size: 456,
SHA256: "wqe",
})
dir := c.MkDir()
writer, err := filestorage.NewFileStorageWriter(dir)
c.Assert(err, jc.ErrorIsNil)
err = tools.MergeAndWriteMetadata(writer, "proposed", "proposed", toolsList, tools.DoNotWriteMirrors)
c.Assert(err, jc.ErrorIsNil)
metadata := toolstesting.ParseMetadataFromDir(c, dir, "proposed", false)
assertMetadataMatches(c, dir, "proposed", expected, metadata)
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:32,代码来源:simplestreams_test.go
示例3: TestMetadataFromTools
func (*metadataHelperSuite) TestMetadataFromTools(c *gc.C) {
metadata := tools.MetadataFromTools(nil, "proposed")
c.Assert(metadata, gc.HasLen, 0)
toolsList := coretools.List{{
Version: version.MustParseBinary("1.2.3-precise-amd64"),
Size: 123,
SHA256: "abc",
}, {
Version: version.MustParseBinary("2.0.1-raring-amd64"),
URL: "file:///tmp/proposed/juju-2.0.1-raring-amd64.tgz",
Size: 456,
SHA256: "xyz",
}}
metadata = tools.MetadataFromTools(toolsList, "proposed")
c.Assert(metadata, gc.HasLen, len(toolsList))
for i, t := range toolsList {
md := metadata[i]
c.Assert(md.Release, gc.Equals, t.Version.Series)
c.Assert(md.Version, gc.Equals, t.Version.Number.String())
c.Assert(md.Arch, gc.Equals, t.Version.Arch)
// FullPath is only filled out when reading tools using simplestreams.
// It's not needed elsewhere and requires a URL() call.
c.Assert(md.FullPath, gc.Equals, "")
c.Assert(md.Path, gc.Equals, tools.StorageName(t.Version, "proposed")[len("tools/"):])
c.Assert(md.FileType, gc.Equals, "tar.gz")
c.Assert(md.Size, gc.Equals, t.Size)
c.Assert(md.SHA256, gc.Equals, t.SHA256)
}
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:30,代码来源:simplestreams_test.go
示例4: assertWriteMetadata
func (s *simplestreamsSuite) assertWriteMetadata(c *gc.C, withMirrors bool) {
var versionStrings = []string{
"1.2.3-precise-amd64",
"2.0.1-raring-amd64",
}
dir := c.MkDir()
toolstesting.MakeTools(c, dir, "proposed", versionStrings)
toolsList := coretools.List{
{
// If sha256/size is already known, do not recalculate
Version: version.MustParseBinary("1.2.3-precise-amd64"),
Size: 123,
SHA256: "abcd",
}, {
Version: version.MustParseBinary("2.0.1-raring-amd64"),
// The URL is not used for generating metadata.
URL: "bogus://",
},
}
writer, err := filestorage.NewFileStorageWriter(dir)
c.Assert(err, jc.ErrorIsNil)
writeMirrors := tools.DoNotWriteMirrors
if withMirrors {
writeMirrors = tools.WriteMirrors
}
err = tools.MergeAndWriteMetadata(writer, "proposed", "proposed", toolsList, writeMirrors)
c.Assert(err, jc.ErrorIsNil)
metadata := toolstesting.ParseMetadataFromDir(c, dir, "proposed", withMirrors)
assertMetadataMatches(c, dir, "proposed", toolsList, metadata)
// No release stream generated so there will not be a legacy index file created.
_, err = writer.Get("tools/streams/v1/index.json")
c.Assert(err, gc.NotNil)
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:35,代码来源:simplestreams_test.go
示例5: TestMockBuildTools
func (s *uploadSuite) TestMockBuildTools(c *gc.C) {
current := version.MustParseBinary("1.9.1-trusty-amd64")
s.PatchValue(&jujuversion.Current, current.Number)
s.PatchValue(&arch.HostArch, func() string { return current.Arch })
s.PatchValue(&series.HostSeries, func() string { return current.Series })
buildToolsFunc := toolstesting.GetMockBuildTools(c)
builtTools, err := buildToolsFunc(nil, "released")
c.Assert(err, jc.ErrorIsNil)
builtTools.Dir = ""
expectedBuiltTools := &sync.BuiltTools{
StorageName: "name",
Version: current,
Size: 127,
Sha256Hash: "6a19d08ca4913382ca86508aa38eb8ee5b9ae2d74333fe8d862c0f9e29b82c39",
}
c.Assert(builtTools, gc.DeepEquals, expectedBuiltTools)
vers := version.MustParseBinary("1.5.3-trusty-amd64")
builtTools, err = buildToolsFunc(&vers.Number, "released")
c.Assert(err, jc.ErrorIsNil)
builtTools.Dir = ""
expectedBuiltTools = &sync.BuiltTools{
StorageName: "name",
Version: vers,
Size: 127,
Sha256Hash: "cad8ccedab8f26807ff379ddc2f2f78d9a7cac1276e001154cee5e39b9ddcc38",
}
c.Assert(builtTools, gc.DeepEquals, expectedBuiltTools)
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:31,代码来源:sync_test.go
示例6: setupBootstrapSpecificVersion
func (s *bootstrapSuite) setupBootstrapSpecificVersion(c *gc.C, clientMajor, clientMinor int, toolsVersion *version.Number) (error, int, version.Number) {
currentVersion := jujuversion.Current
currentVersion.Major = clientMajor
currentVersion.Minor = clientMinor
currentVersion.Tag = ""
s.PatchValue(&jujuversion.Current, currentVersion)
s.PatchValue(&series.HostSeries, func() string { return "trusty" })
s.PatchValue(&arch.HostArch, func() string { return arch.AMD64 })
env := newEnviron("foo", useDefaultKeys, nil)
s.setDummyStorage(c, env)
envtools.RegisterToolsDataSourceFunc("local storage", func(environs.Environ) (simplestreams.DataSource, error) {
return storage.NewStorageSimpleStreamsDataSource("test datasource", env.storage, "tools", simplestreams.CUSTOM_CLOUD_DATA, false), nil
})
defer envtools.UnregisterToolsDataSourceFunc("local storage")
toolsBinaries := []version.Binary{
version.MustParseBinary("10.11.12-trusty-amd64"),
version.MustParseBinary("10.11.13-trusty-amd64"),
version.MustParseBinary("10.11-beta1-trusty-amd64"),
}
stream := "released"
if toolsVersion != nil && toolsVersion.Tag != "" {
stream = "devel"
currentVersion.Tag = toolsVersion.Tag
}
_, err := envtesting.UploadFakeToolsVersions(env.storage, stream, stream, toolsBinaries...)
c.Assert(err, jc.ErrorIsNil)
err = bootstrap.Bootstrap(envtesting.BootstrapContext(c), env, bootstrap.BootstrapParams{
AgentVersion: toolsVersion,
})
vers, _ := env.cfg.AgentVersion()
return err, env.bootstrapCount, vers
}
开发者ID:makyo,项目名称:juju,代码行数:35,代码来源:bootstrap_test.go
示例7: TestStartInstanceHostArch
func (s *lxcBrokerSuite) TestStartInstanceHostArch(c *gc.C) {
instanceConfig := s.instanceConfig(c, "1/lxc/0")
// Patch the host's arch, so the LXC broker will filter tools.
s.PatchValue(&arch.HostArch, func() string { return arch.PPC64EL })
possibleTools := coretools.List{&coretools.Tools{
Version: version.MustParseBinary("2.3.4-quantal-amd64"),
URL: "http://tools.testing.invalid/2.3.4-quantal-amd64.tgz",
}, {
Version: version.MustParseBinary("2.3.4-quantal-ppc64el"),
URL: "http://tools.testing.invalid/2.3.4-quantal-ppc64el.tgz",
}}
callback := func(settableStatus status.Status, info string, data map[string]interface{}) error {
return nil
}
_, err := s.broker.StartInstance(environs.StartInstanceParams{
Constraints: constraints.Value{},
Tools: possibleTools,
InstanceConfig: instanceConfig,
StatusCallback: callback,
})
c.Assert(err, jc.ErrorIsNil)
c.Assert(instanceConfig.Tools.Version.Arch, gc.Equals, arch.PPC64EL)
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:25,代码来源:lxc-broker_test.go
示例8: TestSetBootstrapTools
func (s *bootstrapSuite) TestSetBootstrapTools(c *gc.C) {
availableVersions := []version.Binary{
version.MustParseBinary("1.18.0-trusty-arm64"),
version.MustParseBinary("1.18.1-trusty-arm64"),
version.MustParseBinary("1.18.1.1-trusty-arm64"),
version.MustParseBinary("1.18.1.2-trusty-arm64"),
version.MustParseBinary("1.18.1.3-trusty-arm64"),
}
availableTools := make(tools.List, len(availableVersions))
for i, v := range availableVersions {
availableTools[i] = &tools.Tools{Version: v}
}
type test struct {
currentVersion version.Number
expectedTools version.Number
expectedAgentVersion version.Number
}
tests := []test{{
currentVersion: version.MustParse("1.18.0"),
expectedTools: version.MustParse("1.18.0"),
expectedAgentVersion: version.MustParse("1.18.1.3"),
}, {
currentVersion: version.MustParse("1.18.1.4"),
expectedTools: version.MustParse("1.18.1.3"),
expectedAgentVersion: version.MustParse("1.18.1.3"),
}, {
// build number is ignored unless major/minor don't
// match the latest.
currentVersion: version.MustParse("1.18.1.2"),
expectedTools: version.MustParse("1.18.1.3"),
expectedAgentVersion: version.MustParse("1.18.1.3"),
}, {
// If the current patch level exceeds whatever's in
// the tools source (e.g. when bootstrapping from trunk)
// then the latest available tools will be chosen.
currentVersion: version.MustParse("1.18.2"),
expectedTools: version.MustParse("1.18.1.3"),
expectedAgentVersion: version.MustParse("1.18.1.3"),
}}
env := newEnviron("foo", useDefaultKeys, nil)
for i, t := range tests {
c.Logf("test %d: %+v", i, t)
cfg, err := env.Config().Remove([]string{"agent-version"})
c.Assert(err, jc.ErrorIsNil)
err = env.SetConfig(cfg)
c.Assert(err, jc.ErrorIsNil)
s.PatchValue(&jujuversion.Current, t.currentVersion)
bootstrapTools, err := bootstrap.SetBootstrapTools(env, availableTools)
c.Assert(err, jc.ErrorIsNil)
for _, tools := range bootstrapTools {
c.Assert(tools.Version.Number, gc.Equals, t.expectedTools)
}
agentVersion, _ := env.Config().AgentVersion()
c.Assert(agentVersion, gc.Equals, t.expectedAgentVersion)
}
}
开发者ID:makyo,项目名称:juju,代码行数:58,代码来源:bootstrap_test.go
示例9: TestSetToolsSameVersions
func (*instancecfgSuite) TestSetToolsSameVersions(c *gc.C) {
var icfg instancecfg.InstanceConfig
list := coretools.List{
&coretools.Tools{Version: version.MustParseBinary("2.3.4-trusty-amd64")},
&coretools.Tools{Version: version.MustParseBinary("2.3.4-trusty-amd64")},
}
err := icfg.SetTools(list)
c.Assert(err, jc.ErrorIsNil)
c.Assert(icfg.ToolsList(), jc.DeepEquals, list)
}
开发者ID:bac,项目名称:juju,代码行数:10,代码来源:instancecfg_test.go
示例10: makePossibleTools
func makePossibleTools() coretools.List {
return coretools.List{&coretools.Tools{
Version: version.MustParseBinary("2.3.4-quantal-amd64"),
URL: "http://tools.testing.invalid/2.3.4-quantal-amd64.tgz",
}, {
// non-host-arch tools should be filtered out by StartInstance
Version: version.MustParseBinary("2.3.4-quantal-arm64"),
URL: "http://tools.testing.invalid/2.3.4-quantal-arm64.tgz",
}}
}
开发者ID:bac,项目名称:juju,代码行数:10,代码来源:broker_test.go
示例11: TestSetToolsDifferentVersions
func (*instancecfgSuite) TestSetToolsDifferentVersions(c *gc.C) {
var icfg instancecfg.InstanceConfig
list := coretools.List{
&coretools.Tools{Version: version.MustParseBinary("2.3.4-trusty-amd64")},
&coretools.Tools{Version: version.MustParseBinary("2.3.5-trusty-amd64")},
}
err := icfg.SetTools(list)
c.Assert(err, gc.ErrorMatches, `tools info mismatch.*2\.3\.4.*2\.3\.5.*`)
c.Assert(icfg.ToolsList(), gc.HasLen, 0)
}
开发者ID:bac,项目名称:juju,代码行数:10,代码来源:instancecfg_test.go
示例12: TestUpgraderRetryAndChanged
func (s *UpgraderSuite) TestUpgraderRetryAndChanged(c *gc.C) {
stor := s.DefaultToolsStorage
oldTools := envtesting.PrimeTools(c, stor, s.DataDir(), s.Environ.Config().AgentStream(), version.MustParseBinary("5.4.3-precise-amd64"))
s.patchVersion(oldTools.Version)
newTools := envtesting.AssertUploadFakeToolsVersions(
c, stor, s.Environ.Config().AgentStream(), s.Environ.Config().AgentStream(), version.MustParseBinary("5.4.5-precise-amd64"))[0]
err := statetesting.SetAgentVersion(s.State, newTools.Version.Number)
c.Assert(err, jc.ErrorIsNil)
retryc := make(chan time.Time)
*upgrader.RetryAfter = func() <-chan time.Time {
c.Logf("replacement retry after")
return retryc
}
err = stor.Remove(envtools.StorageName(newTools.Version, "released"))
c.Assert(err, jc.ErrorIsNil)
u := s.makeUpgrader(c)
defer u.Stop()
s.expectInitialUpgradeCheckNotDone(c)
for i := 0; i < 3; i++ {
select {
case retryc <- time.Now():
case <-time.After(coretesting.LongWait):
c.Fatalf("upgrader did not retry (attempt %d)", i)
}
}
// Make it upgrade to some newer tools that can be
// downloaded ok; it should stop retrying, download
// the newer tools and exit.
newerTools := envtesting.AssertUploadFakeToolsVersions(
c, stor, s.Environ.Config().AgentStream(), s.Environ.Config().AgentStream(), version.MustParseBinary("5.4.6-precise-amd64"))[0]
err = statetesting.SetAgentVersion(s.State, newerTools.Version.Number)
c.Assert(err, jc.ErrorIsNil)
s.BackingState.StartSync()
done := make(chan error)
go func() {
done <- u.Wait()
}()
select {
case err := <-done:
envtesting.CheckUpgraderReadyError(c, err, &upgrader.UpgradeReadyError{
AgentName: s.machine.Tag().String(),
OldTools: oldTools.Version,
NewTools: newerTools.Version,
DataDir: s.DataDir(),
})
case <-time.After(coretesting.LongWait):
c.Fatalf("upgrader did not quit after upgrading")
}
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:54,代码来源:upgrader_test.go
示例13: TestClientFindTools
func (s *clientSuite) TestClientFindTools(c *gc.C) {
result, err := s.APIState.Client().FindTools(99, -1, "", "")
c.Assert(err, jc.ErrorIsNil)
c.Assert(result.Error, jc.Satisfies, params.IsCodeNotFound)
toolstesting.UploadToStorage(c, s.DefaultToolsStorage, "released", version.MustParseBinary("2.99.0-precise-amd64"))
result, err = s.APIState.Client().FindTools(2, 99, "precise", "amd64")
c.Assert(err, jc.ErrorIsNil)
c.Assert(result.Error, gc.IsNil)
c.Assert(result.List, gc.HasLen, 1)
c.Assert(result.List[0].Version, gc.Equals, version.MustParseBinary("2.99.0-precise-amd64"))
url := fmt.Sprintf("https://%s/model/%s/tools/%s",
s.APIState.Addr(), coretesting.ModelTag.Id(), result.List[0].Version)
c.Assert(result.List[0].URL, gc.Equals, url)
}
开发者ID:bac,项目名称:juju,代码行数:14,代码来源:client_test.go
示例14: TestFindTools
func (s *toolsSuite) TestFindTools(c *gc.C) {
envtoolsList := coretools.List{
&coretools.Tools{
Version: version.MustParseBinary("123.456.0-win81-alpha"),
Size: 2048,
SHA256: "badf00d",
},
&coretools.Tools{
Version: version.MustParseBinary("123.456.1-win81-alpha"),
},
}
storageMetadata := []binarystorage.Metadata{{
Version: "123.456.0-win81-alpha",
Size: 1024,
SHA256: "feedface",
}}
s.PatchValue(common.EnvtoolsFindTools, func(e environs.Environ, major, minor int, stream string, filter coretools.Filter) (coretools.List, error) {
c.Assert(major, gc.Equals, 123)
c.Assert(minor, gc.Equals, 456)
c.Assert(stream, gc.Equals, "released")
c.Assert(filter.Series, gc.Equals, "win81")
c.Assert(filter.Arch, gc.Equals, "alpha")
return envtoolsList, nil
})
toolsFinder := common.NewToolsFinder(
stateenvirons.EnvironConfigGetter{s.State}, &mockToolsStorage{metadata: storageMetadata}, sprintfURLGetter("tools:%s"),
)
result, err := toolsFinder.FindTools(params.FindToolsParams{
MajorVersion: 123,
MinorVersion: 456,
Series: "win81",
Arch: "alpha",
})
c.Assert(err, jc.ErrorIsNil)
c.Assert(result.Error, gc.IsNil)
c.Check(result.List, jc.DeepEquals, coretools.List{
&coretools.Tools{
Version: version.MustParseBinary(storageMetadata[0].Version),
Size: storageMetadata[0].Size,
SHA256: storageMetadata[0].SHA256,
URL: "tools:" + storageMetadata[0].Version,
},
&coretools.Tools{
Version: version.MustParseBinary("123.456.1-win81-alpha"),
URL: "tools:123.456.1-win81-alpha",
},
})
}
开发者ID:bac,项目名称:juju,代码行数:49,代码来源:tools_test.go
示例15: TestResolveMetadataLegacyPPC64
func (*metadataHelperSuite) TestResolveMetadataLegacyPPC64(c *gc.C) {
var versionStrings = []string{"1.2.3-precise-amd64", "1.2.3-precise-ppc64el"}
dir := c.MkDir()
toolstesting.MakeTools(c, dir, "released", versionStrings)
toolsList := coretools.List{
{
Version: version.MustParseBinary(versionStrings[0]),
}, {
Version: version.MustParseBinary(versionStrings[1]),
}, {
Version: version.MustParseBinary("1.2.3-precise-ppc64"),
},
}
toolsMetadata := tools.MetadataFromTools(toolsList, dir)
stor, err := filestorage.NewFileStorageReader(dir)
c.Assert(err, jc.ErrorIsNil)
err = tools.ResolveMetadata(stor, "released", toolsMetadata)
c.Assert(err, jc.ErrorIsNil)
c.Assert(toolsMetadata, gc.DeepEquals, []*tools.ToolsMetadata{
{
Release: "precise",
Version: "1.2.3",
Arch: "amd64",
Size: 19,
FileType: "tar.gz",
SHA256: "dcdd65b962b804a3d63b108d670290ee95a867a97fe9b9f99b2b77b5c7173e59",
Path: fmt.Sprintf("%s/juju-1.2.3-precise-amd64.tgz", dir),
},
{
Release: "precise",
Version: "1.2.3",
Arch: "ppc64el",
Size: 21,
FileType: "tar.gz",
SHA256: "a3460ed45eb07a69adfcd541413a495f988c5842d715c6a40353075c3ad47af2",
Path: fmt.Sprintf("%s/juju-1.2.3-precise-ppc64el.tgz", dir),
},
{
Release: "precise",
Version: "1.2.3",
Arch: "ppc64",
Size: 21,
FileType: "tar.gz",
SHA256: "a3460ed45eb07a69adfcd541413a495f988c5842d715c6a40353075c3ad47af2",
Path: fmt.Sprintf("%s/juju-1.2.3-precise-ppc64el.tgz", dir),
},
})
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:49,代码来源:simplestreams_test.go
示例16: TestFindToolsExactInStorage
func (s *toolsSuite) TestFindToolsExactInStorage(c *gc.C) {
mockToolsStorage := &mockToolsStorage{
metadata: []binarystorage.Metadata{
{Version: "1.22-beta1-trusty-amd64"},
{Version: "1.22.0-trusty-amd64"},
},
}
s.PatchValue(&arch.HostArch, func() string { return arch.AMD64 })
s.PatchValue(&series.HostSeries, func() string { return "trusty" })
s.PatchValue(&jujuversion.Current, version.MustParseBinary("1.22-beta1-trusty-amd64").Number)
s.testFindToolsExact(c, mockToolsStorage, true, true)
s.PatchValue(&jujuversion.Current, version.MustParseBinary("1.22.0-trusty-amd64").Number)
s.testFindToolsExact(c, mockToolsStorage, true, false)
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:15,代码来源:tools_test.go
示例17: setUpEnvAndTools
func (s *UpgradeJujuSuite) setUpEnvAndTools(c *gc.C, currentVersion string, agentVersion string, tools []string) {
current := version.MustParseBinary(currentVersion)
s.PatchValue(&jujuversion.Current, current.Number)
s.PatchValue(&arch.HostArch, func() string { return current.Arch })
s.PatchValue(&series.HostSeries, func() string { return current.Series })
toolsDir := c.MkDir()
updateAttrs := map[string]interface{}{
"agent-version": agentVersion,
"agent-metadata-url": "file://" + toolsDir + "/tools",
}
err := s.State.UpdateModelConfig(updateAttrs, nil, nil)
c.Assert(err, jc.ErrorIsNil)
versions := make([]version.Binary, len(tools))
for i, v := range tools {
versions[i], err = version.ParseBinary(v)
if err != nil {
c.Assert(err, jc.Satisfies, series.IsUnknownOSForSeriesError)
}
}
if len(versions) > 0 {
stor, err := filestorage.NewFileStorageWriter(toolsDir)
c.Assert(err, jc.ErrorIsNil)
envtesting.MustUploadFakeToolsVersions(stor, s.Environ.Config().AgentStream(), versions...)
}
}
开发者ID:bac,项目名称:juju,代码行数:27,代码来源:upgradejuju_test.go
示例18: TestResolveMetadata
func (*metadataHelperSuite) TestResolveMetadata(c *gc.C) {
var versionStrings = []string{"1.2.3-precise-amd64"}
dir := c.MkDir()
toolstesting.MakeTools(c, dir, "released", versionStrings)
toolsList := coretools.List{{
Version: version.MustParseBinary(versionStrings[0]),
Size: 123,
SHA256: "abc",
}}
stor, err := filestorage.NewFileStorageReader(dir)
c.Assert(err, jc.ErrorIsNil)
err = tools.ResolveMetadata(stor, "released", nil)
c.Assert(err, jc.ErrorIsNil)
// We already have size/sha256, so ensure that storage isn't consulted.
countingStorage := &countingStorage{StorageReader: stor}
metadata := tools.MetadataFromTools(toolsList, "released")
err = tools.ResolveMetadata(countingStorage, "released", metadata)
c.Assert(err, jc.ErrorIsNil)
c.Assert(countingStorage.counter, gc.Equals, 0)
// Now clear size/sha256, and check that it is called, and
// the size/sha256 sum are updated.
metadata[0].Size = 0
metadata[0].SHA256 = ""
err = tools.ResolveMetadata(countingStorage, "released", metadata)
c.Assert(err, jc.ErrorIsNil)
c.Assert(countingStorage.counter, gc.Equals, 1)
c.Assert(metadata[0].Size, gc.Not(gc.Equals), 0)
c.Assert(metadata[0].SHA256, gc.Not(gc.Equals), "")
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:32,代码来源:simplestreams_test.go
示例19: testAgentTools
func testAgentTools(c *gc.C, obj tooler, agent string) {
// object starts with zero'd tools.
t, err := obj.AgentTools()
c.Assert(t, gc.IsNil)
c.Assert(err, jc.Satisfies, errors.IsNotFound)
err = obj.SetAgentVersion(version.Binary{})
c.Assert(err, gc.ErrorMatches, fmt.Sprintf("cannot set agent version for %s: empty series or arch", agent))
v2 := version.MustParseBinary("7.8.9-quantal-amd64")
err = obj.SetAgentVersion(v2)
c.Assert(err, jc.ErrorIsNil)
t3, err := obj.AgentTools()
c.Assert(err, jc.ErrorIsNil)
c.Assert(t3.Version, gc.DeepEquals, v2)
err = obj.Refresh()
c.Assert(err, jc.ErrorIsNil)
t3, err = obj.AgentTools()
c.Assert(err, jc.ErrorIsNil)
c.Assert(t3.Version, gc.DeepEquals, v2)
testWhenDying(c, obj, noErr, deadErr, func() error {
return obj.SetAgentVersion(v2)
})
}
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:25,代码来源:binarystorage_test.go
示例20: createContainer
func createContainer(c *gc.C, manager container.Manager, machineId string) instance.Instance {
machineNonce := "fake-nonce"
stateInfo := jujutesting.FakeStateInfo(machineId)
apiInfo := jujutesting.FakeAPIInfo(machineId)
instanceConfig, err := instancecfg.NewInstanceConfig(machineId, machineNonce, imagemetadata.ReleasedStream, "quantal", "", true, stateInfo, apiInfo)
c.Assert(err, jc.ErrorIsNil)
network := container.BridgeNetworkConfig("virbr0", 0, nil)
err = instanceConfig.SetTools(tools.List{
&tools.Tools{
Version: version.MustParseBinary("2.3.4-foo-bar"),
URL: "http://tools.testing.invalid/2.3.4-foo-bar.tgz",
},
})
c.Assert(err, jc.ErrorIsNil)
environConfig := dummyConfig(c)
err = instancecfg.FinishInstanceConfig(instanceConfig, environConfig)
c.Assert(err, jc.ErrorIsNil)
callback := func(settableStatus status.Status, info string, data map[string]interface{}) error { return nil }
inst, hardware, err := manager.CreateContainer(instanceConfig, "precise", network, nil, callback)
c.Assert(err, jc.ErrorIsNil)
c.Assert(hardware, gc.NotNil)
expected := fmt.Sprintf("arch=%s cpu-cores=1 mem=512M root-disk=8192M", arch.HostArch())
c.Assert(hardware.String(), gc.Equals, expected)
return inst
}
开发者ID:makyo,项目名称:juju,代码行数:26,代码来源:live_test.go
注:本文中的github.com/juju/version.MustParseBinary函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论