clear coverage by service&addr
This commit is contained in:
parent
1f1f3341a9
commit
15caa56c73
11
cmd/clear.go
11
cmd/clear.go
@ -18,9 +18,10 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
log "github.com/sirupsen/logrus"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/qiniu/goc/pkg/cover"
|
"github.com/qiniu/goc/pkg/cover"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
@ -37,7 +38,11 @@ goc clear
|
|||||||
goc clear --center=http://192.168.1.1:8080
|
goc clear --center=http://192.168.1.1:8080
|
||||||
`,
|
`,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
res, err := cover.NewWorker(center).Clear()
|
p := cover.ProfileParam{
|
||||||
|
Service: svrList,
|
||||||
|
Address: addrList,
|
||||||
|
}
|
||||||
|
res, err := cover.NewWorker(center).Clear(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("call host %v failed, err: %v, response: %v", center, err, string(res))
|
log.Fatalf("call host %v failed, err: %v, response: %v", center, err, string(res))
|
||||||
}
|
}
|
||||||
@ -47,5 +52,7 @@ goc clear --center=http://192.168.1.1:8080
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
addBasicFlags(clearCmd.Flags())
|
addBasicFlags(clearCmd.Flags())
|
||||||
|
clearCmd.Flags().StringSliceVarP(&svrList, "service", "", nil, "service name to clear profile, see 'goc list' for all services.")
|
||||||
|
clearCmd.Flags().StringSliceVarP(&addrList, "address", "", nil, "address to clear profile, see 'goc list' for all addresses.")
|
||||||
rootCmd.AddCommand(clearCmd)
|
rootCmd.AddCommand(clearCmd)
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ import (
|
|||||||
// Action provides methods to contact with the covered service under test
|
// Action provides methods to contact with the covered service under test
|
||||||
type Action interface {
|
type Action interface {
|
||||||
Profile(param ProfileParam) ([]byte, error)
|
Profile(param ProfileParam) ([]byte, error)
|
||||||
Clear() ([]byte, error)
|
Clear(param ProfileParam) ([]byte, error)
|
||||||
InitSystem() ([]byte, error)
|
InitSystem() ([]byte, error)
|
||||||
ListServices() ([]byte, error)
|
ListServices() ([]byte, error)
|
||||||
RegisterService(svr Service) ([]byte, error)
|
RegisterService(svr Service) ([]byte, error)
|
||||||
@ -113,11 +113,19 @@ func (c *client) Profile(param ProfileParam) ([]byte, error) {
|
|||||||
return profile, err
|
return profile, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *client) Clear() ([]byte, error) {
|
func (c *client) Clear(param ProfileParam) ([]byte, error) {
|
||||||
u := fmt.Sprintf("%s%s", c.Host, CoverProfileClearAPI)
|
u := fmt.Sprintf("%s%s", c.Host, CoverProfileClearAPI)
|
||||||
_, resp, err := c.do("POST", u, "", nil)
|
if len(param.Service) != 0 && len(param.Address) != 0 {
|
||||||
|
return nil, fmt.Errorf("use 'service' flag and 'address' flag at the same time may cause ambiguity, please use them separately")
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := json.Marshal(param)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("json.Marshal failed, param: %v, err:%v", param, err)
|
||||||
|
}
|
||||||
|
_, resp, err := c.do("POST", u, "application/json", bytes.NewReader(body))
|
||||||
if err != nil && isNetworkError(err) {
|
if err != nil && isNetworkError(err) {
|
||||||
_, resp, err = c.do("POST", u, "", nil)
|
_, resp, err = c.do("POST", u, "application/json", bytes.NewReader(body))
|
||||||
}
|
}
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
@ -217,17 +217,26 @@ func filterProfile(coverFile []string, profiles []*cover.Profile) ([]*cover.Prof
|
|||||||
}
|
}
|
||||||
|
|
||||||
func clear(c *gin.Context) {
|
func clear(c *gin.Context) {
|
||||||
svrsUnderTest := DefaultStore.GetAll()
|
var body ProfileParam
|
||||||
for svc, addrs := range svrsUnderTest {
|
if err := c.ShouldBind(&body); err != nil {
|
||||||
for _, addr := range addrs {
|
c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
|
||||||
pp, err := NewWorker(addr).Clear()
|
return
|
||||||
if err != nil {
|
|
||||||
c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Fprintf(c.Writer, "Register service %s: %s coverage counter %s", svc, addr, string(pp))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
svrsUnderTest := DefaultStore.GetAll()
|
||||||
|
filterAddrList, err := filterAddrs(body.Service, body.Address, true, svrsUnderTest)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, addr := range filterAddrList {
|
||||||
|
pp, err := NewWorker(addr).Clear(ProfileParam{})
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Fprintf(c.Writer, "Register service %s coverage counter %s", addr, string(pp))
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func initSystem(c *gin.Context) {
|
func initSystem(c *gin.Context) {
|
||||||
|
Loading…
Reference in New Issue
Block a user