blob: d212cef905a079d573e2254a69a4718a1ad7331e [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// Test protocol for kudu RPC.
syntax = "proto2";
package kudu.rpc_test;
import "kudu/rpc/rpc_header.proto";
import "kudu/rpc/rtest_diff_package.proto";
message AddRequestPB {
required uint32 x = 1;
required uint32 y = 2;
}
// Used by tests to simulate an old client which is missing
// a newly added required field.
message AddRequestPartialPB {
required uint32 x = 1;
}
message AddResponsePB {
required uint32 result = 1;
}
message SleepRequestPB {
required uint32 sleep_micros = 1;
// Used in rpc_stub-test: if this is true, it will respond from a different
// thread than the one that receives the request.
optional bool deferred = 2 [ default = false ];
// If set, returns a CalculatorError response.
optional bool return_app_error = 3 [ default = false ];
// Used in rpc-test: if this is set to true and no client timeout is set,
// the service will respond to the client with an error.
optional bool client_timeout_defined = 4 [ default = false ];
}
message SleepResponsePB {
}
message SleepWithSidecarRequestPB {
required uint32 sleep_micros = 1;
required uint32 pattern = 2;
required uint32 num_repetitions = 3;
required uint32 sidecar_idx = 4;
}
message SleepWithSidecarResponsePB {
}
message SendTwoStringsRequestPB {
required uint32 random_seed = 1;
required uint64 size1 = 2;
required uint64 size2 = 3;
}
message SendTwoStringsResponsePB {
required uint32 sidecar1 = 1;
required uint32 sidecar2 = 2;
}
// Push two strings to the server as part of the request, in sidecars.
message PushTwoStringsRequestPB {
required uint32 sidecar1_idx = 1;
required uint32 sidecar2_idx = 2;
}
message PushTwoStringsResponsePB {
required uint32 size1 = 1;
required string data1 = 2;
required uint32 size2 = 3;
required string data2 = 4;
}
message EchoRequestPB {
required string data = 1;
}
message EchoResponsePB {
required string data = 1;
}
message WhoAmIRequestPB {
}
message WhoAmIResponsePB {
required kudu.rpc.UserInformationPB credentials = 1;
required string address = 2;
}
message CalculatorError {
extend kudu.rpc.ErrorStatusPB {
optional CalculatorError app_error_ext = 101;
}
required string extra_error_data = 1;
}
message PanicRequestPB {}
message PanicResponsePB {}
message TestInvalidResponseRequestPB {
enum ErrorType {
MISSING_REQUIRED_FIELD = 1;
RESPONSE_TOO_LARGE = 2;
}
required ErrorType error_type = 1;
}
message TestInvalidResponseResponsePB {
required bytes response = 1;
}
enum FeatureFlags {
UNKNOWN=0;
FOO=1;
}
message ExactlyOnceRequestPB {
optional uint32 sleep_for_ms = 1 [default = 0];
required uint32 value_to_add = 2;
optional bool randomly_fail = 3 [default = false];
}
message ExactlyOnceResponsePB {
required uint32 current_val = 1;
required fixed64 current_time_micros = 2;
}
service CalculatorService {
option (kudu.rpc.default_authz_method) = "AuthorizeDisallowAlice";
rpc Add(AddRequestPB) returns(AddResponsePB);
rpc Sleep(SleepRequestPB) returns(SleepResponsePB) {
option (kudu.rpc.authz_method) = "AuthorizeDisallowBob";
};
rpc Echo(EchoRequestPB) returns(EchoResponsePB);
rpc WhoAmI(WhoAmIRequestPB) returns (WhoAmIResponsePB);
rpc TestArgumentsInDiffPackage(kudu.rpc_test_diff_package.ReqDiffPackagePB)
returns(kudu.rpc_test_diff_package.RespDiffPackagePB);
rpc Panic(PanicRequestPB) returns (PanicResponsePB);
rpc AddExactlyOnce(ExactlyOnceRequestPB) returns (ExactlyOnceResponsePB) {
option (kudu.rpc.track_rpc_result) = true;
}
rpc TestInvalidResponse(TestInvalidResponseRequestPB) returns (TestInvalidResponseResponsePB);
}