Skip to content

Commit a3dfbf5

Browse files
Blaxonhang.xiang
andauthored
Append Goc suffix in injected funtion name, to avoid declaration conflict in main pkg. (#326)
* To avoid main pkg declaration conflict, append `goc` suffix in every injected funtion name * fix test failure --------- Co-authored-by: hang.xiang <hang.xiang@shopee.com>
1 parent 5868a3e commit a3dfbf5

File tree

2 files changed

+91
-91
lines changed

2 files changed

+91
-91
lines changed

pkg/cover/instrument.go

Lines changed: 90 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -66,29 +66,29 @@ import (
6666
)
6767
6868
func init() {
69-
go registerHandlers()
69+
go registerHandlersGoc()
7070
}
7171
72-
func loadValues() (map[string][]uint32, map[string][]testing.CoverBlock) {
72+
func loadValuesGoc() (map[string][]uint32, map[string][]testing.CoverBlock) {
7373
var (
7474
coverCounters = make(map[string][]uint32)
7575
coverBlocks = make(map[string][]testing.CoverBlock)
7676
)
7777
7878
{{range $i, $pkgCover := .DepsCover}}
7979
{{range $file, $cover := $pkgCover.Vars}}
80-
loadFileCover(coverCounters, coverBlocks, {{printf "%q" $cover.File}}, _cover.{{$cover.Var}}.Count[:], _cover.{{$cover.Var}}.Pos[:], _cover.{{$cover.Var}}.NumStmt[:])
80+
loadFileCoverGoc(coverCounters, coverBlocks, {{printf "%q" $cover.File}}, _cover.{{$cover.Var}}.Count[:], _cover.{{$cover.Var}}.Pos[:], _cover.{{$cover.Var}}.NumStmt[:])
8181
{{end}}
8282
{{end}}
8383
8484
{{range $file, $cover := .MainPkgCover.Vars}}
85-
loadFileCover(coverCounters, coverBlocks, {{printf "%q" $cover.File}}, _cover.{{$cover.Var}}.Count[:], _cover.{{$cover.Var}}.Pos[:], _cover.{{$cover.Var}}.NumStmt[:])
85+
loadFileCoverGoc(coverCounters, coverBlocks, {{printf "%q" $cover.File}}, _cover.{{$cover.Var}}.Count[:], _cover.{{$cover.Var}}.Pos[:], _cover.{{$cover.Var}}.NumStmt[:])
8686
{{end}}
8787
8888
return coverCounters, coverBlocks
8989
}
9090
91-
func loadFileCover(coverCounters map[string][]uint32, coverBlocks map[string][]testing.CoverBlock, fileName string, counter []uint32, pos []uint32, numStmts []uint16) {
91+
func loadFileCoverGoc(coverCounters map[string][]uint32, coverBlocks map[string][]testing.CoverBlock, fileName string, counter []uint32, pos []uint32, numStmts []uint16) {
9292
if 3*len(counter) != len(pos) || len(counter) != len(numStmts) {
9393
panic("coverage: mismatched sizes")
9494
}
@@ -110,38 +110,38 @@ func loadFileCover(coverCounters map[string][]uint32, coverBlocks map[string][]t
110110
coverBlocks[fileName] = block
111111
}
112112
113-
func clearValues() {
113+
func clearValuesGoc() {
114114
115115
{{range $i, $pkgCover := .DepsCover}}
116116
{{range $file, $cover := $pkgCover.Vars}}
117-
clearFileCover(_cover.{{$cover.Var}}.Count[:])
117+
clearFileCoverGoc(_cover.{{$cover.Var}}.Count[:])
118118
{{end}}
119119
{{end}}
120120
121121
{{range $file, $cover := .MainPkgCover.Vars}}
122-
clearFileCover(_cover.{{$cover.Var}}.Count[:])
122+
clearFileCoverGoc(_cover.{{$cover.Var}}.Count[:])
123123
{{end}}
124124
125125
}
126126
127-
func clearFileCover(counter []uint32) {
127+
func clearFileCoverGoc(counter []uint32) {
128128
for i := range counter {
129129
counter[i] = 0
130130
}
131131
}
132132
133-
func registerHandlers() {
133+
func registerHandlersGoc() {
134134
{{if .Singleton}}
135-
ln, _, err := listen()
135+
ln, _, err := listenGoc()
136136
{{else}}
137-
ln, host, err := listen()
137+
ln, host, err := listenGoc()
138138
{{end}}
139139
if err != nil {
140-
_log.Fatalf("listen failed, err:%v", err)
140+
_log.Fatalf("listenGoc failed, err:%v", err)
141141
}
142142
{{if not .Singleton}}
143143
profileAddr := "http://" + host
144-
if resp, err := registerSelf(profileAddr); err != nil {
144+
if resp, err := registerSelfGoc(profileAddr); err != nil {
145145
_log.Fatalf("register address %v failed, err: %v, response: %v", profileAddr, err, string(resp))
146146
}
147147
@@ -151,23 +151,23 @@ func registerHandlers() {
151151
profileAddrs []string
152152
addresses []string
153153
)
154-
if addresses, err = getAllHosts(ln); err != nil {
155-
_log.Fatalf("get all host failed, err: %v", err)
156-
return
154+
if addresses, err = getAllHostsGoc(ln); err != nil {
155+
_log.Fatalf("get all host failed, err: %v", err)
156+
return
157157
}
158158
for _, addr := range addresses {
159-
profileAddrs = append(profileAddrs, "http://"+addr)
159+
profileAddrs = append(profileAddrs, "http://"+addr)
160160
}
161-
deregisterSelf(profileAddrs)
161+
deregisterSelfGoc(profileAddrs)
162162
}
163-
go watchSignal(fn)
163+
go watchSignalGoc(fn)
164164
{{end}}
165165
166166
mux := http.NewServeMux()
167167
// Coverage reports the current code coverage as a fraction in the range [0, 1].
168168
// If coverage is not enabled, Coverage returns 0.
169169
mux.HandleFunc("/v1/cover/coverage", func(w http.ResponseWriter, r *http.Request) {
170-
counters, _ := loadValues()
170+
counters, _ := loadValuesGoc()
171171
var n, d int64
172172
for _, counter := range counters {
173173
for i := range counter {
@@ -187,7 +187,7 @@ func registerHandlers() {
187187
// coverprofile reports a coverage profile with the coverage percentage
188188
mux.HandleFunc("/v1/cover/profile", func(w http.ResponseWriter, r *http.Request) {
189189
fmt.Fprint(w, "mode: {{.Mode}}\n")
190-
counters, blocks := loadValues()
190+
counters, blocks := loadValuesGoc()
191191
var active, total int64
192192
var count uint32
193193
for name, counts := range counters {
@@ -213,15 +213,15 @@ func registerHandlers() {
213213
})
214214
215215
mux.HandleFunc("/v1/cover/clear", func(w http.ResponseWriter, r *http.Request) {
216-
clearValues()
216+
clearValuesGoc()
217217
w.WriteHeader(http.StatusOK)
218218
fmt.Fprintln(w, "clear call successfully")
219219
})
220220
221221
_log.Fatal(http.Serve(ln, mux))
222222
}
223223
224-
func registerSelf(address string) ([]byte, error) {
224+
func registerSelfGoc(address string) ([]byte, error) {
225225
customServiceName, ok := os.LookupEnv("GOC_SERVICE_NAME")
226226
var selfName string
227227
if ok {
@@ -236,7 +236,7 @@ func registerSelf(address string) ([]byte, error) {
236236
}
237237
238238
resp, err := http.DefaultClient.Do(req)
239-
if err != nil && isNetworkError(err) {
239+
if err != nil && isNetworkErrorGoc(err) {
240240
_log.Printf("[goc][WARN]error occurred:%v, try again", err)
241241
resp, err = http.DefaultClient.Do(req)
242242
}
@@ -257,85 +257,85 @@ func registerSelf(address string) ([]byte, error) {
257257
return body, err
258258
}
259259
260-
func deregisterSelf(address []string) ([]byte, error) {
261-
param := map[string]interface{}{
262-
"address": address,
263-
}
264-
jsonBody, err := json.Marshal(param)
265-
if err != nil {
266-
return nil, err
267-
}
268-
req, err := http.NewRequest("POST", fmt.Sprintf("%s/v1/cover/remove", {{.Center | printf "%q"}}), bytes.NewReader(jsonBody))
269-
if err != nil {
270-
_log.Fatalf("http.NewRequest failed: %v", err)
271-
return nil, err
272-
}
273-
req.Header.Set("Content-Type", "application/json")
274-
275-
resp, err := http.DefaultClient.Do(req)
276-
if err != nil && isNetworkError(err) {
277-
_log.Printf("[goc][WARN]error occurred:%v, try again", err)
278-
resp, err = http.DefaultClient.Do(req)
279-
}
280-
if err != nil {
281-
return nil, fmt.Errorf("failed to deregister into coverage center, err:%v", err)
282-
}
283-
defer resp.Body.Close()
284-
285-
body, err := ioutil.ReadAll(resp.Body)
286-
if err != nil {
287-
return nil, fmt.Errorf("failed to read response body, err:%v", err)
288-
}
289-
290-
if resp.StatusCode != 200 {
291-
err = fmt.Errorf("failed to deregister into coverage center, response code %d", resp.StatusCode)
292-
}
293-
294-
return body, err
260+
func deregisterSelfGoc(address []string) ([]byte, error) {
261+
param := map[string]interface{}{
262+
"address": address,
263+
}
264+
jsonBody, err := json.Marshal(param)
265+
if err != nil {
266+
return nil, err
267+
}
268+
req, err := http.NewRequest("POST", fmt.Sprintf("%s/v1/cover/remove", {{.Center | printf "%q"}}), bytes.NewReader(jsonBody))
269+
if err != nil {
270+
_log.Fatalf("http.NewRequest failed: %v", err)
271+
return nil, err
272+
}
273+
req.Header.Set("Content-Type", "application/json")
274+
275+
resp, err := http.DefaultClient.Do(req)
276+
if err != nil && isNetworkErrorGoc(err) {
277+
_log.Printf("[goc][WARN]error occurred:%v, try again", err)
278+
resp, err = http.DefaultClient.Do(req)
279+
}
280+
if err != nil {
281+
return nil, fmt.Errorf("failed to deregister into coverage center, err:%v", err)
282+
}
283+
defer resp.Body.Close()
284+
285+
body, err := ioutil.ReadAll(resp.Body)
286+
if err != nil {
287+
return nil, fmt.Errorf("failed to read response body, err:%v", err)
288+
}
289+
290+
if resp.StatusCode != 200 {
291+
err = fmt.Errorf("failed to deregister into coverage center, response code %d", resp.StatusCode)
292+
}
293+
294+
return body, err
295295
}
296296
297-
type CallbackFunc func()
298-
299-
func watchSignal(fn CallbackFunc) {
300-
// init signal
301-
c := make(chan os.Signal, 1)
302-
signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
303-
for {
304-
si := <-c
305-
_log.Printf("get a signal %s", si.String())
306-
switch si {
307-
case syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT:
308-
fn()
309-
os.Exit(0) // Exit successfully.
310-
case syscall.SIGHUP:
311-
default:
312-
return
313-
}
314-
}
297+
type CallbackGocFunc func()
298+
299+
func watchSignalGoc(fn CallbackGocFunc) {
300+
// init signal
301+
c := make(chan os.Signal, 1)
302+
signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
303+
for {
304+
si := <-c
305+
_log.Printf("get a signal %s", si.String())
306+
switch si {
307+
case syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT:
308+
fn()
309+
os.Exit(0) // Exit successfully.
310+
case syscall.SIGHUP:
311+
default:
312+
return
313+
}
314+
}
315315
}
316316
317-
func isNetworkError(err error) bool {
317+
func isNetworkErrorGoc(err error) bool {
318318
if err == io.EOF {
319319
return true
320320
}
321321
_, ok := err.(net.Error)
322322
return ok
323323
}
324324
325-
func listen() (ln net.Listener, host string, err error) {
325+
func listenGoc() (ln net.Listener, host string, err error) {
326326
agentPort := "{{.AgentPort }}"
327327
if agentPort != "" {
328328
if ln, err = net.Listen("tcp4", agentPort); err != nil {
329329
return
330330
}
331-
if host, err = getRealHost(ln); err != nil {
331+
if host, err = getRealHostGoc(ln); err != nil {
332332
return
333333
}
334334
} else {
335335
// 获取上次使用的监听地址
336-
if previousAddr := getPreviousAddr(); previousAddr != "" {
336+
if previousAddr := getPreviousAddrGoc(); previousAddr != "" {
337337
ss := strings.Split(previousAddr, ":")
338-
// listen on all network interface
338+
// listenGoc on all network interface
339339
ln, err = net.Listen("tcp4", ":"+ss[len(ss)-1])
340340
if err == nil {
341341
host = previousAddr
@@ -345,15 +345,15 @@ func listen() (ln net.Listener, host string, err error) {
345345
if ln, err = net.Listen("tcp4", ":0"); err != nil {
346346
return
347347
}
348-
if host, err = getRealHost(ln); err != nil {
349-
return
348+
if host, err = getRealHostGoc(ln); err != nil {
349+
return
350350
}
351351
}
352-
go genProfileAddr(host)
352+
go genProfileAddrGoc(host)
353353
return
354354
}
355355
356-
func getRealHost(ln net.Listener) (host string, err error) {
356+
func getRealHostGoc(ln net.Listener) (host string, err error) {
357357
adds, err := net.InterfaceAddrs()
358358
if err != nil {
359359
return
@@ -379,7 +379,7 @@ func getRealHost(ln net.Listener) (host string, err error) {
379379
return
380380
}
381381
382-
func getAllHosts(ln net.Listener) (hosts []string, err error) {
382+
func getAllHostsGoc(ln net.Listener) (hosts []string, err error) {
383383
adds, err := net.InterfaceAddrs()
384384
if err != nil {
385385
return
@@ -395,7 +395,7 @@ func getAllHosts(ln net.Listener) (hosts []string, err error) {
395395
return
396396
}
397397
398-
func getPreviousAddr() string {
398+
func getPreviousAddrGoc() string {
399399
file, err := os.Open(os.Args[0] + "_profile_listen_addr")
400400
if err != nil {
401401
return ""
@@ -407,7 +407,7 @@ func getPreviousAddr() string {
407407
return string(addr)
408408
}
409409
410-
func genProfileAddr(profileAddr string) {
410+
func genProfileAddrGoc(profileAddr string) {
411411
fn := os.Args[0] + "_profile_listen_addr"
412412
f, err := os.OpenFile(fn, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
413413
if err != nil {

tests/agent.bats

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ setup() {
8585
SAMPLE_PID=$!
8686
sleep 2
8787

88-
check_port=$(cat register.port | grep 7888)
88+
check_port=$(cat register.port | grep -a 7888)
8989
[ "$check_port" != "" ]
9090

9191
kill -9 $SAMPLE_PID

0 commit comments

Comments
 (0)