Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
v1.0版本,支持以下功能:
|
||||
1、项目中的各种基础功能;
|
||||
2、其中的managecenterMgr兼容旧版本的ManageCenter(2019-12-01之前)。
|
||||
3、新增日志记录功能(LogMgr 2020-03-09)
|
||||
4、新增监控功能(MonitorNewMgr 2020-03-09)
|
||||
5、新增短链功能(ShortUrlMgr 2020-03-09)
|
||||
|
||||
v2.0版本,支持以下功能:
|
||||
1、新的ManageCenter版本(2019-12-01之后)
|
||||
|
||||
v2.0.0.1
|
||||
LogMgr里面Log日志消息先进行base64编码之后再发送到mq,因为原消息有特殊符号,
|
||||
直接发送消息会导致消息返送之后,在腾讯mq收到消息之后数据会丢失,导致验签失败
|
||||
|
||||
v2.0.1.1
|
||||
新增屏蔽字处理forbidWordsMgr
|
||||
新增gameServerMgr
|
||||
@@ -0,0 +1,114 @@
|
||||
package coroutine_timer
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"goutil/mathUtil"
|
||||
"goutil/stringUtil"
|
||||
)
|
||||
|
||||
func init() {
|
||||
}
|
||||
|
||||
func Test_Method1(t *testing.T) {
|
||||
imap := make(map[int]struct{})
|
||||
var lockObj sync.Mutex
|
||||
|
||||
cb := func(obj interface{}) {
|
||||
i := obj.(int)
|
||||
|
||||
lockObj.Lock()
|
||||
defer lockObj.Unlock()
|
||||
|
||||
if _, exist := imap[i]; exist == false {
|
||||
t.Error(i, "应该删除,不应该回调 Test_Method1")
|
||||
}
|
||||
|
||||
delete(imap, i)
|
||||
}
|
||||
|
||||
for i := 0; i < 20000; i++ {
|
||||
tick := i % 20
|
||||
isdel := false
|
||||
if tick > 1 {
|
||||
isdel = mathUtil.GetRand().GetRandInt(100) < 50
|
||||
}
|
||||
if isdel == false {
|
||||
lockObj.Lock()
|
||||
imap[i] = struct{}{}
|
||||
lockObj.Unlock()
|
||||
}
|
||||
id := AddTimer(tick, cb, i)
|
||||
if isdel {
|
||||
DeleteTimer(id)
|
||||
}
|
||||
}
|
||||
|
||||
newN := 10000000
|
||||
newId := stringUtil.GetNewUUID()
|
||||
|
||||
lockObj.Lock()
|
||||
imap[newN] = struct{}{}
|
||||
lockObj.Unlock()
|
||||
|
||||
err := AddTimer4(newId, 3, cb, newN)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
err = AddTimer4(newId, 3, cb, newN)
|
||||
if err == nil {
|
||||
t.Error("未检测到重复id")
|
||||
}
|
||||
|
||||
for {
|
||||
if len(imap) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
t.Log("剩余回调次数:", len(imap))
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_Method2(t *testing.T) {
|
||||
imap := make(map[int64]struct{})
|
||||
var lockObj sync.Mutex
|
||||
|
||||
cb := func(obj interface{}) {
|
||||
i := obj.(int64)
|
||||
n := time.Now().Unix()
|
||||
x := n - i
|
||||
// 此处因为启动有暂停5s,所以启动后最近的执行偏差在5s内
|
||||
if x > 6 || x < -6 {
|
||||
t.Errorf("错误的时间执行了回调函数 tick:%v now:%v", i, n)
|
||||
}
|
||||
|
||||
lockObj.Lock()
|
||||
defer lockObj.Unlock()
|
||||
|
||||
if _, exist := imap[i]; exist == false {
|
||||
t.Error(i, "应该删除,不应该回调 Test_Method2")
|
||||
}
|
||||
|
||||
delete(imap, i)
|
||||
}
|
||||
|
||||
for i := 0; i < 20; i++ {
|
||||
tick := time.Now().Unix() + int64(i)
|
||||
imap[tick] = struct{}{}
|
||||
AddTimer3(tick, cb, tick)
|
||||
}
|
||||
|
||||
for {
|
||||
if len(imap) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
t.Log("剩余回调次数:", len(imap))
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user