diff --git a/.gitignore b/.gitignore index 8848a52..9152893 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,7 @@ **/goc.log # binary -goc \ No newline at end of file +goc + +# the temp file to save service address +_svrs_address.txt \ No newline at end of file diff --git a/cmd/cover.go b/cmd/cover.go index 1d583c5..44ddfb3 100644 --- a/cmd/cover.go +++ b/cmd/cover.go @@ -55,10 +55,6 @@ func doCover(cmd *cobra.Command, args []string, newgopath string, newtarget stri log.Fatalf("target directory %s not exist", target) } - // - // - - // listArgs := []string{"list", "-json"} if len(args) != 0 { listArgs = append(listArgs, args...) @@ -66,12 +62,9 @@ func doCover(cmd *cobra.Command, args []string, newgopath string, newtarget stri listArgs = append(listArgs, "./...") pkgs := cover.ListPackages(target, listArgs, newgopath) - // - // var seen = make(map[string]*cover.PackageCover) var seenCache = make(map[string]*cover.PackageCover) for _, pkg := range pkgs { - // if pkg.Name == "main" { log.Printf("handle package: %v", pkg.ImportPath) // inject the main package diff --git a/cmd/profile.go b/cmd/profile.go new file mode 100644 index 0000000..6486be5 --- /dev/null +++ b/cmd/profile.go @@ -0,0 +1,61 @@ +/* + Copyright 2020 Qiniu Cloud (七牛云) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package cmd + +import ( + "bytes" + "fmt" + "io" + "log" + "os" + + "github.com/qiniu/goc/pkg/cover" + "github.com/spf13/cobra" +) + +var profileCmd = &cobra.Command{ + Use: "profile", + Short: "Get coverage profile from service registry center", + Run: func(cmd *cobra.Command, args []string) { + res, err := cover.NewWorker().Profile(center) + if err != nil { + log.Fatalf("call host %v failed, err: %v, response: %v", center, err, string(res)) + } + + if output == "" { + fmt.Fprint(os.Stdout, string(res)) + } else { + f, err := os.Create(output) + if err != nil { + log.Fatalf("failed to create file %s, err:%v", output, err) + } + defer f.Close() + _, err = io.Copy(f, bytes.NewReader(res)) + if err != nil { + log.Fatalf("failed to write file: %v, err: %v", output, err) + } + } + }, +} + +var output string + +func init() { + profileCmd.Flags().StringVarP(&output, "output", "o", "", "download cover profile") + profileCmd.Flags().StringVarP(¢er, "center", "", "http://127.0.0.1:7777", "cover profile host center") + rootCmd.AddCommand(profileCmd) +} diff --git a/cmd/server.go b/cmd/server.go index 29e9d15..cd0b719 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -23,7 +23,7 @@ import ( var serverCmd = &cobra.Command{ Use: "server", - Short: "Start a server to host all services", + Short: "Start a service registry center", Run: func(cmd *cobra.Command, args []string) { cover.StartServer(port) }, diff --git a/pkg/cover/worker.go b/pkg/cover/client.go similarity index 100% rename from pkg/cover/worker.go rename to pkg/cover/client.go