本文整理汇总了Golang中github.com/juju/utils/set.NewStrings函数的典型用法代码示例。如果您正苦于以下问题:Golang NewStrings函数的具体用法?Golang NewStrings怎么用?Golang NewStrings使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewStrings函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Validate
// Validate makes sure that any labels specifed in Storage or Interfaces
// are unique, and that the required specifications are valid.
func (a *AllocateMachineArgs) Validate() error {
storageLabels := set.NewStrings()
for _, spec := range a.Storage {
if err := spec.Validate(); err != nil {
return errors.Annotate(err, "Storage")
}
if spec.Label != "" {
if storageLabels.Contains(spec.Label) {
return errors.NotValidf("reusing storage label %q", spec.Label)
}
storageLabels.Add(spec.Label)
}
}
interfaceLabels := set.NewStrings()
for _, spec := range a.Interfaces {
if err := spec.Validate(); err != nil {
return errors.Annotate(err, "Interfaces")
}
if interfaceLabels.Contains(spec.Label) {
return errors.NotValidf("reusing interface label %q", spec.Label)
}
interfaceLabels.Add(spec.Label)
}
for _, v := range a.NotSpace {
if v == "" {
return errors.NotValidf("empty NotSpace constraint")
}
}
return nil
}
示例2: checkSameStrings
func (s *filesSuite) checkSameStrings(c *gc.C, actual, expected []string) {
sActual := set.NewStrings(actual...)
sExpected := set.NewStrings(expected...)
sActualOnly := sActual.Difference(sExpected)
sExpectedOnly := sExpected.Difference(sActual)
if !sActualOnly.IsEmpty() || !sExpectedOnly.IsEmpty() {
c.Error("strings mismatch")
onlyActual := sActualOnly.Values()
onlyExpected := sExpectedOnly.Values()
sort.Strings(onlyActual)
sort.Strings(onlyExpected)
if !sActualOnly.IsEmpty() {
c.Log("...unexpected values:")
for _, str := range onlyActual {
c.Log(" " + str)
}
}
if !sExpectedOnly.IsEmpty() {
c.Log("...missing values:")
for _, str := range onlyExpected {
c.Log(" " + str)
}
}
}
}
示例3: assertMachines
func (s *DeployLocalSuite) assertMachines(c *gc.C, service *state.Application, expectCons constraints.Value, expectIds ...string) {
units, err := service.AllUnits()
c.Assert(err, jc.ErrorIsNil)
c.Assert(units, gc.HasLen, len(expectIds))
// first manually tell state to assign all the units
for _, unit := range units {
id := unit.Tag().Id()
res, err := s.State.AssignStagedUnits([]string{id})
c.Assert(err, jc.ErrorIsNil)
c.Assert(res[0].Error, jc.ErrorIsNil)
c.Assert(res[0].Unit, gc.Equals, id)
}
// refresh the list of units from state
units, err = service.AllUnits()
c.Assert(err, jc.ErrorIsNil)
c.Assert(units, gc.HasLen, len(expectIds))
unseenIds := set.NewStrings(expectIds...)
for _, unit := range units {
id, err := unit.AssignedMachineId()
c.Assert(err, jc.ErrorIsNil)
unseenIds.Remove(id)
machine, err := s.State.Machine(id)
c.Assert(err, jc.ErrorIsNil)
cons, err := machine.Constraints()
c.Assert(err, jc.ErrorIsNil)
c.Assert(cons, gc.DeepEquals, expectCons)
}
c.Assert(unseenIds, gc.DeepEquals, set.NewStrings())
}
示例4: TestSSHHostKeyDocFields
func (s *MigrationSuite) TestSSHHostKeyDocFields(c *gc.C) {
ignored := set.NewStrings()
migrated := set.NewStrings(
"Keys",
)
s.AssertExportedFields(c, sshHostKeysDoc{}, migrated.Union(ignored))
}
示例5: TestBlockDeviceFields
func (s *MigrationSuite) TestBlockDeviceFields(c *gc.C) {
ignored := set.NewStrings(
"DocID",
"ModelUUID",
// We manage machine through containment.
"Machine",
)
migrated := set.NewStrings(
"BlockDevices",
)
s.AssertExportedFields(c, blockDevicesDoc{}, migrated.Union(ignored))
// The meat is in the type stored in "BlockDevices".
migrated = set.NewStrings(
"DeviceName",
"DeviceLinks",
"Label",
"UUID",
"HardwareId",
"BusAddress",
"Size",
"FilesystemType",
"InUse",
"MountPoint",
)
s.AssertExportedFields(c, BlockDeviceInfo{}, migrated)
}
示例6: AllProvisionedStateServersReady
// AllProvisionedStateServersReady returns true if and only if all state servers
// that have been started by the provisioner have called EnsureUpgradeInfo with
// matching versions.
//
// When this returns true the master state state server can begin it's
// own upgrade.
func (info *UpgradeInfo) AllProvisionedStateServersReady() (bool, error) {
// Get current state servers.
stateServerInfo, err := info.st.StateServerInfo()
if err != nil {
return false, errors.Annotate(err, "cannot read state servers")
}
// Extract current and provisioned state servers.
sel := bson.D{{
"_id", bson.D{{"$in", stateServerInfo.MachineIds}},
}}
instanceData, closer := info.st.getCollection(instanceDataC)
defer closer()
iter := instanceData.Find(sel).Select(bson.D{{"_id", 1}}).Iter()
var doc struct {
Id string `bson:"_id"`
}
provisionedMachineIds := set.NewStrings()
for iter.Next(&doc) {
provisionedMachineIds.Add(doc.Id)
}
if err := iter.Close(); err != nil {
return false, errors.Annotate(err, "cannot read provisioned machines")
}
// Find provisioned state machines that haven't indicated
// themselves as ready for upgrade.
missingMachineIds := provisionedMachineIds.Difference(
set.NewStrings(info.doc.StateServersReady...),
)
return missingMachineIds.IsEmpty(), nil
}
示例7: TestFacadeVersionsMatchServerVersions
func (s *facadeVersionSuite) TestFacadeVersionsMatchServerVersions(c *gc.C) {
// The client side code doesn't want to directly import the server side
// code just to list out what versions are available. However, we do
// want to make sure that the two sides are kept in sync.
clientFacadeNames := set.NewStrings()
for name, version := range *api.FacadeVersions {
clientFacadeNames.Add(name)
// All versions should now be non-zero.
c.Check(version, jc.GreaterThan, 0)
}
// Register the components.
all.RegisterForServer()
allServerFacades := common.Facades.List()
serverFacadeNames := set.NewStrings()
serverFacadeBestVersions := make(map[string]int, len(allServerFacades))
for _, facade := range allServerFacades {
serverFacadeNames.Add(facade.Name)
serverFacadeBestVersions[facade.Name] = facade.Versions[len(facade.Versions)-1]
}
// First check that both sides know about all the same versions
c.Check(serverFacadeNames.Difference(clientFacadeNames).SortedValues(), gc.HasLen, 0)
c.Check(clientFacadeNames.Difference(serverFacadeNames).SortedValues(), gc.HasLen, 0)
// Next check that the best versions match
c.Check(*api.FacadeVersions, jc.DeepEquals, serverFacadeBestVersions)
}
示例8: TestHelpCommands
func (s *MainSuite) TestHelpCommands(c *gc.C) {
// Check that we have correctly registered all the commands
// by checking the help output.
// First check default commands, and then check commands that are
// activated by feature flags.
// remove features behind dev_flag for the first test
// since they are not enabled.
cmdSet := set.NewStrings(commandNames...)
// 1. Default Commands. Disable all features.
setFeatureFlags("")
// Use sorted values here so we can better see what is wrong.
registered := getHelpCommandNames(c)
unknown := registered.Difference(cmdSet)
c.Assert(unknown, jc.DeepEquals, set.NewStrings())
missing := cmdSet.Difference(registered)
c.Assert(missing, jc.DeepEquals, set.NewStrings())
// 2. Enable development features, and test again.
cmdSet = cmdSet.Union(commandNamesBehindFlags)
setFeatureFlags(strings.Join(devFeatures, ","))
registered = getHelpCommandNames(c)
unknown = registered.Difference(cmdSet)
c.Assert(unknown, jc.DeepEquals, set.NewStrings())
missing = cmdSet.Difference(registered)
c.Assert(missing, jc.DeepEquals, set.NewStrings())
}
示例9: TestPrimaryOrLoopbackInterfacesAreSkipped
func (s *networkerSuite) TestPrimaryOrLoopbackInterfacesAreSkipped(c *gc.C) {
// Reset what's considered up, so we can test eth0 and lo are not
// touched.
s.upInterfaces = set.NewStrings()
s.interfacesWithAddress = set.NewStrings()
nw, _ := s.newCustomNetworker(c, s.apiFacade, s.stateMachine.Id(), true, false)
defer worker.Stop(nw)
timeout := time.After(coretesting.LongWait)
for {
select {
case <-s.lastCommands:
if !s.vlanModuleLoaded {
// VLAN module loading commands is one of the first things
// the worker does, so if hasn't happened, we wait a bit more.
continue
}
c.Assert(s.upInterfaces.Contains("lo"), jc.IsFalse)
c.Assert(s.upInterfaces.Contains("eth0"), jc.IsFalse)
if s.upInterfaces.Contains("eth1") {
// If we run ifup eth1, we successfully skipped lo and
// eth0.
s.assertHaveConfig(c, nw, "", "eth0", "eth1", "eth1.42", "eth0.69")
return
}
case <-timeout:
c.Fatalf("commands expected but not executed")
}
}
}
示例10: TestConvertSpaceName
func (s *workerSuite) TestConvertSpaceName(c *gc.C) {
empty := set.Strings{}
nameTests := []struct {
name string
existing set.Strings
expected string
}{
{"foo", empty, "foo"},
{"foo1", empty, "foo1"},
{"Foo Thing", empty, "foo-thing"},
{"foo^9*//++!!!!", empty, "foo9"},
{"--Foo", empty, "foo"},
{"---^^&*()!", empty, "empty"},
{" ", empty, "empty"},
{"", empty, "empty"},
{"foo\u2318", empty, "foo"},
{"foo--", empty, "foo"},
{"-foo--foo----bar-", empty, "foo-foo-bar"},
{"foo-", set.NewStrings("foo", "bar", "baz"), "foo-2"},
{"foo", set.NewStrings("foo", "foo-2"), "foo-3"},
{"---", set.NewStrings("empty"), "empty-2"},
}
for _, test := range nameTests {
result := discoverspaces.ConvertSpaceName(test.name, test.existing)
c.Check(result, gc.Equals, test.expected)
}
}
示例11: TestUnitDocFields
func (s *MigrationSuite) TestUnitDocFields(c *gc.C) {
ignored := set.NewStrings(
"ModelUUID",
"DocID",
"Life",
// Application is implicit in the migration structure through containment.
"Application",
// Resolved is not migrated as we check that all is good before we start.
"Resolved",
// Series and CharmURL also come from the service.
"Series",
"CharmURL",
"TxnRevno",
)
migrated := set.NewStrings(
"Name",
"Principal",
"Subordinates",
"StorageAttachmentCount",
"MachineId",
"Tools",
"PasswordHash",
)
s.AssertExportedFields(c, unitDoc{}, migrated.Union(ignored))
}
示例12: TestCloudImageMetadataDocFields
func (s *cloudImageMetadataSuite) TestCloudImageMetadataDocFields(c *gc.C) {
ignored := set.NewStrings("Id")
migrated := set.NewStrings(
"Stream",
"Region",
"Version",
"Series",
"Arch",
"VirtType",
"RootStorageType",
"RootStorageSize",
"Source",
"Priority",
"ImageId",
"DateCreated",
)
fields := migrated.Union(ignored)
expected := testing.GetExportedFields(imagesMetadataDoc{})
unknown := expected.Difference(fields)
removed := fields.Difference(expected)
// If this test fails, it means that extra fields have been added to the
// doc without thinking about the migration implications.
c.Check(unknown, gc.HasLen, 0)
c.Assert(removed, gc.HasLen, 0)
}
示例13: SetUpTest
func (s *configFunctionalSuite) SetUpTest(c *gc.C) {
s.configBaseSuite.SetUpTest(c)
s.client = newLocalClient(c)
origConfigDir := lxd.ConfigDir
s.AddCleanup(func(c *gc.C) {
lxd.ConfigDir = origConfigDir
})
if s.client != nil {
origCerts, err := s.client.ListCerts()
c.Assert(err, jc.ErrorIsNil)
s.AddCleanup(func(c *gc.C) {
certs, err := s.client.ListCerts()
c.Assert(err, jc.ErrorIsNil)
orig := set.NewStrings(origCerts...)
added := set.NewStrings(certs...).Difference(orig)
for _, fingerprint := range added.Values() {
err := s.client.RemoveCertByFingerprint(fingerprint)
if err != nil {
c.Logf("could not remove cert %q: %v", fingerprint, err)
}
}
})
}
}
示例14: TestFlagDependencies
func (s *ManifoldsSuite) TestFlagDependencies(c *gc.C) {
exclusions := set.NewStrings(
"agent",
"api-caller",
"api-config-watcher",
"clock",
"spaces-imported-gate",
"is-responsible-flag",
"not-alive-flag",
"not-dead-flag",
)
manifolds := model.Manifolds(model.ManifoldsConfig{
Agent: &mockAgent{},
})
for name, manifold := range manifolds {
c.Logf("checking %s", name)
if exclusions.Contains(name) {
continue
}
inputs := set.NewStrings(manifold.Inputs...)
if !inputs.Contains("is-responsible-flag") {
c.Check(inputs.Contains("migration-fortress"), jc.IsTrue)
c.Check(inputs.Contains("migration-inactive-flag"), jc.IsTrue)
}
}
}
示例15: TestRelationDocFields
func (s *MigrationSuite) TestRelationDocFields(c *gc.C) {
fields := set.NewStrings(
// DocID itself isn't migrated
"DocID",
// ModelUUID shouldn't be exported, and is inherited
// from the model definition.
"ModelUUID",
"Key",
"Id",
"Endpoints",
// Life isn't exported, only alive.
"Life",
// UnitCount isn't explicitly exported, but defined by the stored
// unit settings data for the relation endpoint.
"UnitCount",
)
s.AssertExportedFields(c, relationDoc{}, fields)
// We also need to check the Endpoint and nested charm.Relation field.
endpointFields := set.NewStrings("ServiceName", "Relation")
s.AssertExportedFields(c, Endpoint{}, endpointFields)
charmRelationFields := set.NewStrings(
"Name",
"Role",
"Interface",
"Optional",
"Limit",
"Scope",
)
s.AssertExportedFields(c, charm.Relation{}, charmRelationFields)
}