本文整理汇总了Golang中github.com/globocom/commandmocker.Add函数的典型用法代码示例。如果您正苦于以下问题:Golang Add函数的具体用法?Golang Add怎么用?Golang Add使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Add函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestProvisionerProvision
func (s *S) TestProvisionerProvision(c *gocheck.C) {
config.Set("local:authorized-key-path", "somepath")
rfs := &fstesting.RecordingFs{}
fsystem = rfs
defer func() {
fsystem = nil
}()
f, _ := os.Open("testdata/dnsmasq.leases")
data, err := ioutil.ReadAll(f)
c.Assert(err, gocheck.IsNil)
file, err := rfs.Create("/var/lib/misc/dnsmasq.leases")
c.Assert(err, gocheck.IsNil)
_, err = file.Write(data)
c.Assert(err, gocheck.IsNil)
tmpdir, err := commandmocker.Add("sudo", "$*")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
sshTempDir, err := commandmocker.Add("ssh", "$*")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(sshTempDir)
scpTempDir, err := commandmocker.Add("scp", "$*")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(scpTempDir)
var p LocalProvisioner
app := testing.NewFakeApp("myapp", "python", 0)
defer p.collection().Remove(bson.M{"name": "myapp"})
c.Assert(p.Provision(app), gocheck.IsNil)
ok := make(chan bool, 1)
go func() {
for {
coll := s.conn.Collection(s.collName)
ct, err := coll.Find(bson.M{"name": "myapp", "status": provision.StatusStarted}).Count()
if err != nil {
c.Fatal(err)
}
if ct > 0 {
ok <- true
return
}
time.Sleep(1e3)
}
}()
select {
case <-ok:
case <-time.After(10e9):
c.Fatal("Timed out waiting for the container to be provisioned (10 seconds)")
}
c.Assert(commandmocker.Ran(tmpdir), gocheck.Equals, true)
expected := "lxc-create -t ubuntu -n myapp -- -S somepath"
expected += "lxc-start --daemon -n myapp"
expected += "service nginx restart"
c.Assert(commandmocker.Output(tmpdir), gocheck.Equals, expected)
var unit provision.Unit
err = s.conn.Collection(s.collName).Find(bson.M{"name": "myapp"}).One(&unit)
c.Assert(err, gocheck.IsNil)
c.Assert(unit.Ip, gocheck.Equals, "10.10.10.15")
}
示例2: TestRemoveUnitWithELB
func (s *ELBSuite) TestRemoveUnitWithELB(c *gocheck.C) {
instIds := make([]string, 4)
units := make([]provision.Unit, len(instIds))
for i := 0; i < len(instIds); i++ {
id := s.server.NewInstance()
defer s.server.RemoveInstance(id)
instIds[i] = id
units[i] = provision.Unit{
Name: "radio/" + strconv.Itoa(i),
InstanceId: id,
}
}
tmpdir, err := commandmocker.Add("juju", "unit removed")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
app := testing.NewFakeApp("radio", "rush", 4)
manager := ELBManager{}
manager.e = s.client
err = manager.Create(app)
c.Assert(err, gocheck.IsNil)
defer manager.Destroy(app)
err = manager.Register(app, units...)
c.Assert(err, gocheck.IsNil)
p := JujuProvisioner{}
fUnit := testing.FakeUnit{Name: units[0].Name, InstanceId: units[0].InstanceId}
err = p.removeUnit(app, &fUnit)
c.Assert(err, gocheck.IsNil)
resp, err := s.client.DescribeLoadBalancers(app.GetName())
c.Assert(err, gocheck.IsNil)
c.Assert(resp.LoadBalancerDescriptions, gocheck.HasLen, 1)
c.Assert(resp.LoadBalancerDescriptions[0].Instances, gocheck.HasLen, len(units)-1)
instance := resp.LoadBalancerDescriptions[0].Instances[0]
c.Assert(instance.InstanceId, gocheck.Equals, instIds[1])
}
示例3: TestDestroyWithELB
func (s *ELBSuite) TestDestroyWithELB(c *gocheck.C) {
config.Set("juju:charms-path", "/home/charms")
defer config.Unset("juju:charms-path")
tmpdir, err := commandmocker.Add("juju", "deployed")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
app := testing.NewFakeApp("jimmy", "who", 0)
p := JujuProvisioner{}
err = p.Provision(app)
c.Assert(err, gocheck.IsNil)
err = p.Destroy(app)
c.Assert(err, gocheck.IsNil)
lb := p.LoadBalancer()
defer lb.Destroy(app) // sanity
addr, err := lb.Addr(app)
c.Assert(addr, gocheck.Equals, "")
c.Assert(err, gocheck.NotNil)
c.Assert(err.Error(), gocheck.Equals, "not found")
q := getQueue(queueName)
msg, err := q.Get(1e9)
c.Assert(err, gocheck.IsNil)
if msg.Action == addUnitToLoadBalancer && msg.Args[0] == "jimmy" {
msg.Delete()
} else {
q.Release(msg, 0)
}
}
示例4: TestHandleMessagesWithPendingUnits
func (s *ELBSuite) TestHandleMessagesWithPendingUnits(c *gocheck.C) {
id := s.server.NewInstance()
defer s.server.RemoveInstance(id)
app := testing.NewFakeApp("2112", "python", 1)
router, err := Router()
c.Assert(err, gocheck.IsNil)
err = router.AddBackend(app.GetName())
defer router.RemoveBackend(app.GetName())
output := strings.Replace(collectOutputNoInstanceID, "i-00004444", id, 1)
tmpdir, err := commandmocker.Add("juju", output)
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
handle(&queue.Message{
Action: addUnitToLoadBalancer,
Args: []string{"2112", "2112/0", "2112/1"},
})
resp, err := s.client.DescribeLoadBalancers(app.GetName())
c.Assert(err, gocheck.IsNil)
c.Assert(resp.LoadBalancerDescriptions, gocheck.HasLen, 1)
instances := resp.LoadBalancerDescriptions[0].Instances
c.Assert(instances, gocheck.HasLen, 1)
c.Assert(instances[0].InstanceId, gocheck.Equals, id)
msg, err := getQueue(queueName).Get(5e9)
c.Assert(err, gocheck.IsNil)
c.Assert(msg.Action, gocheck.Equals, addUnitToLoadBalancer)
c.Assert(msg.Args, gocheck.DeepEquals, []string{"2112", "2112/1"})
}
示例5: TestRemoveUnit
func (s *S) TestRemoveUnit(c *gocheck.C) {
tmpdir, err := commandmocker.Add("juju", "removed")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
app := testing.NewFakeApp("two", "rush", 3)
p := JujuProvisioner{}
conn, collection := p.unitsCollection()
defer conn.Close()
err = collection.Insert(instance{UnitName: "two/2", InstanceId: "i-00000439"})
c.Assert(err, gocheck.IsNil)
err = p.RemoveUnit(app, "two/2")
c.Assert(err, gocheck.IsNil)
c.Assert(commandmocker.Ran(tmpdir), gocheck.Equals, true)
expected := []string{"remove-unit", "two/2", "terminate-machine", "3"}
ran := make(chan bool, 1)
go func() {
for {
if reflect.DeepEqual(commandmocker.Parameters(tmpdir), expected) {
ran <- true
}
time.Sleep(1e3)
}
}()
n, err := collection.Find(bson.M{"_id": "two/2"}).Count()
c.Assert(err, gocheck.IsNil)
c.Assert(n, gocheck.Equals, 0)
select {
case <-ran:
case <-time.After(2e9):
c.Errorf("Did not run terminate-machine command after 2 seconds.")
}
}
示例6: TestAddRoute
func (s *S) TestAddRoute(c *gocheck.C) {
tmpdir, err := commandmocker.Add("sudo", "$*")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
config.Set("nginx:domain", "andrewzito.com")
config.Set("nginx:routes-path", "testdata")
rfs := &testing.RecordingFs{}
fsystem = rfs
defer func() {
fsystem = nil
}()
var r NginxRouter
err = r.AddRoute("name", "127.0.0.1")
c.Assert(err, gocheck.IsNil)
file, err := rfs.Open("testdata/name")
c.Assert(err, gocheck.IsNil)
data, err := ioutil.ReadAll(file)
c.Assert(err, gocheck.IsNil)
expected := `server {
listen 80;
server_name name.andrewzito.com;
location / {
proxy_pass http://127.0.0.1;
}
}`
c.Assert(string(data), gocheck.Equals, expected)
c.Assert(commandmocker.Ran(tmpdir), gocheck.Equals, true)
expected = "service nginx restart"
c.Assert(commandmocker.Output(tmpdir), gocheck.Equals, expected)
}
示例7: TestCollectStatusIDChangeDisabledELB
func (s *S) TestCollectStatusIDChangeDisabledELB(c *gocheck.C) {
tmpdir, err := commandmocker.Add("juju", collectOutput)
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
p := JujuProvisioner{}
conn, collection := p.unitsCollection()
defer conn.Close()
err = collection.Insert(instance{UnitName: "as_i_rise/0", InstanceId: "i-00000239"})
c.Assert(err, gocheck.IsNil)
defer collection.Remove(bson.M{"_id": bson.M{"$in": []string{"as_i_rise/0", "the_infanta/0"}}})
_, err = p.CollectStatus()
c.Assert(err, gocheck.IsNil)
done := make(chan int8)
go func() {
for {
q := bson.M{"_id": "as_i_rise/0", "instanceid": "i-00000439"}
ct, err := collection.Find(q).Count()
c.Assert(err, gocheck.IsNil)
if ct == 1 {
done <- 1
return
}
time.Sleep(1e3)
}
}()
select {
case <-done:
case <-time.After(5e9):
c.Fatal("Did not update the unit after 5 seconds.")
}
}
示例8: TestGrantAccessShouldAddUserToListOfRepositories
func (s *S) TestGrantAccessShouldAddUserToListOfRepositories(c *C) {
tmpdir, err := commandmocker.Add("git", "$*")
c.Assert(err, IsNil)
defer commandmocker.Remove(tmpdir)
r, err := New("proj1", []string{"someuser"}, true)
c.Assert(err, IsNil)
defer db.Session.Repository().RemoveId(r.Name)
r2, err := New("proj2", []string{"otheruser"}, true)
c.Assert(err, IsNil)
defer db.Session.Repository().RemoveId(r2.Name)
u := struct {
Name string `bson:"_id"`
}{Name: "lolcat"}
err = db.Session.User().Insert(&u)
c.Assert(err, IsNil)
defer db.Session.User().RemoveId(u.Name)
err = GrantAccess([]string{r.Name, r2.Name}, []string{u.Name})
c.Assert(err, IsNil)
err = db.Session.Repository().FindId(r.Name).One(&r)
c.Assert(err, IsNil)
err = db.Session.Repository().FindId(r2.Name).One(&r2)
c.Assert(err, IsNil)
c.Assert(r.Users, DeepEquals, []string{"someuser", u.Name})
c.Assert(r2.Users, DeepEquals, []string{"otheruser", u.Name})
}
示例9: TestCollectStatusDirtyOutput
func (s *S) TestCollectStatusDirtyOutput(c *C) {
tmpdir, err := commandmocker.Add("juju", dirtyCollectOutput)
c.Assert(err, IsNil)
defer commandmocker.Remove(tmpdir)
expected := []provision.Unit{
{
Name: "as_i_rise/0",
AppName: "as_i_rise",
Type: "django",
Machine: 105,
Ip: "10.10.10.163",
Status: provision.StatusStarted,
},
{
Name: "the_infanta/1",
AppName: "the_infanta",
Type: "gunicorn",
Machine: 107,
Ip: "10.10.10.168",
Status: provision.StatusInstalling,
},
}
p := JujuProvisioner{}
units, err := p.CollectStatus()
c.Assert(err, IsNil)
if units[0].Type == "gunicorn" {
units[0], units[1] = units[1], units[0]
}
c.Assert(units, DeepEquals, expected)
c.Assert(commandmocker.Ran(tmpdir), Equals, true)
}
示例10: TestDestroy
func (s *S) TestDestroy(c *C) {
tmpdir, err := commandmocker.Add("juju", "$*")
c.Assert(err, IsNil)
defer commandmocker.Remove(tmpdir)
app := NewFakeApp("cribcaged", "python", 3)
p := JujuProvisioner{}
err = p.Destroy(app)
c.Assert(err, IsNil)
c.Assert(commandmocker.Ran(tmpdir), Equals, true)
expected := []string{
"destroy-service", "cribcaged",
"terminate-machine", "1",
"terminate-machine", "2",
"terminate-machine", "3",
}
ran := make(chan bool, 1)
go func() {
for {
if reflect.DeepEqual(commandmocker.Parameters(tmpdir), expected) {
ran <- true
}
}
}()
select {
case <-ran:
case <-time.After(2e9):
c.Errorf("Did not run terminate-machine commands after 2 seconds.")
}
c.Assert(commandmocker.Parameters(tmpdir), DeepEquals, expected)
}
示例11: TestBootstrapProvisionHealerHeal
func (s *S) TestBootstrapProvisionHealerHeal(c *gocheck.C) {
p := JujuProvisioner{}
m := machine{
AgentState: "not-started",
IpAddress: "localhost",
InstanceId: "i-00000376",
InstanceState: "running",
}
p.saveBootstrapMachine(m)
conn, collection := p.bootstrapCollection()
defer conn.Close()
defer collection.Remove(m)
sshTmpdir, err := commandmocker.Add("ssh", "$*")
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(sshTmpdir)
sshOutput := []string{
"-o",
"StrictHostKeyChecking no",
"-q",
"-l",
"ubuntu",
"localhost",
"sudo",
"start",
"juju-provision-agent",
}
h := bootstrapProvisionHealer{}
err = h.Heal()
c.Assert(err, gocheck.IsNil)
c.Assert(commandmocker.Ran(sshTmpdir), gocheck.Equals, true)
c.Assert(commandmocker.Parameters(sshTmpdir), gocheck.DeepEquals, sshOutput)
}
示例12: TestExecuteCommandUnitDown
func (s *S) TestExecuteCommandUnitDown(c *C) {
var buf bytes.Buffer
tmpdir, err := commandmocker.Add("juju", "$*")
c.Assert(err, IsNil)
defer commandmocker.Remove(tmpdir)
app := NewFakeApp("almah", "static", 3)
app.units[1].(*FakeUnit).status = provision.StatusDown
p := JujuProvisioner{}
err = p.ExecuteCommand(&buf, &buf, app, "ls", "-lha")
c.Assert(err, IsNil)
cmdOutput := "ssh -o StrictHostKeyChecking no -q 1 ls -lha"
cmdOutput += "ssh -o StrictHostKeyChecking no -q 3 ls -lha"
bufOutput := `Output from unit "almah/0":
ssh -o StrictHostKeyChecking no -q 1 ls -lha
Output from unit "almah/1":
Unit state is "down", it must be "started" for running commands.
Output from unit "almah/2":
ssh -o StrictHostKeyChecking no -q 3 ls -lha
`
c.Assert(commandmocker.Ran(tmpdir), Equals, true)
c.Assert(commandmocker.Output(tmpdir), Equals, cmdOutput)
c.Assert(buf.String(), Equals, bufOutput)
}
示例13: TestBootstrapMachineHealerDontNeedsHeal
func (s *S) TestBootstrapMachineHealerDontNeedsHeal(c *gocheck.C) {
tmpdir, err := commandmocker.Add("juju", collectOutput)
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
h := bootstrapMachineHealer{}
c.Assert(h.needsHeal(), gocheck.Equals, false)
}
示例14: TestRemoveUnits
func (s *S) TestRemoveUnits(c *C) {
tmpdir, err := commandmocker.Add("juju", "removed")
c.Assert(err, IsNil)
defer commandmocker.Remove(tmpdir)
app := NewFakeApp("xanadu", "rush", 4)
p := JujuProvisioner{}
units, err := p.RemoveUnits(app, 3)
c.Assert(err, IsNil)
expected := []string{
"remove-unit", "xanadu/0", "xanadu/1", "xanadu/2",
"terminate-machine", "1",
"terminate-machine", "2",
"terminate-machine", "3",
}
ran := make(chan bool, 1)
go func() {
for {
if reflect.DeepEqual(commandmocker.Parameters(tmpdir), expected) {
ran <- true
}
}
}()
select {
case <-ran:
case <-time.After(2e9):
params := commandmocker.Parameters(tmpdir)
c.Fatalf("Did not run terminate-machine commands after 2 seconds. Parameters: %#v", params)
}
c.Assert(units, DeepEquals, []int{0, 1, 2})
}
示例15: TestHandleMessageWithoutUnits
func (s *ELBSuite) TestHandleMessageWithoutUnits(c *gocheck.C) {
instIds := make([]string, 3)
for i := 0; i < len(instIds); i++ {
id := s.server.NewInstance()
defer s.server.RemoveInstance(id)
instIds[i] = id
}
replace := []string{"i-00004444", "i-00004445", "i-00004450"}
output := simpleCollectOutput
for i, r := range replace {
output = strings.Replace(output, r, instIds[i], 1)
}
tmpdir, err := commandmocker.Add("juju", output)
c.Assert(err, gocheck.IsNil)
defer commandmocker.Remove(tmpdir)
app := testing.NewFakeApp("symfonia", "python", 1)
router, err := Router()
c.Assert(err, gocheck.IsNil)
err = router.AddBackend(app.GetName())
c.Assert(err, gocheck.IsNil)
defer router.RemoveBackend(app.GetName())
handle(&queue.Message{
Action: addUnitToLoadBalancer,
Args: []string{"symfonia"},
})
resp, err := s.client.DescribeLoadBalancers(app.GetName())
c.Assert(err, gocheck.IsNil)
c.Assert(resp.LoadBalancerDescriptions, gocheck.HasLen, 1)
instances := resp.LoadBalancerDescriptions[0].Instances
c.Assert(instances, gocheck.HasLen, 3)
ids := []string{instances[0].InstanceId, instances[1].InstanceId, instances[2].InstanceId}
sort.Strings(ids)
sort.Strings(instIds)
c.Assert(ids, gocheck.DeepEquals, instIds)
}