本文整理汇总了Golang中testing.T.handleAddPlugin方法的典型用法代码示例。如果您正苦于以下问题:Golang T.handleAddPlugin方法的具体用法?Golang T.handleAddPlugin怎么用?Golang T.handleAddPlugin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类testing.T
的用法示例。
在下文中一共展示了T.handleAddPlugin方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestTribePluginAgreement
//.........这里部分代码省略.........
return
}
time.Sleep(50 * time.Millisecond)
log.Debugf("%v has %v of %v plugins and %d intents\n", tr.memberlist.LocalNode().Name, len(clan.PluginAgreement.Plugins), numAddMessages, len(tr.intentBuffer))
}
}
}(tr)
}
log.Debugf("Waits for %d members of clan1 to have %d plugins\n", numOfTribes, numAddMessages)
wg.Wait()
for i := 0; i < numOfTribes; i++ {
So(len(tribes[i].agreements["clan1"].PluginAgreement.Plugins), ShouldEqual, numAddMessages)
logger.Debugf("%v has %v intents\n", tribes[i].memberlist.LocalNode().Name, len(tribes[i].intentBuffer))
So(len(tribes[i].intentBuffer), ShouldEqual, 0)
for k, v := range tribes[i].intentBuffer {
logger.Debugf("\tadd intent %v %v\n", k, v)
}
}
Convey("Handles duplicate 'add plugin' messages", func() {
t := tribes[rand.Intn(numOfTribes)]
msg := &pluginMsg{
Plugin: agreement.Plugin{
Name_: "pluginABC",
Version_: 1,
},
UUID: uuid.New(),
AgreementName: "clan1",
LTime: t.clock.Time(),
Type: addPluginMsgType,
}
So(len(t.intentBuffer), ShouldEqual, 0)
t.handleAddPlugin(msg)
before := len(t.agreements["clan1"].PluginAgreement.Plugins)
t.handleAddPlugin(msg)
after := len(t.agreements["clan1"].PluginAgreement.Plugins)
So(before, ShouldEqual, after)
Convey("Handles out-of-order 'add plugin' messages", func() {
msg := &pluginMsg{
Plugin: agreement.Plugin{
Name_: "pluginABC",
Version_: 1,
},
UUID: uuid.New(),
AgreementName: "clan1",
LTime: t.clock.Time(),
Type: addPluginMsgType,
}
t.handleAddPlugin(msg)
So(len(t.intentBuffer), ShouldEqual, 1)
Convey("Handles duplicate out-of-order 'add plugin' messages", func() {
before := len(t.agreements["clan1"].PluginAgreement.Plugins)
t.handleAddPlugin(msg)
after := len(t.agreements["clan1"].PluginAgreement.Plugins)
So(before, ShouldEqual, after)
So(len(t.intentBuffer), ShouldEqual, 1)
So(len(t.agreements["clan1"].PluginAgreement.Plugins), ShouldBeGreaterThan, numAddMessages)
t.handleRemovePlugin(&pluginMsg{
LTime: t.clock.Time(),
Plugin: agreement.Plugin{Name_: "pluginABC", Version_: 1},
AgreementName: "clan1",
Type: removePluginMsgType,
})
示例2: TestTribeAgreements
func TestTribeAgreements(t *testing.T) {
numOfTribes := 5
tribes := getTribes(numOfTribes, nil)
Convey(fmt.Sprintf("%d tribes are started", numOfTribes), t, func() {
for i := 0; i < numOfTribes; i++ {
log.Debugf("%v is reporting %v members", i, len(tribes[i].memberlist.Members()))
So(len(tribes[0].memberlist.Members()), ShouldEqual, len(tribes[i].memberlist.Members()))
}
Convey("The cluster agrees on membership", func() {
for i := 0; i < numOfTribes; i++ {
So(
len(tribes[0].memberlist.Members()),
ShouldEqual,
len(tribes[i].memberlist.Members()),
)
So(len(tribes[0].members), ShouldEqual, len(tribes[i].members))
}
Convey("A member handles", func() {
agreementName := "agreement1"
t := tribes[0]
t2 := tribes[1]
Convey("an out-of-order join agreement message", func() {
msg := &agreementMsg{
LTime: t.clock.Increment(),
UUID: uuid.New(),
AgreementName: agreementName,
MemberName: t.memberlist.LocalNode().Name,
Type: joinAgreementMsgType,
}
msg2 := &agreementMsg{
LTime: t.clock.Increment(),
UUID: uuid.New(),
AgreementName: agreementName,
MemberName: t2.memberlist.LocalNode().Name,
Type: joinAgreementMsgType,
}
b := t.handleJoinAgreement(msg)
So(b, ShouldEqual, true)
So(len(t.intentBuffer), ShouldEqual, 1)
t.broadcast(joinAgreementMsgType, msg, nil)
timer := time.After(2 * time.Second)
loop1:
for {
select {
case <-timer:
So("Timed out", ShouldEqual, "")
default:
if len(t2.intentBuffer) > 0 {
break loop1
}
}
}
So(len(t2.intentBuffer), ShouldEqual, 1)
b = t.handleJoinAgreement(msg2)
So(b, ShouldEqual, true)
So(len(t.intentBuffer), ShouldEqual, 2)
t.broadcast(joinAgreementMsgType, msg2, nil)
timer = time.After(2 * time.Second)
loop2:
for {
select {
case <-timer:
So("Timed out", ShouldEqual, "")
default:
if len(t2.intentBuffer) == 2 {
break loop2
}
}
}
So(len(t2.intentBuffer), ShouldEqual, 2)
Convey("an out-of-order add plugin message", func() {
plugin := agreement.Plugin{Name_: "plugin1", Version_: 1}
msg := &pluginMsg{
LTime: t.clock.Increment(),
UUID: uuid.New(),
Plugin: plugin,
AgreementName: agreementName,
Type: addPluginMsgType,
}
b := t.handleAddPlugin(msg)
So(b, ShouldEqual, true)
So(len(t.intentBuffer), ShouldEqual, 3)
t.broadcast(addPluginMsgType, msg, nil)
Convey("an add agreement", func() {
err := t.AddAgreement(agreementName)
So(err, ShouldBeNil)
err = t.AddAgreement(agreementName)
So(err.Error(), ShouldResemble, errAgreementAlreadyExists.Error())
var wg sync.WaitGroup
for _, t := range tribes {
wg.Add(1)
go func(t *tribe) {
defer wg.Done()
//.........这里部分代码省略.........