122 lines
1.8 KiB
Go
122 lines
1.8 KiB
Go
package comet
|
|
|
|
import (
|
|
"strconv"
|
|
"sync/atomic"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestGroup_Put(t *testing.T) {
|
|
//one channel
|
|
var gid int32 = 0
|
|
ch := NewChannel(10, 10)
|
|
//one groups
|
|
{
|
|
g := NewGroup(strconv.Itoa(int(atomic.AddInt32(&gid, 1))))
|
|
for i := 0; i < 10; i++ {
|
|
go func() {
|
|
for {
|
|
err := g.Put(ch)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
}()
|
|
}
|
|
}
|
|
|
|
//many groups
|
|
{
|
|
for i := 0; i < 10; i++ {
|
|
g := NewGroup(strconv.Itoa(int(atomic.AddInt32(&gid, 1))))
|
|
go func() {
|
|
for {
|
|
err := g.Put(ch)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
}()
|
|
}
|
|
}
|
|
|
|
time.Sleep(10 * time.Second)
|
|
}
|
|
|
|
func TestGroup_Del(t *testing.T) {
|
|
//one channel
|
|
var gid int32 = 0
|
|
//var lc sync.RWMutex
|
|
var groups = make(map[int32]*Group)
|
|
ch := NewChannel(10, 10)
|
|
//init
|
|
for i := 0; i < 10; i++ {
|
|
g := NewGroup(strconv.Itoa(int(atomic.AddInt32(&gid, 1))))
|
|
groups[gid] = g
|
|
}
|
|
gid = 0
|
|
|
|
go func() {
|
|
for _, g := range groups {
|
|
err := g.Put(ch)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
}()
|
|
|
|
go func() {
|
|
for _, g := range groups {
|
|
g.Del(ch)
|
|
}
|
|
}()
|
|
time.Sleep(10 * time.Second)
|
|
}
|
|
|
|
func TestGroup_Del2(t *testing.T) {
|
|
//one channel
|
|
var gid int32 = 0
|
|
//var lc sync.RWMutex
|
|
var groups = make(map[int32]*Group)
|
|
ch := NewChannel(10, 10)
|
|
//init
|
|
for i := 0; i < 10; i++ {
|
|
g := NewGroup(strconv.Itoa(int(atomic.AddInt32(&gid, 1))))
|
|
groups[gid] = g
|
|
}
|
|
gid = 0
|
|
|
|
go func() {
|
|
for _, g := range groups {
|
|
err := g.Put(ch)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
}()
|
|
|
|
go func() {
|
|
for _, g := range groups {
|
|
g.Del(ch)
|
|
}
|
|
}()
|
|
time.Sleep(10 * time.Second)
|
|
}
|
|
|
|
func convertAddress(addr string) string {
|
|
if len(addr) == 0 {
|
|
return addr
|
|
}
|
|
switch addr[0] {
|
|
case 'g':
|
|
return addr[7:]
|
|
default:
|
|
return addr
|
|
}
|
|
}
|
|
|
|
func Test_convertAddress(t *testing.T) {
|
|
t.Log(convertAddress("grpc://172.16.101.107:3109"))
|
|
}
|