add goc profile command (#11)

This commit is contained in:
Changjun Ji 2020-05-23 10:14:11 +08:00 committed by GitHub
parent c0659d8421
commit a39187f6df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 66 additions and 9 deletions

5
.gitignore vendored
View File

@ -5,4 +5,7 @@
**/goc.log
# binary
goc
goc
# the temp file to save service address
_svrs_address.txt

View File

@ -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

61
cmd/profile.go Normal file
View File

@ -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(&center, "center", "", "http://127.0.0.1:7777", "cover profile host center")
rootCmd.AddCommand(profileCmd)
}

View File

@ -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)
},