blob: c5fe319857b06669ceb8db1470b2cc620171b72f [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// A simple command-line tool to run the benchmark server.
package main
import (
"flag"
"runtime"
"time"
"v.io/v23"
"v.io/x/lib/vlog"
"v.io/x/ref/lib/signals"
"v.io/x/ref/profiles/internal/rpc/stress/internal"
_ "v.io/x/ref/profiles/static"
)
var (
duration = flag.Duration("duration", 0, "duration of the stress test to run; if zero, there is no limit.")
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
ctx, shutdown := v23.Init()
defer shutdown()
server, ep, stop := internal.StartServer(ctx, v23.GetListenSpec(ctx))
vlog.Infof("listening on %s", ep.Name())
var timeout <-chan time.Time
if *duration > 0 {
timeout = time.After(*duration)
}
select {
case <-timeout:
case <-stop:
case <-signals.ShutdownOnSignals(ctx):
}
if err := server.Stop(); err != nil {
vlog.Fatalf("Stop() failed: %v", err)
}
vlog.Info("stopped.")
}