summaryrefslogtreecommitdiffstats
path: root/examples/cmd/stats-api/stats_api.go
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2019-02-08 01:16:32 +0100
committerOndrej Fabry <ofabry@cisco.com>2019-02-08 01:16:32 +0100
commitfa21c9d726ebb807895a8571af9a16dab5cd8d6e (patch)
tree4597d483f90e374e89f3923324b531a56217a0f9 /examples/cmd/stats-api/stats_api.go
parent8ba70a7b13950593aab9863246f830eda450f06b (diff)
Generator improvements and cleanup
- generator now supports include-comments flag (as opt-in) - minor code cleanup in binapi-generator - remove obsolete unit tests - flatten examples from examples/cmd folder - introduce constant for checking compatibility in future versions Change-Id: I3545f2ba4b869a3b51d6d0de7e742f3f1e1be392 Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Diffstat (limited to 'examples/cmd/stats-api/stats_api.go')
-rw-r--r--examples/cmd/stats-api/stats_api.go140
1 files changed, 0 insertions, 140 deletions
diff --git a/examples/cmd/stats-api/stats_api.go b/examples/cmd/stats-api/stats_api.go
deleted file mode 100644
index 6fd46d2..0000000
--- a/examples/cmd/stats-api/stats_api.go
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright (c) 2018 Cisco and/or its affiliates.
-//
-// 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 main
-
-import (
- "flag"
- "fmt"
- "log"
- "os"
- "strings"
-
- "git.fd.io/govpp.git/adapter"
- "git.fd.io/govpp.git/adapter/vppapiclient"
-)
-
-// ------------------------------------------------------------------
-// Example - Stats API
-// ------------------------------------------------------------------
-// The example stats_api demonstrates how to retrieve stats
-// from the VPP using the new stats API.
-// ------------------------------------------------------------------
-
-var (
- statsSocket = flag.String("socket", vppapiclient.DefaultStatSocket, "VPP stats segment socket")
- dumpAll = flag.Bool("all", false, "Dump all stats including ones with zero values")
-)
-
-func init() {
- flag.Usage = func() {
- fmt.Fprintf(os.Stderr, "%s: usage [ls|dump] <patterns>...\n", os.Args[0])
- flag.PrintDefaults()
- os.Exit(1)
- }
-}
-
-func main() {
- flag.Parse()
-
- cmd := flag.Arg(0)
-
- switch cmd {
- case "", "ls", "dump":
- default:
- flag.Usage()
- }
-
- var patterns []string
- if flag.NArg() > 0 {
- patterns = flag.Args()[1:]
- }
-
- client := vppapiclient.NewStatClient(*statsSocket)
-
- fmt.Printf("Connecting to stats socket: %s\n", *statsSocket)
-
- if err := client.Connect(); err != nil {
- log.Fatalln("Connecting failed:", err)
- }
- defer client.Disconnect()
-
- switch cmd {
- case "dump":
- dumpStats(client, patterns, !*dumpAll)
- default:
- listStats(client, patterns)
- }
-}
-
-func listStats(client adapter.StatsAPI, patterns []string) {
- fmt.Printf("Listing stats.. %s\n", strings.Join(patterns, " "))
-
- list, err := client.ListStats(patterns...)
- if err != nil {
- log.Fatalln("listing stats failed:", err)
- }
-
- for _, stat := range list {
- fmt.Printf(" - %v\n", stat)
- }
-
- fmt.Printf("Listed %d stats\n", len(list))
-}
-
-func dumpStats(client adapter.StatsAPI, patterns []string, skipZeros bool) {
- fmt.Printf("Dumping stats.. %s\n", strings.Join(patterns, " "))
-
- stats, err := client.DumpStats(patterns...)
- if err != nil {
- log.Fatalln("dumping stats failed:", err)
- }
-
- n := 0
- for _, stat := range stats {
- if isZero(stat.Data) && skipZeros {
- continue
- }
- fmt.Printf(" - %-25s %25v %+v\n", stat.Name, stat.Type, stat.Data)
- n++
- }
-
- fmt.Printf("Dumped %d (%d) stats\n", n, len(stats))
-}
-
-func isZero(stat adapter.Stat) bool {
- switch s := stat.(type) {
- case adapter.ScalarStat:
- return s == 0
- case adapter.ErrorStat:
- return s == 0
- case adapter.SimpleCounterStat:
- for _, ss := range s {
- for _, sss := range ss {
- if sss != 0 {
- return false
- }
- }
- }
- case adapter.CombinedCounterStat:
- for _, ss := range s {
- for _, sss := range ss {
- if sss.Bytes != 0 || sss.Packets != 0 {
- return false
- }
- }
- }
- }
- return true
-}