transport_security_common_api_test.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2018 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
20 
21 #include <stdbool.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 
25 const size_t kMaxRpcVersionMajor = 3;
26 const size_t kMaxRpcVersionMinor = 2;
27 const size_t kMinRpcVersionMajor = 2;
28 const size_t kMinRpcVersionMinor = 1;
29 
32  grpc_gcp_rpc_protocol_versions* r_versions) {
33  GPR_ASSERT(l_versions != nullptr && r_versions != nullptr);
34  if ((l_versions->max_rpc_version.major !=
35  r_versions->max_rpc_version.major) ||
36  (l_versions->max_rpc_version.minor !=
37  r_versions->max_rpc_version.minor)) {
38  return false;
39  }
40  if ((l_versions->min_rpc_version.major !=
41  r_versions->min_rpc_version.major) ||
42  (l_versions->min_rpc_version.minor !=
43  r_versions->min_rpc_version.minor)) {
44  return false;
45  }
46  return true;
47 }
48 
49 static void test_success() {
51  grpc_gcp_rpc_protocol_versions decoded_version;
56  /* Serializes to grpc slice. */
57  grpc_slice encoded_slice;
59  /* Deserializes and compares with the original version. */
60  GPR_ASSERT(
61  grpc_gcp_rpc_protocol_versions_decode(encoded_slice, &decoded_version));
63  grpc_slice_unref(encoded_slice);
64 }
65 
66 static void test_failure() {
67  grpc_gcp_rpc_protocol_versions version, decoded_version;
68  grpc_slice encoded_slice;
69  /* Test for invalid arguments. */
78  GPR_ASSERT(!grpc_gcp_rpc_protocol_versions_encode(nullptr, &encoded_slice));
80  GPR_ASSERT(!grpc_gcp_rpc_protocol_versions_decode(encoded_slice, nullptr));
81  /* Test for upb decode. */
84  &encoded_slice, GRPC_SLICE_LENGTH(encoded_slice) - 1);
85  grpc_slice_unref(encoded_slice);
86  GPR_ASSERT(
87  !grpc_gcp_rpc_protocol_versions_decode(bad_slice, &decoded_version));
88  grpc_slice_unref(bad_slice);
89 }
90 
91 static void test_copy() {
100 }
101 
102 static void test_check_success() {
105  grpc_gcp_rpc_protocol_versions_version highest_common_version;
106  /* test equality. */
116  (const grpc_gcp_rpc_protocol_versions*)&v1,
117  (const grpc_gcp_rpc_protocol_versions*)&v2,
118  &highest_common_version) == 1);
120  &highest_common_version, &v1.max_rpc_version) == 0);
121 
122  /* test inequality. */
132  (const grpc_gcp_rpc_protocol_versions*)&v1,
133  (const grpc_gcp_rpc_protocol_versions*)&v2,
134  &highest_common_version) == 1);
136  &highest_common_version, &v2.max_rpc_version) == 0);
137 }
138 
139 static void test_check_failure() {
142  grpc_gcp_rpc_protocol_versions_version highest_common_version;
143 
153  (const grpc_gcp_rpc_protocol_versions*)&v1,
154  (const grpc_gcp_rpc_protocol_versions*)&v2,
155  &highest_common_version) == 0);
156 }
157 
158 int main(int /*argc*/, char** /*argv*/) {
159  /* Run tests. */
160  test_success();
161  test_failure();
162  test_copy();
165  return 0;
166 }
test_copy
static void test_copy()
Definition: transport_security_common_api_test.cc:91
grpc_slice_unref
GPRAPI void grpc_slice_unref(grpc_slice s)
Definition: slice_api.cc:32
test_failure
static void test_failure()
Definition: transport_security_common_api_test.cc:66
kMinRpcVersionMinor
const size_t kMinRpcVersionMinor
Definition: transport_security_common_api_test.cc:28
main
int main(int, char **)
Definition: transport_security_common_api_test.cc:158
version
Definition: version.py:1
_grpc_gcp_RpcProtocolVersions::max_rpc_version
grpc_gcp_rpc_protocol_versions_version max_rpc_version
Definition: transport_security_common_api.h:39
grpc_gcp_rpc_protocol_versions_decode
bool grpc_gcp_rpc_protocol_versions_decode(const grpc_slice &slice, grpc_gcp_rpc_protocol_versions *versions)
Definition: transport_security_common_api.cc:89
test_check_success
static void test_check_success()
Definition: transport_security_common_api_test.cc:102
grpc_gcp_rpc_protocol_versions_encode
bool grpc_gcp_rpc_protocol_versions_encode(const grpc_gcp_rpc_protocol_versions *versions, grpc_slice *slice)
Definition: transport_security_common_api.cc:53
kMaxRpcVersionMinor
const size_t kMaxRpcVersionMinor
Definition: transport_security_common_api_test.cc:26
kMaxRpcVersionMajor
const size_t kMaxRpcVersionMajor
Definition: transport_security_common_api_test.cc:25
GPR_ASSERT
#define GPR_ASSERT(x)
Definition: include/grpc/impl/codegen/log.h:94
conf.version
string version
Definition: doc/python/sphinx/conf.py:36
grpc_slice
Definition: include/grpc/impl/codegen/slice.h:65
grpc_gcp_rpc_protocol_versions_check
bool grpc_gcp_rpc_protocol_versions_check(const grpc_gcp_rpc_protocol_versions *local_versions, const grpc_gcp_rpc_protocol_versions *peer_versions, grpc_gcp_rpc_protocol_versions_version *highest_common_version)
Definition: transport_security_common_api.cc:194
grpc_gcp_rpc_protocol_versions_set_min
bool grpc_gcp_rpc_protocol_versions_set_min(grpc_gcp_rpc_protocol_versions *versions, uint32_t min_major, uint32_t min_minor)
Definition: transport_security_common_api.cc:39
_grpc_gcp_RpcProtocolVersions_Version::major
uint32_t major
Definition: transport_security_common_api.h:33
_grpc_gcp_RpcProtocolVersions::min_rpc_version
grpc_gcp_rpc_protocol_versions_version min_rpc_version
Definition: transport_security_common_api.h:40
GRPC_SLICE_LENGTH
#define GRPC_SLICE_LENGTH(slice)
Definition: include/grpc/impl/codegen/slice.h:104
test_check_failure
static void test_check_failure()
Definition: transport_security_common_api_test.cc:139
grpc_core::internal::grpc_gcp_rpc_protocol_version_compare
int grpc_gcp_rpc_protocol_version_compare(const grpc_gcp_rpc_protocol_versions_version *v1, const grpc_gcp_rpc_protocol_versions_version *v2)
Definition: transport_security_common_api.cc:177
_grpc_gcp_RpcProtocolVersions_Version::minor
uint32_t minor
Definition: transport_security_common_api.h:34
transport_security_common_api.h
grpc_gcp_rpc_protocol_versions_copy
bool grpc_gcp_rpc_protocol_versions_copy(const grpc_gcp_rpc_protocol_versions *src, grpc_gcp_rpc_protocol_versions *dst)
Definition: transport_security_common_api.cc:154
grpc_slice_split_head
GPRAPI grpc_slice grpc_slice_split_head(grpc_slice *s, size_t split)
Definition: slice/slice.cc:347
grpc_gcp_rpc_protocol_versions_set_max
bool grpc_gcp_rpc_protocol_versions_set_max(grpc_gcp_rpc_protocol_versions *versions, uint32_t max_major, uint32_t max_minor)
Definition: transport_security_common_api.cc:25
_grpc_gcp_RpcProtocolVersions_Version
Definition: transport_security_common_api.h:32
test_success
static void test_success()
Definition: transport_security_common_api_test.cc:49
_grpc_gcp_RpcProtocolVersions
Definition: transport_security_common_api.h:38
kMinRpcVersionMajor
const size_t kMinRpcVersionMajor
Definition: transport_security_common_api_test.cc:27
grpc_gcp_rpc_protocol_versions_equal
static bool grpc_gcp_rpc_protocol_versions_equal(grpc_gcp_rpc_protocol_versions *l_versions, grpc_gcp_rpc_protocol_versions *r_versions)
Definition: transport_security_common_api_test.cc:30


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:40