From 05c338ea355ad2b7430fafbf68e40489f8de7afc Mon Sep 17 00:00:00 2001 From: Rick <1450685+LinuxSuRen@users.noreply.github.com> Date: Thu, 7 Dec 2023 11:06:45 +0800 Subject: [PATCH] feat: support to get pprof of an extension (#307) Co-authored-by: rick --- cmd/server.go | 30 +- cmd/server_test.go | 2 +- extensions/store-etcd/pkg/server.go | 9 + extensions/store-git/pkg/server.go | 9 + extensions/store-mongodb/pkg/server.go | 10 + extensions/store-orm/pkg/server.go | 9 + extensions/store-s3/pkg/s3_server.go | 9 + pkg/extension/pprof.go | 38 ++ pkg/server/remote_server.go | 9 +- pkg/server/server.pb.go | 477 ++++++++++++++++--------- pkg/server/server.pb.gw.go | 85 +++++ pkg/server/server.proto | 11 + pkg/server/server.swagger.json | 50 +++ pkg/server/server_grpc.pb.go | 38 ++ pkg/testing/loader.go | 1 + pkg/testing/loader_file.go | 5 + pkg/testing/loader_non.go | 5 + pkg/testing/remote/grpc_store.go | 11 + pkg/testing/remote/loader.pb.go | 110 +++--- pkg/testing/remote/loader.proto | 1 + pkg/testing/remote/loader_grpc.pb.go | 36 ++ 21 files changed, 725 insertions(+), 230 deletions(-) create mode 100644 pkg/extension/pprof.go diff --git a/cmd/server.go b/cmd/server.go index cb6c8f2..b76bb1e 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -58,6 +58,7 @@ import ( "golang.org/x/oauth2" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/reflection" ) @@ -275,7 +276,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) { promhttp.HandlerFor(reg, promhttp.HandlerOpts{Registry: reg}).ServeHTTP(w, r) }) - debugHandler(mux) + debugHandler(mux, remoteServer) o.httpServer.WithHandler(mux) log.Printf("HTTP server listening at %v", httplis.Addr()) log.Printf("Server is running.") @@ -346,9 +347,32 @@ func frontEndHandlerWithLocation(consolePath string) func(w http.ResponseWriter, } } -func debugHandler(mux *runtime.ServeMux) { +func debugHandler(mux *runtime.ServeMux, remoteServer server.RunnerServer) { mux.HandlePath(http.MethodGet, "/debug/pprof/{sub}", func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { - switch sub := pathParams["sub"]; sub { + sub := pathParams["sub"] + extName := r.URL.Query().Get("name") + if extName != "" && remoteServer != nil { + log.Println("get pprof of extension:", extName) + + ctx := metadata.NewIncomingContext(r.Context(), metadata.New(map[string]string{ + server.HeaderKeyStoreName: extName, + })) + + data, err := remoteServer.PProf(ctx, &server.PProfRequest{ + Name: sub, + }) + if err == nil { + w.Header().Set("Content-Type", "application/octet-stream") + w.Write(data.Data) + } else { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(err.Error())) + } + + return + } + + switch sub { case "cmdline": pprof.Cmdline(w, r) case "profile": diff --git a/cmd/server_test.go b/cmd/server_test.go index e25a68b..e2ef807 100644 --- a/cmd/server_test.go +++ b/cmd/server_test.go @@ -132,7 +132,7 @@ func TestFrontEndHandlerWithLocation(t *testing.T) { "allocs", "block", "goroutine", "heap", "mutex", "threadcreate"} mu := runtime.NewServeMux() - debugHandler(mu) + debugHandler(mu, nil) ready := make(chan struct{}) var err error diff --git a/extensions/store-etcd/pkg/server.go b/extensions/store-etcd/pkg/server.go index 35c9298..ae7c016 100644 --- a/extensions/store-etcd/pkg/server.go +++ b/extensions/store-etcd/pkg/server.go @@ -30,6 +30,7 @@ import ( "log" "time" + "github.com/linuxsuren/api-testing/pkg/extension" "github.com/linuxsuren/api-testing/pkg/server" "github.com/linuxsuren/api-testing/pkg/testing" "github.com/linuxsuren/api-testing/pkg/testing/remote" @@ -263,6 +264,14 @@ func (s *remoteserver) Verify(ctx context.Context, in *server.Empty) (reply *ser } return } +func (s *remoteserver) PProf(ctx context.Context, in *server.PProfRequest) (data *server.PProfData, err error) { + log.Println("pprof", in.Name) + + data = &server.PProfData{ + Data: extension.LoadPProf(in.Name), + } + return +} func connectTestOption() []clientv3.OpOption { return []clientv3.OpOption{clientv3.WithLimit(1), clientv3.WithPrefix(), diff --git a/extensions/store-git/pkg/server.go b/extensions/store-git/pkg/server.go index f0c7169..50a955c 100644 --- a/extensions/store-git/pkg/server.go +++ b/extensions/store-git/pkg/server.go @@ -39,6 +39,7 @@ import ( "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/plumbing/transport/http" + "github.com/linuxsuren/api-testing/pkg/extension" "github.com/linuxsuren/api-testing/pkg/server" "github.com/linuxsuren/api-testing/pkg/testing" "github.com/linuxsuren/api-testing/pkg/testing/remote" @@ -268,6 +269,14 @@ func (s *gitClient) Verify(ctx context.Context, in *server.Empty) (reply *server } return } +func (s *gitClient) PProf(ctx context.Context, in *server.PProfRequest) (data *server.PProfData, err error) { + log.Println("pprof", in.Name) + + data = &server.PProfData{ + Data: extension.LoadPProf(in.Name), + } + return +} func (s *gitClient) getClient(ctx context.Context) (opt *gitOptions, err error) { store := remote.GetStoreFromContext(ctx) if store == nil { diff --git a/extensions/store-mongodb/pkg/server.go b/extensions/store-mongodb/pkg/server.go index 64ab874..ecc2e87 100644 --- a/extensions/store-mongodb/pkg/server.go +++ b/extensions/store-mongodb/pkg/server.go @@ -26,7 +26,9 @@ package pkg import ( "context" + "log" + "github.com/linuxsuren/api-testing/pkg/extension" "github.com/linuxsuren/api-testing/pkg/server" "github.com/linuxsuren/api-testing/pkg/testing" "github.com/linuxsuren/api-testing/pkg/testing/remote" @@ -265,6 +267,14 @@ func (s *dbserver) Verify(ctx context.Context, in *server.Empty) (reply *server. } return } +func (s *dbserver) PProf(ctx context.Context, in *server.PProfRequest) (data *server.PProfData, err error) { + log.Println("pprof", in.Name) + + data = &server.PProfData{ + Data: extension.LoadPProf(in.Name), + } + return +} type SuiteNameGetter interface { GetSuiteName() string diff --git a/extensions/store-orm/pkg/server.go b/extensions/store-orm/pkg/server.go index 1016f39..c9c29c7 100644 --- a/extensions/store-orm/pkg/server.go +++ b/extensions/store-orm/pkg/server.go @@ -31,6 +31,7 @@ import ( "log" "strings" + "github.com/linuxsuren/api-testing/pkg/extension" "github.com/linuxsuren/api-testing/pkg/server" "github.com/linuxsuren/api-testing/pkg/testing/remote" "github.com/linuxsuren/api-testing/pkg/util" @@ -268,6 +269,14 @@ func (s *dbserver) Verify(ctx context.Context, in *server.Empty) (reply *server. } return } +func (s *dbserver) PProf(ctx context.Context, in *server.PProfRequest) (data *server.PProfData, err error) { + log.Println("pprof", in.Name) + + data = &server.PProfData{ + Data: extension.LoadPProf(in.Name), + } + return +} func testCaseIdentiy(db *gorm.DB, testcase *TestCase) *gorm.DB { return db.Model(testcase).Where(fmt.Sprintf("suite_name = '%s' AND name = '%s'", testcase.SuiteName, testcase.Name)) diff --git a/extensions/store-s3/pkg/s3_server.go b/extensions/store-s3/pkg/s3_server.go index e3cea68..76147ce 100644 --- a/extensions/store-s3/pkg/s3_server.go +++ b/extensions/store-s3/pkg/s3_server.go @@ -35,6 +35,7 @@ import ( "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" + "github.com/linuxsuren/api-testing/pkg/extension" "github.com/linuxsuren/api-testing/pkg/server" "github.com/linuxsuren/api-testing/pkg/testing" "github.com/linuxsuren/api-testing/pkg/testing/remote" @@ -205,6 +206,14 @@ func (s *s3Client) Verify(ctx context.Context, in *server.Empty) (reply *server. } return } +func (s *s3Client) PProf(ctx context.Context, in *server.PProfRequest) (data *server.PProfData, err error) { + log.Println("pprof", in.Name) + + data = &server.PProfData{ + Data: extension.LoadPProf(in.Name), + } + return +} func (s *s3Client) getClient(ctx context.Context) (db *s3WithBucket, err error) { store := remote.GetStoreFromContext(ctx) if store == nil { diff --git a/pkg/extension/pprof.go b/pkg/extension/pprof.go new file mode 100644 index 0000000..a3b8e74 --- /dev/null +++ b/pkg/extension/pprof.go @@ -0,0 +1,38 @@ +/** +MIT License + +Copyright (c) 2023 API Testing Authors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +package extension + +import ( + "bytes" + "runtime/pprof" +) + +func LoadPProf(name string) []byte { + buf := new(bytes.Buffer) + if p := pprof.Lookup(name); p != nil { + p.WriteTo(buf, 0) + } + return buf.Bytes() +} diff --git a/pkg/server/remote_server.go b/pkg/server/remote_server.go index 0f34703..23177ee 100644 --- a/pkg/server/remote_server.go +++ b/pkg/server/remote_server.go @@ -180,7 +180,7 @@ func (s *server) getLoader(ctx context.Context) (loader testing.Writer) { if mdd, ok = metadata.FromIncomingContext(ctx); ok { storeNameMeta := mdd.Get(HeaderKeyStoreName) if len(storeNameMeta) > 0 { - storeName := storeNameMeta[0] + storeName := strings.TrimSpace(storeNameMeta[0]) if storeName == "local" || storeName == "" { return } @@ -813,6 +813,13 @@ func (s *server) DeleteSecret(ctx context.Context, in *Secret) (reply *CommonRes func (s *server) UpdateSecret(ctx context.Context, in *Secret) (reply *CommonResult, err error) { return s.secretServer.UpdateSecret(ctx, in) } +func (s *server) PProf(ctx context.Context, in *PProfRequest) (reply *PProfData, err error) { + loader := s.getLoader(ctx) + reply = &PProfData{ + Data: loader.PProf(in.Name), + } + return +} func (s *server) getLoaderByStoreName(storeName string) (loader testing.Writer, err error) { var store *testing.Store diff --git a/pkg/server/server.pb.go b/pkg/server/server.pb.go index 42862c1..840e656 100644 --- a/pkg/server/server.pb.go +++ b/pkg/server/server.pb.go @@ -2202,6 +2202,100 @@ func (x *ExtensionStatus) GetMessage() string { return "" } +type PProfRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *PProfRequest) Reset() { + *x = PProfRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_server_server_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PProfRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PProfRequest) ProtoMessage() {} + +func (x *PProfRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_server_server_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PProfRequest.ProtoReflect.Descriptor instead. +func (*PProfRequest) Descriptor() ([]byte, []int) { + return file_pkg_server_server_proto_rawDescGZIP(), []int{34} +} + +func (x *PProfRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type PProfData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *PProfData) Reset() { + *x = PProfData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_server_server_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PProfData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PProfData) ProtoMessage() {} + +func (x *PProfData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_server_server_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PProfData.ProtoReflect.Descriptor instead. +func (*PProfData) Descriptor() ([]byte, []int) { + return file_pkg_server_server_proto_rawDescGZIP(), []int{35} +} + +func (x *PProfData) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + type Empty struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2211,7 +2305,7 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_server_server_proto_msgTypes[34] + mi := &file_pkg_server_server_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2224,7 +2318,7 @@ func (x *Empty) String() string { func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_pkg_server_server_proto_msgTypes[34] + mi := &file_pkg_server_server_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2237,7 +2331,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { - return file_pkg_server_server_proto_rawDescGZIP(), []int{34} + return file_pkg_server_server_proto_rawDescGZIP(), []int{36} } var File_pkg_server_server_proto protoreflect.FileDescriptor @@ -2472,132 +2566,139 @@ var file_pkg_server_server_proto_rawDesc = []byte{ 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x89, 0x0f, - 0x0a, 0x06, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x03, 0x52, 0x75, 0x6e, 0x12, - 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x75, - 0x69, 0x74, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x69, - 0x74, 0x65, 0x73, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, - 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x49, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x3e, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x09, 0x50, 0x50, 0x72, 0x6f, + 0x66, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x32, 0xbd, 0x0f, 0x0a, 0x06, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x2d, 0x0a, + 0x03, 0x52, 0x75, 0x6e, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, - 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, - 0x12, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, - 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, - 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, - 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x0f, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, + 0x65, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x75, 0x69, 0x74, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, + 0x74, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x53, 0x75, 0x69, 0x74, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x50, 0x49, 0x73, 0x12, 0x19, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x73, 0x22, 0x00, 0x12, 0x41, 0x0a, - 0x0b, 0x52, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, - 0x12, 0x3b, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, - 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, - 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, - 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, - 0x12, 0x41, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, + 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, + 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, + 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, - 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, - 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, + 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x0d, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x69, 0x74, 0x65, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x50, + 0x49, 0x73, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x11, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x73, + 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, + 0x65, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, + 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, + 0x43, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x10, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, + 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x75, 0x69, + 0x74, 0x65, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, + 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, + 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, + 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x00, 0x12, - 0x43, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x10, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1b, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, - 0x69, 0x72, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x0d, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x00, 0x12, 0x40, 0x0a, - 0x14, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, - 0x31, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x0d, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, - 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, - 0x64, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x73, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, - 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, - 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, - 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x47, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, + 0x69, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, + 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0e, 0x50, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0e, 0x46, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x13, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, + 0x22, 0x00, 0x12, 0x40, 0x0a, 0x14, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, + 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x00, + 0x28, 0x01, 0x30, 0x01, 0x12, 0x31, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x73, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0b, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0b, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, + 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x32, + 0x0a, 0x05, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, + 0x22, 0x00, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, + 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2612,7 +2713,7 @@ func file_pkg_server_server_proto_rawDescGZIP() []byte { return file_pkg_server_server_proto_rawDescData } -var file_pkg_server_server_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_pkg_server_server_proto_msgTypes = make([]protoimpl.MessageInfo, 39) var file_pkg_server_server_proto_goTypes = []interface{}{ (*Suites)(nil), // 0: server.Suites (*Items)(nil), // 1: server.Items @@ -2648,18 +2749,20 @@ var file_pkg_server_server_proto_goTypes = []interface{}{ (*Secrets)(nil), // 31: server.Secrets (*Secret)(nil), // 32: server.Secret (*ExtensionStatus)(nil), // 33: server.ExtensionStatus - (*Empty)(nil), // 34: server.Empty - nil, // 35: server.Suites.DataEntry - nil, // 36: server.TestTask.EnvEntry + (*PProfRequest)(nil), // 34: server.PProfRequest + (*PProfData)(nil), // 35: server.PProfData + (*Empty)(nil), // 36: server.Empty + nil, // 37: server.Suites.DataEntry + nil, // 38: server.TestTask.EnvEntry } var file_pkg_server_server_proto_depIdxs = []int32{ - 35, // 0: server.Suites.data:type_name -> server.Suites.DataEntry + 37, // 0: server.Suites.data:type_name -> server.Suites.DataEntry 20, // 1: server.TestCaseIdentity.parameters:type_name -> server.Pair 20, // 2: server.TestSuite.param:type_name -> server.Pair 5, // 3: server.TestSuite.spec:type_name -> server.APISpec 7, // 4: server.APISpec.rpc:type_name -> server.RPC 6, // 5: server.APISpec.secure:type_name -> server.Secure - 36, // 6: server.TestTask.env:type_name -> server.TestTask.EnvEntry + 38, // 6: server.TestTask.env:type_name -> server.TestTask.EnvEntry 20, // 7: server.TestTask.parameters:type_name -> server.Pair 19, // 8: server.TestResult.testCaseResult:type_name -> server.TestCaseResult 15, // 9: server.Suite.items:type_name -> server.TestCase @@ -2683,7 +2786,7 @@ var file_pkg_server_server_proto_depIdxs = []int32{ 32, // 27: server.Secrets.data:type_name -> server.Secret 1, // 28: server.Suites.DataEntry.value:type_name -> server.Items 9, // 29: server.Runner.Run:input_type -> server.TestTask - 34, // 30: server.Runner.GetSuites:input_type -> server.Empty + 36, // 30: server.Runner.GetSuites:input_type -> server.Empty 8, // 31: server.Runner.CreateTestSuite:input_type -> server.TestSuiteIdentity 3, // 32: server.Runner.ImportTestSuite:input_type -> server.TestSuiteSource 8, // 33: server.Runner.GetTestSuite:input_type -> server.TestSuiteIdentity @@ -2696,60 +2799,62 @@ var file_pkg_server_server_proto_depIdxs = []int32{ 13, // 40: server.Runner.CreateTestCase:input_type -> server.TestCaseWithSuite 13, // 41: server.Runner.UpdateTestCase:input_type -> server.TestCaseWithSuite 2, // 42: server.Runner.DeleteTestCase:input_type -> server.TestCaseIdentity - 34, // 43: server.Runner.ListCodeGenerator:input_type -> server.Empty + 36, // 43: server.Runner.ListCodeGenerator:input_type -> server.Empty 30, // 44: server.Runner.GenerateCode:input_type -> server.CodeGenerateRequest - 34, // 45: server.Runner.ListConverter:input_type -> server.Empty + 36, // 45: server.Runner.ListConverter:input_type -> server.Empty 30, // 46: server.Runner.ConvertTestSuite:input_type -> server.CodeGenerateRequest - 34, // 47: server.Runner.PopularHeaders:input_type -> server.Empty + 36, // 47: server.Runner.PopularHeaders:input_type -> server.Empty 22, // 48: server.Runner.FunctionsQuery:input_type -> server.SimpleQuery 22, // 49: server.Runner.FunctionsQueryStream:input_type -> server.SimpleQuery - 34, // 50: server.Runner.GetVersion:input_type -> server.Empty - 34, // 51: server.Runner.Sample:input_type -> server.Empty - 34, // 52: server.Runner.GetStoreKinds:input_type -> server.Empty - 34, // 53: server.Runner.GetStores:input_type -> server.Empty + 36, // 50: server.Runner.GetVersion:input_type -> server.Empty + 36, // 51: server.Runner.Sample:input_type -> server.Empty + 36, // 52: server.Runner.GetStoreKinds:input_type -> server.Empty + 36, // 53: server.Runner.GetStores:input_type -> server.Empty 24, // 54: server.Runner.CreateStore:input_type -> server.Store 24, // 55: server.Runner.UpdateStore:input_type -> server.Store 24, // 56: server.Runner.DeleteStore:input_type -> server.Store 22, // 57: server.Runner.VerifyStore:input_type -> server.SimpleQuery - 34, // 58: server.Runner.GetSecrets:input_type -> server.Empty + 36, // 58: server.Runner.GetSecrets:input_type -> server.Empty 32, // 59: server.Runner.CreateSecret:input_type -> server.Secret 32, // 60: server.Runner.DeleteSecret:input_type -> server.Secret 32, // 61: server.Runner.UpdateSecret:input_type -> server.Secret - 10, // 62: server.Runner.Run:output_type -> server.TestResult - 0, // 63: server.Runner.GetSuites:output_type -> server.Suites - 11, // 64: server.Runner.CreateTestSuite:output_type -> server.HelloReply - 27, // 65: server.Runner.ImportTestSuite:output_type -> server.CommonResult - 4, // 66: server.Runner.GetTestSuite:output_type -> server.TestSuite - 11, // 67: server.Runner.UpdateTestSuite:output_type -> server.HelloReply - 11, // 68: server.Runner.DeleteTestSuite:output_type -> server.HelloReply - 12, // 69: server.Runner.ListTestCase:output_type -> server.Suite - 14, // 70: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases - 19, // 71: server.Runner.RunTestCase:output_type -> server.TestCaseResult - 15, // 72: server.Runner.GetTestCase:output_type -> server.TestCase - 11, // 73: server.Runner.CreateTestCase:output_type -> server.HelloReply - 11, // 74: server.Runner.UpdateTestCase:output_type -> server.HelloReply - 11, // 75: server.Runner.DeleteTestCase:output_type -> server.HelloReply - 28, // 76: server.Runner.ListCodeGenerator:output_type -> server.SimpleList - 27, // 77: server.Runner.GenerateCode:output_type -> server.CommonResult - 28, // 78: server.Runner.ListConverter:output_type -> server.SimpleList - 27, // 79: server.Runner.ConvertTestSuite:output_type -> server.CommonResult - 21, // 80: server.Runner.PopularHeaders:output_type -> server.Pairs - 21, // 81: server.Runner.FunctionsQuery:output_type -> server.Pairs - 21, // 82: server.Runner.FunctionsQueryStream:output_type -> server.Pairs - 11, // 83: server.Runner.GetVersion:output_type -> server.HelloReply - 11, // 84: server.Runner.Sample:output_type -> server.HelloReply - 25, // 85: server.Runner.GetStoreKinds:output_type -> server.StoreKinds - 23, // 86: server.Runner.GetStores:output_type -> server.Stores - 24, // 87: server.Runner.CreateStore:output_type -> server.Store - 24, // 88: server.Runner.UpdateStore:output_type -> server.Store - 24, // 89: server.Runner.DeleteStore:output_type -> server.Store - 33, // 90: server.Runner.VerifyStore:output_type -> server.ExtensionStatus - 31, // 91: server.Runner.GetSecrets:output_type -> server.Secrets - 27, // 92: server.Runner.CreateSecret:output_type -> server.CommonResult - 27, // 93: server.Runner.DeleteSecret:output_type -> server.CommonResult - 27, // 94: server.Runner.UpdateSecret:output_type -> server.CommonResult - 62, // [62:95] is the sub-list for method output_type - 29, // [29:62] is the sub-list for method input_type + 34, // 62: server.Runner.PProf:input_type -> server.PProfRequest + 10, // 63: server.Runner.Run:output_type -> server.TestResult + 0, // 64: server.Runner.GetSuites:output_type -> server.Suites + 11, // 65: server.Runner.CreateTestSuite:output_type -> server.HelloReply + 27, // 66: server.Runner.ImportTestSuite:output_type -> server.CommonResult + 4, // 67: server.Runner.GetTestSuite:output_type -> server.TestSuite + 11, // 68: server.Runner.UpdateTestSuite:output_type -> server.HelloReply + 11, // 69: server.Runner.DeleteTestSuite:output_type -> server.HelloReply + 12, // 70: server.Runner.ListTestCase:output_type -> server.Suite + 14, // 71: server.Runner.GetSuggestedAPIs:output_type -> server.TestCases + 19, // 72: server.Runner.RunTestCase:output_type -> server.TestCaseResult + 15, // 73: server.Runner.GetTestCase:output_type -> server.TestCase + 11, // 74: server.Runner.CreateTestCase:output_type -> server.HelloReply + 11, // 75: server.Runner.UpdateTestCase:output_type -> server.HelloReply + 11, // 76: server.Runner.DeleteTestCase:output_type -> server.HelloReply + 28, // 77: server.Runner.ListCodeGenerator:output_type -> server.SimpleList + 27, // 78: server.Runner.GenerateCode:output_type -> server.CommonResult + 28, // 79: server.Runner.ListConverter:output_type -> server.SimpleList + 27, // 80: server.Runner.ConvertTestSuite:output_type -> server.CommonResult + 21, // 81: server.Runner.PopularHeaders:output_type -> server.Pairs + 21, // 82: server.Runner.FunctionsQuery:output_type -> server.Pairs + 21, // 83: server.Runner.FunctionsQueryStream:output_type -> server.Pairs + 11, // 84: server.Runner.GetVersion:output_type -> server.HelloReply + 11, // 85: server.Runner.Sample:output_type -> server.HelloReply + 25, // 86: server.Runner.GetStoreKinds:output_type -> server.StoreKinds + 23, // 87: server.Runner.GetStores:output_type -> server.Stores + 24, // 88: server.Runner.CreateStore:output_type -> server.Store + 24, // 89: server.Runner.UpdateStore:output_type -> server.Store + 24, // 90: server.Runner.DeleteStore:output_type -> server.Store + 33, // 91: server.Runner.VerifyStore:output_type -> server.ExtensionStatus + 31, // 92: server.Runner.GetSecrets:output_type -> server.Secrets + 27, // 93: server.Runner.CreateSecret:output_type -> server.CommonResult + 27, // 94: server.Runner.DeleteSecret:output_type -> server.CommonResult + 27, // 95: server.Runner.UpdateSecret:output_type -> server.CommonResult + 35, // 96: server.Runner.PProf:output_type -> server.PProfData + 63, // [63:97] is the sub-list for method output_type + 29, // [29:63] is the sub-list for method input_type 29, // [29:29] is the sub-list for extension type_name 29, // [29:29] is the sub-list for extension extendee 0, // [0:29] is the sub-list for field type_name @@ -3170,6 +3275,30 @@ func file_pkg_server_server_proto_init() { } } file_pkg_server_server_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PProfRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_server_server_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PProfData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_server_server_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state @@ -3188,7 +3317,7 @@ func file_pkg_server_server_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_server_server_proto_rawDesc, NumEnums: 0, - NumMessages: 37, + NumMessages: 39, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/server/server.pb.gw.go b/pkg/server/server.pb.gw.go index c33d602..b79e236 100644 --- a/pkg/server/server.pb.gw.go +++ b/pkg/server/server.pb.gw.go @@ -1162,6 +1162,40 @@ func local_request_Runner_UpdateSecret_0(ctx context.Context, marshaler runtime. } +func request_Runner_PProf_0(ctx context.Context, marshaler runtime.Marshaler, client RunnerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PProfRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PProf(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Runner_PProf_0(ctx context.Context, marshaler runtime.Marshaler, server RunnerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PProfRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PProf(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterRunnerHandlerServer registers the http handlers for service Runner to "mux". // UnaryRPC :call RunnerServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1975,6 +2009,31 @@ func RegisterRunnerHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) + mux.Handle("POST", pattern_Runner_PProf_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.Runner/PProf", runtime.WithHTTPPathPattern("/server.Runner/PProf")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Runner_PProf_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Runner_PProf_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2742,6 +2801,28 @@ func RegisterRunnerHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("POST", pattern_Runner_PProf_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.Runner/PProf", runtime.WithHTTPPathPattern("/server.Runner/PProf")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Runner_PProf_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Runner_PProf_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2811,6 +2892,8 @@ var ( pattern_Runner_DeleteSecret_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"server.Runner", "DeleteSecret"}, "")) pattern_Runner_UpdateSecret_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"server.Runner", "UpdateSecret"}, "")) + + pattern_Runner_PProf_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"server.Runner", "PProf"}, "")) ) var ( @@ -2879,4 +2962,6 @@ var ( forward_Runner_DeleteSecret_0 = runtime.ForwardResponseMessage forward_Runner_UpdateSecret_0 = runtime.ForwardResponseMessage + + forward_Runner_PProf_0 = runtime.ForwardResponseMessage ) diff --git a/pkg/server/server.proto b/pkg/server/server.proto index c327a03..d5a533a 100644 --- a/pkg/server/server.proto +++ b/pkg/server/server.proto @@ -52,6 +52,9 @@ service Runner { rpc CreateSecret(Secret) returns (CommonResult) {} rpc DeleteSecret(Secret) returns (CommonResult) {} rpc UpdateSecret(Secret) returns (CommonResult) {} + + // extension + rpc PProf(PProfRequest) returns (PProfData) {} } message Suites { @@ -263,5 +266,13 @@ message ExtensionStatus { string message = 4; } +message PProfRequest { + string name = 1; +} + +message PProfData { + bytes data = 1; +} + message Empty { } diff --git a/pkg/server/server.swagger.json b/pkg/server/server.swagger.json index 115ca4b..ebfc3d6 100644 --- a/pkg/server/server.swagger.json +++ b/pkg/server/server.swagger.json @@ -799,6 +799,39 @@ ] } }, + "/server.Runner/PProf": { + "post": { + "summary": "extension", + "operationId": "Runner_PProf", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/serverPProfData" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/serverPProfRequest" + } + } + ], + "tags": [ + "Runner" + ] + } + }, "/server.Runner/PopularHeaders": { "post": { "summary": "common services", @@ -1223,6 +1256,23 @@ } } }, + "serverPProfData": { + "type": "object", + "properties": { + "data": { + "type": "string", + "format": "byte" + } + } + }, + "serverPProfRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, "serverPair": { "type": "object", "properties": { diff --git a/pkg/server/server_grpc.pb.go b/pkg/server/server_grpc.pb.go index 188bcf7..e61f2f8 100644 --- a/pkg/server/server_grpc.pb.go +++ b/pkg/server/server_grpc.pb.go @@ -62,6 +62,8 @@ type RunnerClient interface { CreateSecret(ctx context.Context, in *Secret, opts ...grpc.CallOption) (*CommonResult, error) DeleteSecret(ctx context.Context, in *Secret, opts ...grpc.CallOption) (*CommonResult, error) UpdateSecret(ctx context.Context, in *Secret, opts ...grpc.CallOption) (*CommonResult, error) + // extension + PProf(ctx context.Context, in *PProfRequest, opts ...grpc.CallOption) (*PProfData, error) } type runnerClient struct { @@ -391,6 +393,15 @@ func (c *runnerClient) UpdateSecret(ctx context.Context, in *Secret, opts ...grp return out, nil } +func (c *runnerClient) PProf(ctx context.Context, in *PProfRequest, opts ...grpc.CallOption) (*PProfData, error) { + out := new(PProfData) + err := c.cc.Invoke(ctx, "/server.Runner/PProf", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // RunnerServer is the server API for Runner service. // All implementations must embed UnimplementedRunnerServer // for forward compatibility @@ -435,6 +446,8 @@ type RunnerServer interface { CreateSecret(context.Context, *Secret) (*CommonResult, error) DeleteSecret(context.Context, *Secret) (*CommonResult, error) UpdateSecret(context.Context, *Secret) (*CommonResult, error) + // extension + PProf(context.Context, *PProfRequest) (*PProfData, error) mustEmbedUnimplementedRunnerServer() } @@ -541,6 +554,9 @@ func (UnimplementedRunnerServer) DeleteSecret(context.Context, *Secret) (*Common func (UnimplementedRunnerServer) UpdateSecret(context.Context, *Secret) (*CommonResult, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateSecret not implemented") } +func (UnimplementedRunnerServer) PProf(context.Context, *PProfRequest) (*PProfData, error) { + return nil, status.Errorf(codes.Unimplemented, "method PProf not implemented") +} func (UnimplementedRunnerServer) mustEmbedUnimplementedRunnerServer() {} // UnsafeRunnerServer may be embedded to opt out of forward compatibility for this service. @@ -1156,6 +1172,24 @@ func _Runner_UpdateSecret_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Runner_PProf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PProfRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RunnerServer).PProf(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/server.Runner/PProf", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RunnerServer).PProf(ctx, req.(*PProfRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Runner_ServiceDesc is the grpc.ServiceDesc for Runner service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1291,6 +1325,10 @@ var Runner_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateSecret", Handler: _Runner_UpdateSecret_Handler, }, + { + MethodName: "PProf", + Handler: _Runner_PProf_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/pkg/testing/loader.go b/pkg/testing/loader.go index 22915b1..36c1fe3 100644 --- a/pkg/testing/loader.go +++ b/pkg/testing/loader.go @@ -34,6 +34,7 @@ type Loader interface { Reset() Verify() (readOnly bool, err error) + PProf(name string) []byte } type Writer interface { diff --git a/pkg/testing/loader_file.go b/pkg/testing/loader_file.go index 2445d1b..e1c0f75 100644 --- a/pkg/testing/loader_file.go +++ b/pkg/testing/loader_file.go @@ -420,3 +420,8 @@ func (l *fileLoader) Verify() (readOnly bool, err error) { // always be okay return } + +func (l *fileLoader) PProf(string) []byte { + // not support + return nil +} diff --git a/pkg/testing/loader_non.go b/pkg/testing/loader_non.go index 71b99b7..4f27646 100644 --- a/pkg/testing/loader_non.go +++ b/pkg/testing/loader_non.go @@ -109,3 +109,8 @@ func (l *nonLoader) Verify() (readOnly bool, err error) { // always be okay return } + +func (l *nonLoader) PProf(string) []byte { + // not support + return nil +} diff --git a/pkg/testing/remote/grpc_store.go b/pkg/testing/remote/grpc_store.go index 67cc93b..2bdf06b 100644 --- a/pkg/testing/remote/grpc_store.go +++ b/pkg/testing/remote/grpc_store.go @@ -27,6 +27,7 @@ package remote import ( context "context" "errors" + "log" "time" server "github.com/linuxsuren/api-testing/pkg/server" @@ -202,3 +203,13 @@ func (g *gRPCLoader) Verify() (readOnly bool, err error) { } return } + +func (g *gRPCLoader) PProf(name string) []byte { + data, err := g.client.PProf(context.Background(), &server.PProfRequest{ + Name: name, + }) + if err != nil { + log.Println("failed to get pprof:", err) + } + return data.Data +} diff --git a/pkg/testing/remote/loader.pb.go b/pkg/testing/remote/loader.pb.go index 9698b30..5f3ee9a 100644 --- a/pkg/testing/remote/loader.pb.go +++ b/pkg/testing/remote/loader.pb.go @@ -177,7 +177,7 @@ var file_pkg_testing_remote_loader_proto_rawDesc = []byte{ 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x75, 0x6c, 0x6c, - 0x32, 0xe3, 0x04, 0x0a, 0x06, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0d, 0x4c, + 0x32, 0x97, 0x05, 0x0a, 0x06, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, @@ -215,28 +215,32 @@ var file_pkg_testing_remote_loader_proto_rawDesc = []byte{ 0x22, 0x00, 0x12, 0x32, 0x0a, 0x06, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x32, 0x96, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, - 0x36, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, - 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, - 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x42, - 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, - 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x74, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x05, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x12, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x50, 0x72, 0x6f, 0x66, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, + 0x50, 0x72, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x32, 0x96, 0x02, 0x0a, 0x0d, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x00, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x73, 0x75, 0x72, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, + 0x2d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -259,11 +263,13 @@ var file_pkg_testing_remote_loader_proto_goTypes = []interface{}{ (*server.APISpec)(nil), // 3: server.APISpec (*server.TestCase)(nil), // 4: server.TestCase (*server.Empty)(nil), // 5: server.Empty - (*server.Secret)(nil), // 6: server.Secret - (*server.TestCases)(nil), // 7: server.TestCases - (*server.ExtensionStatus)(nil), // 8: server.ExtensionStatus - (*server.Secrets)(nil), // 9: server.Secrets - (*server.CommonResult)(nil), // 10: server.CommonResult + (*server.PProfRequest)(nil), // 6: server.PProfRequest + (*server.Secret)(nil), // 7: server.Secret + (*server.TestCases)(nil), // 8: server.TestCases + (*server.ExtensionStatus)(nil), // 9: server.ExtensionStatus + (*server.PProfData)(nil), // 10: server.PProfData + (*server.Secrets)(nil), // 11: server.Secrets + (*server.CommonResult)(nil), // 12: server.CommonResult } var file_pkg_testing_remote_loader_proto_depIdxs = []int32{ 1, // 0: remote.TestSuites.data:type_name -> remote.TestSuite @@ -281,29 +287,31 @@ var file_pkg_testing_remote_loader_proto_depIdxs = []int32{ 4, // 12: remote.Loader.UpdateTestCase:input_type -> server.TestCase 4, // 13: remote.Loader.DeleteTestCase:input_type -> server.TestCase 5, // 14: remote.Loader.Verify:input_type -> server.Empty - 6, // 15: remote.SecretService.GetSecret:input_type -> server.Secret - 5, // 16: remote.SecretService.GetSecrets:input_type -> server.Empty - 6, // 17: remote.SecretService.CreateSecret:input_type -> server.Secret - 6, // 18: remote.SecretService.DeleteSecret:input_type -> server.Secret - 6, // 19: remote.SecretService.UpdateSecret:input_type -> server.Secret - 0, // 20: remote.Loader.ListTestSuite:output_type -> remote.TestSuites - 5, // 21: remote.Loader.CreateTestSuite:output_type -> server.Empty - 1, // 22: remote.Loader.GetTestSuite:output_type -> remote.TestSuite - 1, // 23: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite - 5, // 24: remote.Loader.DeleteTestSuite:output_type -> server.Empty - 7, // 25: remote.Loader.ListTestCases:output_type -> server.TestCases - 5, // 26: remote.Loader.CreateTestCase:output_type -> server.Empty - 4, // 27: remote.Loader.GetTestCase:output_type -> server.TestCase - 4, // 28: remote.Loader.UpdateTestCase:output_type -> server.TestCase - 5, // 29: remote.Loader.DeleteTestCase:output_type -> server.Empty - 8, // 30: remote.Loader.Verify:output_type -> server.ExtensionStatus - 6, // 31: remote.SecretService.GetSecret:output_type -> server.Secret - 9, // 32: remote.SecretService.GetSecrets:output_type -> server.Secrets - 10, // 33: remote.SecretService.CreateSecret:output_type -> server.CommonResult - 10, // 34: remote.SecretService.DeleteSecret:output_type -> server.CommonResult - 10, // 35: remote.SecretService.UpdateSecret:output_type -> server.CommonResult - 20, // [20:36] is the sub-list for method output_type - 4, // [4:20] is the sub-list for method input_type + 6, // 15: remote.Loader.PProf:input_type -> server.PProfRequest + 7, // 16: remote.SecretService.GetSecret:input_type -> server.Secret + 5, // 17: remote.SecretService.GetSecrets:input_type -> server.Empty + 7, // 18: remote.SecretService.CreateSecret:input_type -> server.Secret + 7, // 19: remote.SecretService.DeleteSecret:input_type -> server.Secret + 7, // 20: remote.SecretService.UpdateSecret:input_type -> server.Secret + 0, // 21: remote.Loader.ListTestSuite:output_type -> remote.TestSuites + 5, // 22: remote.Loader.CreateTestSuite:output_type -> server.Empty + 1, // 23: remote.Loader.GetTestSuite:output_type -> remote.TestSuite + 1, // 24: remote.Loader.UpdateTestSuite:output_type -> remote.TestSuite + 5, // 25: remote.Loader.DeleteTestSuite:output_type -> server.Empty + 8, // 26: remote.Loader.ListTestCases:output_type -> server.TestCases + 5, // 27: remote.Loader.CreateTestCase:output_type -> server.Empty + 4, // 28: remote.Loader.GetTestCase:output_type -> server.TestCase + 4, // 29: remote.Loader.UpdateTestCase:output_type -> server.TestCase + 5, // 30: remote.Loader.DeleteTestCase:output_type -> server.Empty + 9, // 31: remote.Loader.Verify:output_type -> server.ExtensionStatus + 10, // 32: remote.Loader.PProf:output_type -> server.PProfData + 7, // 33: remote.SecretService.GetSecret:output_type -> server.Secret + 11, // 34: remote.SecretService.GetSecrets:output_type -> server.Secrets + 12, // 35: remote.SecretService.CreateSecret:output_type -> server.CommonResult + 12, // 36: remote.SecretService.DeleteSecret:output_type -> server.CommonResult + 12, // 37: remote.SecretService.UpdateSecret:output_type -> server.CommonResult + 21, // [21:38] is the sub-list for method output_type + 4, // [4:21] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name 4, // [4:4] is the sub-list for extension extendee 0, // [0:4] is the sub-list for field type_name diff --git a/pkg/testing/remote/loader.proto b/pkg/testing/remote/loader.proto index f57ab8a..6bec731 100644 --- a/pkg/testing/remote/loader.proto +++ b/pkg/testing/remote/loader.proto @@ -20,6 +20,7 @@ service Loader { rpc DeleteTestCase(server.TestCase) returns (server.Empty) {} rpc Verify(server.Empty) returns (server.ExtensionStatus) {} + rpc PProf(server.PProfRequest) returns (server.PProfData) {} } message TestSuites { diff --git a/pkg/testing/remote/loader_grpc.pb.go b/pkg/testing/remote/loader_grpc.pb.go index 6e2f574..5f202d7 100644 --- a/pkg/testing/remote/loader_grpc.pb.go +++ b/pkg/testing/remote/loader_grpc.pb.go @@ -34,6 +34,7 @@ type LoaderClient interface { UpdateTestCase(ctx context.Context, in *server.TestCase, opts ...grpc.CallOption) (*server.TestCase, error) DeleteTestCase(ctx context.Context, in *server.TestCase, opts ...grpc.CallOption) (*server.Empty, error) Verify(ctx context.Context, in *server.Empty, opts ...grpc.CallOption) (*server.ExtensionStatus, error) + PProf(ctx context.Context, in *server.PProfRequest, opts ...grpc.CallOption) (*server.PProfData, error) } type loaderClient struct { @@ -143,6 +144,15 @@ func (c *loaderClient) Verify(ctx context.Context, in *server.Empty, opts ...grp return out, nil } +func (c *loaderClient) PProf(ctx context.Context, in *server.PProfRequest, opts ...grpc.CallOption) (*server.PProfData, error) { + out := new(server.PProfData) + err := c.cc.Invoke(ctx, "/remote.Loader/PProf", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // LoaderServer is the server API for Loader service. // All implementations must embed UnimplementedLoaderServer // for forward compatibility @@ -158,6 +168,7 @@ type LoaderServer interface { UpdateTestCase(context.Context, *server.TestCase) (*server.TestCase, error) DeleteTestCase(context.Context, *server.TestCase) (*server.Empty, error) Verify(context.Context, *server.Empty) (*server.ExtensionStatus, error) + PProf(context.Context, *server.PProfRequest) (*server.PProfData, error) mustEmbedUnimplementedLoaderServer() } @@ -198,6 +209,9 @@ func (UnimplementedLoaderServer) DeleteTestCase(context.Context, *server.TestCas func (UnimplementedLoaderServer) Verify(context.Context, *server.Empty) (*server.ExtensionStatus, error) { return nil, status.Errorf(codes.Unimplemented, "method Verify not implemented") } +func (UnimplementedLoaderServer) PProf(context.Context, *server.PProfRequest) (*server.PProfData, error) { + return nil, status.Errorf(codes.Unimplemented, "method PProf not implemented") +} func (UnimplementedLoaderServer) mustEmbedUnimplementedLoaderServer() {} // UnsafeLoaderServer may be embedded to opt out of forward compatibility for this service. @@ -409,6 +423,24 @@ func _Loader_Verify_Handler(srv interface{}, ctx context.Context, dec func(inter return interceptor(ctx, in, info, handler) } +func _Loader_PProf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(server.PProfRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LoaderServer).PProf(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/remote.Loader/PProf", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LoaderServer).PProf(ctx, req.(*server.PProfRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Loader_ServiceDesc is the grpc.ServiceDesc for Loader service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -460,6 +492,10 @@ var Loader_ServiceDesc = grpc.ServiceDesc{ MethodName: "Verify", Handler: _Loader_Verify_Handler, }, + { + MethodName: "PProf", + Handler: _Loader_PProf_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "pkg/testing/remote/loader.proto",