diff options
author | Ondrej Fabry <ofabry@cisco.com> | 2019-02-08 01:16:32 +0100 |
---|---|---|
committer | Ondrej Fabry <ofabry@cisco.com> | 2019-02-08 01:16:32 +0100 |
commit | fa21c9d726ebb807895a8571af9a16dab5cd8d6e (patch) | |
tree | 4597d483f90e374e89f3923324b531a56217a0f9 /examples/cmd/perf-bench | |
parent | 8ba70a7b13950593aab9863246f830eda450f06b (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/perf-bench')
-rw-r--r-- | examples/cmd/perf-bench/perf-bench.go | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/examples/cmd/perf-bench/perf-bench.go b/examples/cmd/perf-bench/perf-bench.go deleted file mode 100644 index 664f046..0000000 --- a/examples/cmd/perf-bench/perf-bench.go +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2017 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. - -// Binary simple-client is an example VPP management application that exercises the -// govpp API on real-world use-cases. -package main - -import ( - "flag" - "fmt" - "log" - "time" - - "github.com/pkg/profile" - "github.com/sirupsen/logrus" - - "git.fd.io/govpp.git" - "git.fd.io/govpp.git/api" - "git.fd.io/govpp.git/core" - "git.fd.io/govpp.git/examples/bin_api/vpe" -) - -const ( - defaultSyncRequestCount = 1000 - defaultAsyncRequestCount = 10000 -) - -func main() { - // parse optional flags - var sync, prof bool - var cnt int - flag.BoolVar(&sync, "sync", false, "run synchronous perf test") - flag.IntVar(&cnt, "count", 0, "count of requests to be sent to VPP") - flag.BoolVar(&prof, "prof", false, "generate profile data") - flag.Parse() - - if cnt == 0 { - // no specific count defined - use defaults - if sync { - cnt = defaultSyncRequestCount - } else { - cnt = defaultAsyncRequestCount - } - } - - if prof { - defer profile.Start().Stop() - } - - // log only errors - core.SetLogger(&logrus.Logger{Level: logrus.ErrorLevel}) - - // connect to VPP - conn, err := govpp.Connect("") - if err != nil { - log.Fatalln("Error:", err) - } - defer conn.Disconnect() - - // create an API channel - ch, err := conn.NewAPIChannelBuffered(cnt, cnt) - if err != nil { - log.Fatalln("Error:", err) - } - defer ch.Close() - - // run the test & measure the time - start := time.Now() - - if sync { - // run synchronous test - syncTest(ch, cnt) - } else { - // run asynchronous test - asyncTest(ch, cnt) - } - - elapsed := time.Since(start) - fmt.Println("Test took:", elapsed) - fmt.Printf("Requests per second: %.0f\n", float64(cnt)/elapsed.Seconds()) -} - -func syncTest(ch api.Channel, cnt int) { - fmt.Printf("Running synchronous perf test with %d requests...\n", cnt) - - for i := 0; i < cnt; i++ { - req := &vpe.ControlPing{} - reply := &vpe.ControlPingReply{} - - if err := ch.SendRequest(req).ReceiveReply(reply); err != nil { - log.Fatalln("Error in reply:", err) - } - } -} - -func asyncTest(ch api.Channel, cnt int) { - fmt.Printf("Running asynchronous perf test with %d requests...\n", cnt) - - ctxChan := make(chan api.RequestCtx, cnt) - - go func() { - for i := 0; i < cnt; i++ { - ctxChan <- ch.SendRequest(&vpe.ControlPing{}) - } - close(ctxChan) - fmt.Printf("Sending asynchronous requests finished\n") - }() - - for ctx := range ctxChan { - reply := &vpe.ControlPingReply{} - if err := ctx.ReceiveReply(reply); err != nil { - log.Fatalln("Error in reply:", err) - } - } -} |