Upgrade API fuzzer to be a proto based structural fuzzer (#27564)

* start cleaning up

* progress

* Automated change: Fix sanity tests

* progress

* Automated change: Fix sanity tests

* progress

* get this running again

* Automated change: Fix sanity tests

* ugh

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
pull/27644/head
Craig Tiller 4 years ago committed by GitHub
parent b048618f11
commit 76dd0474e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      test/core/end2end/fuzzers/BUILD
  2. 1289
      test/core/end2end/fuzzers/api_fuzzer.cc
  3. 185
      test/core/end2end/fuzzers/api_fuzzer.proto

@ -18,14 +18,15 @@ grpc_package(name = "test/core/end2end/fuzzers")
licenses(["notice"])
load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer")
load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer", "grpc_proto_fuzzer")
grpc_fuzzer(
grpc_proto_fuzzer(
name = "api_fuzzer",
size = "enormous",
srcs = ["api_fuzzer.cc"],
corpus = "api_fuzzer_corpus",
language = "C++",
proto = "api_fuzzer.proto",
tags = ["no_windows"],
deps = [
"//:gpr",

File diff suppressed because it is too large Load Diff

@ -0,0 +1,185 @@
// Copyright 2021 gRPC authors.
//
// Licensed 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.
syntax = "proto3";
package api_fuzzer;
message Empty {}
message ByteSlice {
bytes value = 1;
bool intern = 2;
}
message StringSlice {
string value = 1;
bool intern = 2;
}
message ResourceQuota {}
message ChannelArg {
string key = 1;
oneof value {
string str = 2;
int64 i = 3;
ResourceQuota resource_quota = 4;
}
}
message CredArtifact {
oneof type {
string custom = 1;
int32 builtin = 2;
}
}
message SslChannelCreds {
CredArtifact root_certs = 1;
CredArtifact private_key = 2;
CredArtifact certs = 3;
}
message CompositeCallCreds {
repeated CallCreds call_creds = 1;
}
message IAM {
string auth_token = 1;
string auth_selector = 2;
}
message CallCreds {
oneof type {
CompositeCallCreds composite_call_creds = 1;
string access_token = 2;
IAM iam = 3;
Empty null = 4;
}
}
message CompositeChannelCreds {
ChannelCreds channel_creds = 1;
CallCreds call_creds = 2;
}
message ChannelCreds {
oneof type {
SslChannelCreds ssl_channel_creds = 1;
CompositeChannelCreds composite_channel_creds = 2;
Empty null = 3;
}
}
message Metadatum {
StringSlice key = 1;
ByteSlice value = 2;
}
message CreateChannel {
string target = 1;
repeated ChannelArg channel_args = 2;
ChannelCreds channel_creds = 3;
}
message CreateServer {
repeated ChannelArg channel_args = 1;
}
message CreateCall {
uint32 propagation_mask = 1;
StringSlice method = 2;
StringSlice host = 3;
int32 timeout = 4;
}
message SendInitialMetadata {
repeated Metadatum metadata = 1;
}
message SendMessage {
ByteSlice message = 1;
}
message SendCloseFromClient {
}
message SendStatusFromServer {
repeated Metadatum metadata = 1;
uint32 status_code = 2;
ByteSlice status_details = 3;
}
message ReceiveInitialMetadata {
}
message ReceiveMessage {
}
message ReceiveStatusOnClient {
}
message ReceiveCloseOnServer {
}
message BatchOp {
oneof op {
SendInitialMetadata send_initial_metadata = 1;
SendMessage send_message = 2;
SendCloseFromClient send_close_from_client = 3;
SendStatusFromServer send_status_from_server = 4;
ReceiveInitialMetadata receive_initial_metadata = 5;
ReceiveMessage receive_message = 6;
ReceiveStatusOnClient receive_status_on_client = 7;
ReceiveCloseOnServer receive_close_on_server = 8;
int32 illegal_op = 9;
}
uint32 flags = 100;
}
message Batch {
repeated BatchOp operations = 1;
}
message Action {
oneof type {
Empty poll_cq = 1;
uint32 advance_time = 2;
CreateChannel create_channel = 3;
Empty close_channel = 4;
CreateServer create_server = 5;
Empty shutdown_server = 6;
Empty cancel_all_calls_if_shutdown = 7;
Empty destroy_server_if_ready = 8;
bool check_connectivity = 9;
uint32 watch_connectivity = 10;
CreateCall create_call = 11;
Empty change_active_call = 12;
Batch queue_batch = 13;
Empty cancel_call = 14;
Empty get_peer = 15;
Empty get_target = 16;
Empty ping = 17;
string enable_tracer = 18;
string disable_tracer = 19;
Empty request_call = 20;
Empty destroy_call = 21;
uint32 resize_resource_quota = 22;
}
}
message Msg {
repeated Action actions = 1;
}
Loading…
Cancel
Save