|
|
@ -38,22 +38,25 @@ |
|
|
|
#include "test/core/end2end/cq_verifier.h" |
|
|
|
#include "test/core/end2end/cq_verifier.h" |
|
|
|
#include "src/core/surface/server.h" |
|
|
|
#include "src/core/surface/server.h" |
|
|
|
|
|
|
|
|
|
|
|
#define PFX_STR \ |
|
|
|
#define PFX_STR \ |
|
|
|
"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" \
|
|
|
|
"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" \
|
|
|
|
"\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* settings frame */ \
|
|
|
|
"\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* settings frame */ \
|
|
|
|
"\x00\x00\xd0\x01\x04\x00\x00\x00\x01" \
|
|
|
|
"\x00\x00\xd0\x01\x04\x00\x00\x00\x01" \
|
|
|
|
"\x10\x05:path\x0f/registered/bar" \
|
|
|
|
"\x10\x05:path\x0f/registered/bar" \
|
|
|
|
"\x10\x07:scheme\x04http" \
|
|
|
|
"\x10\x07:scheme\x04http" \
|
|
|
|
"\x10\x07:method\x04POST" \
|
|
|
|
"\x10\x07:method\x04POST" \
|
|
|
|
"\x10\x0a:authority\x09localhost" \
|
|
|
|
"\x10\x0a:authority\x09localhost" \
|
|
|
|
"\x10\x0c""content-type\x10""application/grpc" \
|
|
|
|
"\x10\x0c" \
|
|
|
|
"\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \
|
|
|
|
"content-type\x10" \
|
|
|
|
"\x10\x02te\x08trailers" \
|
|
|
|
"application/grpc" \
|
|
|
|
|
|
|
|
"\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \
|
|
|
|
|
|
|
|
"\x10\x02te\x08trailers" \
|
|
|
|
"\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)" |
|
|
|
"\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)" |
|
|
|
|
|
|
|
|
|
|
|
static void *tag(gpr_intptr t) { return (void *)t; } |
|
|
|
static void *tag(gpr_intptr t) { return (void *)t; } |
|
|
|
|
|
|
|
|
|
|
|
static void verifier_succeeds(grpc_server *server, grpc_completion_queue *cq, void *registered_method) { |
|
|
|
static void verifier_succeeds(grpc_server *server, grpc_completion_queue *cq, |
|
|
|
|
|
|
|
void *registered_method) { |
|
|
|
grpc_call_error error; |
|
|
|
grpc_call_error error; |
|
|
|
grpc_call *s; |
|
|
|
grpc_call *s; |
|
|
|
cq_verifier *cqv = cq_verifier_create(cq); |
|
|
|
cq_verifier *cqv = cq_verifier_create(cq); |
|
|
@ -63,8 +66,9 @@ static void verifier_succeeds(grpc_server *server, grpc_completion_queue *cq, vo |
|
|
|
|
|
|
|
|
|
|
|
grpc_metadata_array_init(&request_metadata_recv); |
|
|
|
grpc_metadata_array_init(&request_metadata_recv); |
|
|
|
|
|
|
|
|
|
|
|
error = grpc_server_request_registered_call(server, registered_method, &s, &deadline, |
|
|
|
error = grpc_server_request_registered_call(server, registered_method, &s, |
|
|
|
&request_metadata_recv, &payload, cq, cq, tag(101)); |
|
|
|
&deadline, &request_metadata_recv, |
|
|
|
|
|
|
|
&payload, cq, cq, tag(101)); |
|
|
|
GPR_ASSERT(GRPC_CALL_OK == error); |
|
|
|
GPR_ASSERT(GRPC_CALL_OK == error); |
|
|
|
cq_expect_completion(cqv, tag(101), 1); |
|
|
|
cq_expect_completion(cqv, tag(101), 1); |
|
|
|
cq_verify(cqv); |
|
|
|
cq_verify(cqv); |
|
|
@ -77,7 +81,8 @@ static void verifier_succeeds(grpc_server *server, grpc_completion_queue *cq, vo |
|
|
|
cq_verifier_destroy(cqv); |
|
|
|
cq_verifier_destroy(cqv); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void verifier_fails(grpc_server *server, grpc_completion_queue *cq, void *registered_method) { |
|
|
|
static void verifier_fails(grpc_server *server, grpc_completion_queue *cq, |
|
|
|
|
|
|
|
void *registered_method) { |
|
|
|
grpc_call_error error; |
|
|
|
grpc_call_error error; |
|
|
|
grpc_call *s; |
|
|
|
grpc_call *s; |
|
|
|
cq_verifier *cqv = cq_verifier_create(cq); |
|
|
|
cq_verifier *cqv = cq_verifier_create(cq); |
|
|
@ -87,8 +92,9 @@ static void verifier_fails(grpc_server *server, grpc_completion_queue *cq, void |
|
|
|
|
|
|
|
|
|
|
|
grpc_metadata_array_init(&request_metadata_recv); |
|
|
|
grpc_metadata_array_init(&request_metadata_recv); |
|
|
|
|
|
|
|
|
|
|
|
error = grpc_server_request_registered_call(server, registered_method, &s, &deadline, |
|
|
|
error = grpc_server_request_registered_call(server, registered_method, &s, |
|
|
|
&request_metadata_recv, &payload, cq, cq, tag(101)); |
|
|
|
&deadline, &request_metadata_recv, |
|
|
|
|
|
|
|
&payload, cq, cq, tag(101)); |
|
|
|
GPR_ASSERT(GRPC_CALL_OK == error); |
|
|
|
GPR_ASSERT(GRPC_CALL_OK == error); |
|
|
|
cq_expect_completion(cqv, tag(101), 1); |
|
|
|
cq_expect_completion(cqv, tag(101), 1); |
|
|
|
cq_verify(cqv); |
|
|
|
cq_verify(cqv); |
|
|
@ -103,18 +109,47 @@ static void verifier_fails(grpc_server *server, grpc_completion_queue *cq, void |
|
|
|
int main(int argc, char **argv) { |
|
|
|
int main(int argc, char **argv) { |
|
|
|
grpc_test_init(argc, argv); |
|
|
|
grpc_test_init(argc, argv); |
|
|
|
|
|
|
|
|
|
|
|
/* body generated with tools/codegen/core/gen_server_registered_method_bad_client_test_body.py */ |
|
|
|
/* body generated with
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x00\x00\x00\x00\x00\x00\x01", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
* tools/codegen/core/gen_server_registered_method_bad_client_test_body.py */ |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
PFX_STR "\x00\x00\x00\x00\x00\x00\x00\x00\x01", |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_succeeds, PFX_STR "\x00\x00\x05\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00", 0); |
|
|
|
PFX_STR "\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00", |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_succeeds, PFX_STR "\x00\x00\x06\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00", 0); |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
"\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00", |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR "\x00\x00\x06\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00", GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_succeeds, PFX_STR "\x00\x00\x07\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00", 0); |
|
|
|
GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR |
|
|
|
|
|
|
|
"\x00\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00", |
|
|
|
|
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST( |
|
|
|
|
|
|
|
verifier_fails, |
|
|
|
|
|
|
|
PFX_STR "\x00\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", |
|
|
|
|
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST( |
|
|
|
|
|
|
|
verifier_succeeds, |
|
|
|
|
|
|
|
PFX_STR "\x00\x00\x05\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00", 0); |
|
|
|
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST( |
|
|
|
|
|
|
|
verifier_fails, |
|
|
|
|
|
|
|
PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01", |
|
|
|
|
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST( |
|
|
|
|
|
|
|
verifier_succeeds, |
|
|
|
|
|
|
|
PFX_STR "\x00\x00\x06\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00", |
|
|
|
|
|
|
|
0); |
|
|
|
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST( |
|
|
|
|
|
|
|
verifier_fails, |
|
|
|
|
|
|
|
PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02", |
|
|
|
|
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST( |
|
|
|
|
|
|
|
verifier_fails, |
|
|
|
|
|
|
|
PFX_STR "\x00\x00\x06\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00", |
|
|
|
|
|
|
|
GRPC_BAD_CLIENT_DISCONNECT); |
|
|
|
|
|
|
|
GRPC_RUN_BAD_CLIENT_TEST( |
|
|
|
|
|
|
|
verifier_succeeds, PFX_STR |
|
|
|
|
|
|
|
"\x00\x00\x07\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00", |
|
|
|
|
|
|
|
0); |
|
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|