Skip to content

Commit a833f33

Browse files
committed
init
1 parent 4c4bc14 commit a833f33

32 files changed

+1746
-67
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,5 @@
1515
# vendor/
1616

1717
*.iml
18+
19+
scouter/

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.15
44

55
require (
66
github.com/emirpasic/gods v1.12.0
7+
github.com/magiconair/properties v1.8.4
78
github.com/scouter-project/scouter-go-lib v0.0.0
89
)
910

go.sum

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1+
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
12
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
23
github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=
34
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
5+
github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY=
6+
github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
7+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
48
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
59
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
10+
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
611
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
12+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
713
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
14+
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
815
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

scouterx/agent.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,39 @@
11
package scouterx
22

33
import (
4+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/common"
5+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/conf"
6+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/netio"
7+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/strace"
8+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/task/agenttask"
9+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/task/countertask"
410
"sync"
511
)
612

13+
type objNameChangeObserver struct {}
14+
715
var agentOnce sync.Once
16+
var observer objNameChangeObserver
17+
18+
func (objNameChangeObserver) Run() {
19+
ac := conf.GetInstance()
20+
netio.SendObjName(ac.ObjName)
21+
}
22+
23+
func init() {
24+
Init()
25+
}
826

927
func Init() {
1028
agentOnce.Do(func() {
11-
//confDir := "./nil"
12-
//dir, err := os.Getwd()
13-
//if err == nil {
14-
// confDir = dir
15-
//}
16-
//UdpSender = udpsender.GetInstance()
29+
common.RegisterSendPanicF(netio.SendPanic)
30+
conf.GetInstance()
31+
strace.StartTracingMode()
32+
agenttask.SendObjPack()
33+
agenttask.Start()
34+
conf.AddObjChangedObserver(observer)
35+
countertask.Start()
1736
})
1837
}
1938

39+

scouterx/agent_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package scouterx
2+
3+
import (
4+
"context"
5+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/strace"
6+
"math/rand"
7+
"sync"
8+
"testing"
9+
"time"
10+
)
11+
12+
func TestScouterAgent(T *testing.T) {
13+
wg := sync.WaitGroup{}
14+
wg.Add(1)
15+
16+
Init()
17+
go loadTest()
18+
go loadTest()
19+
go loadTest()
20+
go loadTest()
21+
go loadTest()
22+
23+
wg.Wait()
24+
}
25+
26+
func loadTest() {
27+
for {
28+
randomSleeps()
29+
}
30+
}
31+
32+
33+
func randomSleeps() {
34+
ctx := context.Background()
35+
ctx = strace.StartService(ctx, "randomSleeps", "")
36+
defer strace.EndService(ctx)
37+
38+
randomSleep(ctx, 1500)
39+
strace.GoWithTrace(ctx, "myGoFunc()", func (cascadeGoCtx context.Context) {
40+
randomSleep(cascadeGoCtx, 500)
41+
})
42+
randomSleep(ctx, 800)
43+
}
44+
45+
46+
func randomSleep(ctx context.Context, ms int) {
47+
step := strace.StartMethod(ctx)
48+
defer strace.EndMethod(ctx, step)
49+
50+
rand := rand.Intn(ms)
51+
sleepFunc(ctx, rand)
52+
}
53+
54+
func sleepFunc(ctx context.Context, ms int) {
55+
step := strace.StartMethod(ctx)
56+
defer strace.EndMethod(ctx, step)
57+
58+
time.Sleep(time.Duration(ms) * time.Millisecond)
59+
}

scouterx/common/panic.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package common
2+
3+
import (
4+
"fmt"
5+
"github.com/scouter-contrib/scouter-agent-golang/scouterx/dump"
6+
)
7+
8+
var fSendPanic func(string)
9+
10+
func RegisterSendPanicF(f func(string)) {
11+
fSendPanic = f
12+
}
13+
14+
func ReportScouterPanic() {
15+
if r := recover(); r != nil {
16+
stackTrace := dump.StackTrace(100)
17+
fmt.Printf("[scouter][panic]%+v\n%s", r, stackTrace)
18+
fSendPanic(fmt.Sprintf("%+v - %s", r, stackTrace))
19+
}
20+
}
21+

scouterx/common/structure/cachemap/cachemap.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,20 @@ type CacheMap struct {
1515
maxSize int
1616
}
1717

18+
func (m *CacheMap) GetValues() []interface{} {
19+
l := make([]interface{}, 0, int(float32(len(m.table)) * 1.2))
20+
lock.RLock()
21+
defer lock.RUnlock()
22+
for _, v := range m.table {
23+
lock.RUnlock()
24+
if v != nil {
25+
l = append(l, v)
26+
}
27+
lock.RLock()
28+
}
29+
return l
30+
}
31+
1832
func New(maxSize int) *CacheMap {
1933
m := &CacheMap{
2034
table: make(map[interface{}]interface{}),

0 commit comments

Comments
 (0)