This is an automated email from the ASF dual-hosted git repository.

pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new 59f5772  [BEAM-13145][Playground] add a new status: STATUS_VALIDATING; 
add a new status: STATUS_VALIDATION_ERROR; add a new status: STATUS_COMPILING; 
update of validation processing;
     new 59bd9a0  Merge pull request #15853 from [BEAM-13145][Playground] 
Validation error
59f5772 is described below

commit 59f57728a8ba5f1490d2f4f6aa35bb0c317240c6
Author: AydarZaynutdinov <aydar.zaynutdi...@akvelon.com>
AuthorDate: Mon Nov 1 16:27:31 2021 +0300

    [BEAM-13145][Playground]
    add a new status: STATUS_VALIDATING;
    add a new status: STATUS_VALIDATION_ERROR;
    add a new status: STATUS_COMPILING;
    update of validation processing;
---
 playground/api/v1/api.proto                      |  11 ++-
 playground/backend/cmd/server/controller.go      |  35 ++++---
 playground/backend/cmd/server/controller_test.go |   8 +-
 playground/backend/internal/api/v1/api.pb.go     | 111 +++++++++++++----------
 4 files changed, 94 insertions(+), 71 deletions(-)

diff --git a/playground/api/v1/api.proto b/playground/api/v1/api.proto
index a6c8b93..d105791 100644
--- a/playground/api/v1/api.proto
+++ b/playground/api/v1/api.proto
@@ -31,11 +31,14 @@ enum Sdk {
 
 enum Status {
   STATUS_UNSPECIFIED = 0;
-  STATUS_EXECUTING = 1;
-  STATUS_FINISHED = 2;
-  STATUS_ERROR = 3;
+  STATUS_VALIDATING = 1;
+  STATUS_VALIDATION_ERROR = 2;
+  STATUS_COMPILING = 3;
   STATUS_COMPILE_ERROR = 4;
-  STATUS_RUN_TIMEOUT = 5;
+  STATUS_EXECUTING = 5;
+  STATUS_FINISHED = 6;
+  STATUS_ERROR = 7;
+  STATUS_RUN_TIMEOUT = 8;
 }
 
 // RunCodeRequest represents a code text and options of SDK which executes the 
code.
diff --git a/playground/backend/cmd/server/controller.go 
b/playground/backend/cmd/server/controller.go
index 49285d2..03e9b2a 100644
--- a/playground/backend/cmd/server/controller.go
+++ b/playground/backend/cmd/server/controller.go
@@ -60,7 +60,7 @@ func (controller *playgroundController) RunCode(ctx 
context.Context, info *pb.Ru
 
        compileBuilder := setupCompileBuilder(lc, info.Sdk, 
controller.env.BeamSdkEnvs.ExecutorConfig)
 
-       setToCache(ctx, controller.cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_EXECUTING)
+       setToCache(ctx, controller.cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_VALIDATING)
        if err := controller.cacheService.SetExpTime(ctx, pipelineId, 
cacheExpirationTime); err != nil {
                logger.Errorf("%s: RunCode(): cache.SetExpTime(): %s\n", 
pipelineId, err.Error())
                return nil, errors.InternalError("Run code()", "Error during 
set expiration to cache: "+err.Error())
@@ -219,13 +219,11 @@ func processCode(ctx context.Context, cacheService 
cache.Cache, lc *fs_tool.Life
        logger.Infof("%s: Validate() ...\n", pipelineId)
        validateFunc := exec.Validate()
        if err := validateFunc(); err != nil {
-               // error during validation
-               // TODO move to processError when status for validation error 
will be added
-               logger.Errorf("%s: Validate: %s\n", pipelineId, err.Error())
-               setToCache(ctx, cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_ERROR)
+               processError(ctx, err, nil, pipelineId, cacheService, 
pb.Status_STATUS_VALIDATION_ERROR)
                return
+       } else {
+               processSuccess(ctx, nil, pipelineId, cacheService, 
pb.Status_STATUS_COMPILING)
        }
-       logger.Infof("%s: Validate() finish\n", pipelineId)
 
        // compile
        logger.Infof("%s: Compile() ...\n", pipelineId)
@@ -250,7 +248,6 @@ func processCode(ctx context.Context, cacheService 
cache.Cache, lc *fs_tool.Life
        logger.Infof("%s: Run() ...\n", pipelineId)
        runCmd := exec.Run()
        if data, err := runCmd.CombinedOutput(); err != nil {
-               // error during run code
                processError(ctx, err, data, pipelineId, cacheService, 
pb.Status_STATUS_ERROR)
                return
        } else {
@@ -271,14 +268,11 @@ func cleanUp(pipelineId uuid.UUID, lc *fs_tool.LifeCycle) 
{
 // processError processes error received during processing code via setting a 
corresponding status and output to cache
 func processError(ctx context.Context, err error, data []byte, pipelineId 
uuid.UUID, cacheService cache.Cache, status pb.Status) {
        switch status {
-       case pb.Status_STATUS_ERROR:
-               logger.Errorf("%s: Run: err: %s, output: %s\n", pipelineId, 
err.Error(), data)
-
-               // set to cache pipelineId: cache.SubKey_RunOutput: err.Error()
-               setToCache(ctx, cacheService, pipelineId, cache.RunOutput, 
"error: "+err.Error()+", output: "+string(data))
+       case pb.Status_STATUS_VALIDATION_ERROR:
+               logger.Errorf("%s: Validate: %s\n", pipelineId, err.Error())
 
-               // set to cache pipelineId: cache.SubKey_Status: 
pb.Status_STATUS_ERROR
-               setToCache(ctx, cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_ERROR)
+               // set to cache pipelineId: cache.SubKey_Status: 
pb.Status_STATUS_VALIDATION_ERROR
+               setToCache(ctx, cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_VALIDATION_ERROR)
        case pb.Status_STATUS_COMPILE_ERROR:
                logger.Errorf("%s: Compile: err: %s, output: %s\n", pipelineId, 
err.Error(), data)
 
@@ -287,12 +281,25 @@ func processError(ctx context.Context, err error, data 
[]byte, pipelineId uuid.U
 
                // set to cache pipelineId: cache.SubKey_Status: 
pb.Status_STATUS_ERROR
                setToCache(ctx, cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_COMPILE_ERROR)
+       case pb.Status_STATUS_ERROR:
+               logger.Errorf("%s: Run: err: %s, output: %s\n", pipelineId, 
err.Error(), data)
+
+               // set to cache pipelineId: cache.SubKey_RunOutput: err.Error()
+               setToCache(ctx, cacheService, pipelineId, cache.RunOutput, 
"error: "+err.Error()+", output: "+string(data))
+
+               // set to cache pipelineId: cache.SubKey_Status: 
pb.Status_STATUS_ERROR
+               setToCache(ctx, cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_ERROR)
        }
 }
 
 // processSuccess processes case after successful code processing via setting 
a corresponding status and output to cache
 func processSuccess(ctx context.Context, output []byte, pipelineId uuid.UUID, 
cacheService cache.Cache, status pb.Status) {
        switch status {
+       case pb.Status_STATUS_COMPILING:
+               logger.Infof("%s: Validate() finish\n", pipelineId)
+
+               // set to cache pipelineId: cache.SubKey_Status: 
pb.Status_STATUS_EXECUTING
+               setToCache(ctx, cacheService, pipelineId, cache.Status, 
pb.Status_STATUS_COMPILING)
        case pb.Status_STATUS_EXECUTING:
                logger.Infof("%s: Compile() finish\n", pipelineId)
 
diff --git a/playground/backend/cmd/server/controller_test.go 
b/playground/backend/cmd/server/controller_test.go
index b5526d1..251fab8 100644
--- a/playground/backend/cmd/server/controller_test.go
+++ b/playground/backend/cmd/server/controller_test.go
@@ -139,7 +139,7 @@ func TestPlaygroundController_RunCode(t *testing.T) {
                },
                {
                        // Test case with calling RunCode method with correct 
SDK.
-                       // As a result want to receive response with pipelineId 
and status into cache should be set as Status_STATUS_EXECUTING.
+                       // As a result want to receive response with pipelineId 
and status into cache should be set as Status_STATUS_COMPILING.
                        name: "RunCode with correct sdk",
                        args: args{
                                ctx: context.Background(),
@@ -148,7 +148,7 @@ func TestPlaygroundController_RunCode(t *testing.T) {
                                        Sdk:  pb.Sdk_SDK_JAVA,
                                },
                        },
-                       wantStatus: pb.Status_STATUS_EXECUTING,
+                       wantStatus: pb.Status_STATUS_COMPILING,
                        wantErr:    false,
                },
        }
@@ -425,11 +425,11 @@ func Test_processCode(t *testing.T) {
        }{
                {
                        // Test case with calling processCode method without 
preparing files with code.
-                       // As a result status into cache should be set as 
Status_STATUS_ERROR.
+                       // As a result status into cache should be set as 
Status_STATUS_VALIDATION_ERROR.
                        name:                  "validation failed",
                        createExecFile:        false,
                        code:                  "",
-                       expectedStatus:        pb.Status_STATUS_ERROR,
+                       expectedStatus:        
pb.Status_STATUS_VALIDATION_ERROR,
                        expectedCompileOutput: nil,
                        expectedRunOutput:     nil,
                        args: args{
diff --git a/playground/backend/internal/api/v1/api.pb.go 
b/playground/backend/internal/api/v1/api.pb.go
index a2844c7..0376ff9 100644
--- a/playground/backend/internal/api/v1/api.pb.go
+++ b/playground/backend/internal/api/v1/api.pb.go
@@ -95,31 +95,40 @@ func (Sdk) EnumDescriptor() ([]byte, []int) {
 type Status int32
 
 const (
-       Status_STATUS_UNSPECIFIED   Status = 0
-       Status_STATUS_EXECUTING     Status = 1
-       Status_STATUS_FINISHED      Status = 2
-       Status_STATUS_ERROR         Status = 3
-       Status_STATUS_COMPILE_ERROR Status = 4
-       Status_STATUS_RUN_TIMEOUT   Status = 5
+       Status_STATUS_UNSPECIFIED      Status = 0
+       Status_STATUS_VALIDATING       Status = 1
+       Status_STATUS_VALIDATION_ERROR Status = 2
+       Status_STATUS_COMPILING        Status = 3
+       Status_STATUS_COMPILE_ERROR    Status = 4
+       Status_STATUS_EXECUTING        Status = 5
+       Status_STATUS_FINISHED         Status = 6
+       Status_STATUS_ERROR            Status = 7
+       Status_STATUS_RUN_TIMEOUT      Status = 8
 )
 
 // Enum value maps for Status.
 var (
        Status_name = map[int32]string{
                0: "STATUS_UNSPECIFIED",
-               1: "STATUS_EXECUTING",
-               2: "STATUS_FINISHED",
-               3: "STATUS_ERROR",
+               1: "STATUS_VALIDATING",
+               2: "STATUS_VALIDATION_ERROR",
+               3: "STATUS_COMPILING",
                4: "STATUS_COMPILE_ERROR",
-               5: "STATUS_RUN_TIMEOUT",
+               5: "STATUS_EXECUTING",
+               6: "STATUS_FINISHED",
+               7: "STATUS_ERROR",
+               8: "STATUS_RUN_TIMEOUT",
        }
        Status_value = map[string]int32{
-               "STATUS_UNSPECIFIED":   0,
-               "STATUS_EXECUTING":     1,
-               "STATUS_FINISHED":      2,
-               "STATUS_ERROR":         3,
-               "STATUS_COMPILE_ERROR": 4,
-               "STATUS_RUN_TIMEOUT":   5,
+               "STATUS_UNSPECIFIED":      0,
+               "STATUS_VALIDATING":       1,
+               "STATUS_VALIDATION_ERROR": 2,
+               "STATUS_COMPILING":        3,
+               "STATUS_COMPILE_ERROR":    4,
+               "STATUS_EXECUTING":        5,
+               "STATUS_FINISHED":         6,
+               "STATUS_ERROR":            7,
+               "STATUS_RUN_TIMEOUT":      8,
        }
 )
 
@@ -605,40 +614,44 @@ var file_api_v1_api_proto_rawDesc = []byte{
        0x44, 0x4b, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x10, 0x01, 0x12, 0x0a, 0x0a, 
0x06, 0x53, 0x44, 0x4b,
        0x5f, 0x47, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x44, 0x4b, 
0x5f, 0x50, 0x59, 0x54,
        0x48, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x44, 0x4b, 
0x5f, 0x53, 0x43, 0x49,
-       0x4f, 0x10, 0x04, 0x2a, 0x8f, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 
0x75, 0x73, 0x12, 0x16,
+       0x4f, 0x10, 0x04, 0x2a, 0xd9, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 
0x75, 0x73, 0x12, 0x16,
        0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 
0x50, 0x45, 0x43, 0x49,
-       0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 
0x41, 0x54, 0x55, 0x53,
-       0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 
0x12, 0x13, 0x0a, 0x0f,
-       0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 
0x48, 0x45, 0x44, 0x10,
-       0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 
0x45, 0x52, 0x52, 0x4f,
-       0x52, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 
0x53, 0x5f, 0x43, 0x4f,
-       0x4d, 0x50, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 
0x04, 0x12, 0x16, 0x0a,
-       0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 
0x54, 0x49, 0x4d, 0x45,
-       0x4f, 0x55, 0x54, 0x10, 0x05, 0x32, 0xb9, 0x02, 0x0a, 0x11, 0x50, 0x6c, 
0x61, 0x79, 0x67, 0x72,
-       0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 
0x3a, 0x0a, 0x07, 0x52,
-       0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 
0x2e, 0x76, 0x31, 0x2e,
-       0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 
0x73, 0x74, 0x1a, 0x17,
-       0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 
0x6f, 0x64, 0x65, 0x52,
-       0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x43, 
0x68, 0x65, 0x63, 0x6b,
-       0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 
0x2e, 0x76, 0x31, 0x2e,
-       0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 
0x65, 0x71, 0x75, 0x65,
-       0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 
0x43, 0x68, 0x65, 0x63,
-       0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 
0x6e, 0x73, 0x65, 0x12,
-       0x49, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 
0x70, 0x75, 0x74, 0x12,
-       0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 
0x52, 0x75, 0x6e, 0x4f,
-       0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 
0x1a, 0x1c, 0x2e, 0x61,
-       0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 
0x4f, 0x75, 0x74, 0x70,
-       0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 
0x0a, 0x10, 0x47, 0x65,
-       0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 
0x75, 0x74, 0x12, 0x1f,
-       0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 
0x6f, 0x6d, 0x70, 0x69,
-       0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 
0x65, 0x73, 0x74, 0x1a,
-       0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 
0x43, 0x6f, 0x6d, 0x70,
-       0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 
0x70, 0x6f, 0x6e, 0x73,
-       0x65, 0x42, 0x38, 0x5a, 0x36, 0x62, 0x65, 0x61, 0x6d, 0x2e, 0x61, 0x70, 
0x61, 0x63, 0x68, 0x65,
-       0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 
0x75, 0x6e, 0x64, 0x2f,
-       0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 
0x72, 0x6e, 0x61, 0x6c,
-       0x3b, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x62, 
0x06, 0x70, 0x72, 0x6f,
-       0x74, 0x6f, 0x33,
+       0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 
0x41, 0x54, 0x55, 0x53,
+       0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 
0x01, 0x12, 0x1b, 0x0a,
+       0x17, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x49, 
0x44, 0x41, 0x54, 0x49,
+       0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x14, 
0x0a, 0x10, 0x53, 0x54,
+       0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x49, 0x4c, 0x49, 
0x4e, 0x47, 0x10, 0x03,
+       0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 
0x4f, 0x4d, 0x50, 0x49,
+       0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 
0x0a, 0x10, 0x53, 0x54,
+       0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 
0x4e, 0x47, 0x10, 0x05,
+       0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 
0x49, 0x4e, 0x49, 0x53,
+       0x48, 0x45, 0x44, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 
0x54, 0x55, 0x53, 0x5f,
+       0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x53, 
0x54, 0x41, 0x54, 0x55,
+       0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 
0x54, 0x10, 0x08, 0x32,
+       0xb9, 0x02, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 
0x6e, 0x64, 0x53, 0x65,
+       0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x75, 0x6e, 
0x43, 0x6f, 0x64, 0x65,
+       0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 
0x6e, 0x43, 0x6f, 0x64,
+       0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 
0x70, 0x69, 0x2e, 0x76,
+       0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 
0x70, 0x6f, 0x6e, 0x73,
+       0x65, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 
0x61, 0x74, 0x75, 0x73,
+       0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 
0x65, 0x63, 0x6b, 0x53,
+       0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 
0x1a, 0x1b, 0x2e, 0x61,
+       0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 
0x74, 0x61, 0x74, 0x75,
+       0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 
0x0c, 0x47, 0x65, 0x74,
+       0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1b, 0x2e, 
0x61, 0x70, 0x69, 0x2e,
+       0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 
0x70, 0x75, 0x74, 0x52,
+       0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 
0x2e, 0x76, 0x31, 0x2e,
+       0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 
0x52, 0x65, 0x73, 0x70,
+       0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 
0x6f, 0x6d, 0x70, 0x69,
+       0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1f, 0x2e, 0x61, 
0x70, 0x69, 0x2e, 0x76,
+       0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 
0x4f, 0x75, 0x74, 0x70,
+       0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 
0x61, 0x70, 0x69, 0x2e,
+       0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 
0x65, 0x4f, 0x75, 0x74,
+       0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 
0x38, 0x5a, 0x36, 0x62,
+       0x65, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 
0x72, 0x67, 0x2f, 0x70,
+       0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x62, 0x61, 
0x63, 0x6b, 0x65, 0x6e,
+       0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3b, 0x70, 
0x6c, 0x61, 0x79, 0x67,
+       0x72, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 
0x33,
 }
 
 var (

Reply via email to