OSDN Git Service

new repo
[bytom/vapor.git] / vendor / google.golang.org / grpc / benchmark / server / main.go
1 /*
2  *
3  * Copyright 2017 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18
19 package main
20
21 import (
22         "flag"
23         "math"
24         "net"
25         "net/http"
26         _ "net/http/pprof"
27         "time"
28
29         "google.golang.org/grpc/benchmark"
30         "google.golang.org/grpc/grpclog"
31 )
32
33 var duration = flag.Int("duration", math.MaxInt32, "The duration in seconds to run the benchmark server")
34
35 func main() {
36         flag.Parse()
37         go func() {
38                 lis, err := net.Listen("tcp", ":0")
39                 if err != nil {
40                         grpclog.Fatalf("Failed to listen: %v", err)
41                 }
42                 grpclog.Println("Server profiling address: ", lis.Addr().String())
43                 if err := http.Serve(lis, nil); err != nil {
44                         grpclog.Fatalf("Failed to serve: %v", err)
45                 }
46         }()
47         addr, stopper := benchmark.StartServer(benchmark.ServerInfo{Addr: ":0", Type: "protobuf"}) // listen on all interfaces
48         grpclog.Println("Server Address: ", addr)
49         <-time.After(time.Duration(*duration) * time.Second)
50         stopper()
51 }