41 lines
520 B
Go
41 lines
520 B
Go
package balancequeue
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type A struct {
|
|
Name string
|
|
}
|
|
|
|
func (a *A) BalanceQueueHandler() {
|
|
|
|
}
|
|
|
|
func TestOne(t *testing.T) {
|
|
q := New(5)
|
|
|
|
var es []Element
|
|
go func() {
|
|
for {
|
|
q.Update()
|
|
fmt.Println(q)
|
|
time.Sleep(time.Second)
|
|
e := &A{Name: fmt.Sprint(time.Now().Unix())}
|
|
es = append(es, e)
|
|
q.Push(e)
|
|
if rand.Intn(10) > 5 && len(es) >= 2 {
|
|
for _, v := range es[:2] {
|
|
q.Pop(v)
|
|
}
|
|
es = es[2:]
|
|
}
|
|
}
|
|
}()
|
|
|
|
time.Sleep(time.Minute)
|
|
}
|