Add particular port for registered service when goc build

This commit is contained in:
Lei,Liu 2020-07-03 14:47:40 +08:00
parent f8b8fdb014
commit 24040459f2
8 changed files with 16 additions and 8 deletions

View File

@ -71,7 +71,7 @@ func runBuild(args []string, wd string) {
defer gocBuild.Clean()
// doCover with original buildFlags, with new GOPATH( tmp:original )
// in the tmp directory
cover.Execute(buildFlags, gocBuild.NewGOPATH, gocBuild.TmpDir, mode, center)
cover.Execute(buildFlags, gocBuild.NewGOPATH, gocBuild.TmpDir, mode, agentPort, center)
// do install in the temporary directory
err = gocBuild.Build()
if err != nil {

View File

@ -9,6 +9,7 @@ var (
target string
center string
mode string
agentPort string
debugGoc bool
buildFlags string
@ -26,6 +27,7 @@ func addBasicFlags(cmdset *pflag.FlagSet) {
func addCommonFlags(cmdset *pflag.FlagSet) {
addBasicFlags(cmdset)
cmdset.StringVar(&mode, "mode", "count", "coverage mode: set, count, atomic")
cmdset.StringVar(&agentPort, "agentport", "", "specify fixed port for registered service communicate with goc server. if not provided, using a random port")
cmdset.StringVar(&buildFlags, "buildflags", "", "specify the build flags")
// bind to viper
viper.BindPFlags(cmdset)

View File

@ -48,7 +48,7 @@ goc cover --center=http://127.0.0.1:7777 --target=/path/to/target --mode=atomic
log.Fatalf("unknown -mode %v", mode)
}
cover.Execute(buildFlags, "", target, mode, center)
cover.Execute(buildFlags, "", target, mode, agentPort, center)
},
}

View File

@ -64,7 +64,7 @@ func runInstall(args []string, wd string) {
defer gocBuild.Clean()
// doCover with original buildFlags, with new GOPATH( tmp:original )
// in the tmp directory
cover.Execute(buildFlags, gocBuild.NewGOPATH, gocBuild.TmpDir, mode, center)
cover.Execute(buildFlags, gocBuild.NewGOPATH, gocBuild.TmpDir, mode, agentPort, center)
// do install in the temporary directory
err = gocBuild.Install()
if err != nil {

View File

@ -60,7 +60,7 @@ goc run . [--buildflags] [--exec] [--arguments]
fmt.Printf("[goc] goc server started: %s \n", gocServer)
// execute covers for the target source with original buildFlags and new GOPATH( tmp:original )
cover.Execute(buildFlags, gocBuild.NewGOPATH, gocBuild.TmpDir, mode, gocServer)
cover.Execute(buildFlags, gocBuild.NewGOPATH, gocBuild.TmpDir, mode, "", gocServer)
if err := gocBuild.Run(); err != nil {
log.Fatalf("Fail to run: %v", err)

View File

@ -46,6 +46,7 @@ var (
// TestCover is a collection of all counters
type TestCover struct {
Mode string
AgentPort string
Center string // cover profile host center
MainPkgCover *PackageCover
DepsCover []*PackageCover
@ -120,7 +121,7 @@ type PackageError struct {
}
//Execute execute go tool cover for all the .go files in the target folder
func Execute(args, newGopath, target, mode, center string) error {
func Execute(args, newGopath, target, mode, agentPort, center string) error {
if !isDirExist(target) {
log.Errorf("Target directory %s not exist", target)
return ErrCoverPkgFailed
@ -152,6 +153,7 @@ func Execute(args, newGopath, target, mode, center string) error {
// new a testcover for this service
tc := TestCover{
Mode: mode,
AgentPort: agentPort,
Center: center,
MainPkgCover: mainCover,
}

View File

@ -316,7 +316,7 @@ func TestExecuteForSimpleModProject(t *testing.T) {
testDir := filepath.Join(os.TempDir(), "goc-build-test")
copy.Copy(workingDir, testDir)
Execute("", gopath, testDir, "count", "http://127.0.0.1:7777")
Execute("", gopath, testDir, "count", "", "http://127.0.0.1:7777")
_, err := os.Lstat(filepath.Join(testDir, "http_cover_apis_auto_generated.go"))
if !assert.Equal(t, err, nil) {

View File

@ -260,8 +260,12 @@ func listen() (ln net.Listener, host string, err error) {
return
}
}
agentPort := "{{.AgentPort }}"
if agentPort != "" {
ln, err = net.Listen("tcp4", agentPort)
} else {
ln, err = net.Listen("tcp4", ":0")
}
if err != nil {
return
}