MCPcopy
hub / github.com/IBM/sarama / FuzzVersionedDecodeRequest

Function FuzzVersionedDecodeRequest

encoder_decoder_fuzz_test.go:18–78  ·  view source on GitHub ↗

FuzzVersionedDecodeRequest exercises every supported request decoder against arbitrary input. A decode error is a valid outcome; a panic is not.

(f *testing.F)

Source from the content-addressed store, hash-verified

16// FuzzVersionedDecodeRequest exercises every supported request decoder against
17// arbitrary input. A decode error is a valid outcome; a panic is not.
18func FuzzVersionedDecodeRequest(f *testing.F) {
19 for _, seed := range []struct {
20 key, version int16
21 body []byte
22 }{
23 {key: apiKeyProduce, version: 0, body: produceRequestEmpty},
24 {key: apiKeyProduce, version: 0, body: produceRequestHeader},
25 {key: apiKeyProduce, version: 0, body: produceRequestOneMessage},
26 {key: apiKeyProduce, version: 3, body: produceRequestOneRecord},
27 {key: apiKeyFetch, version: 0, body: fetchRequestNoBlocks},
28 {key: apiKeyFetch, version: 0, body: fetchRequestWithProperties},
29 {key: apiKeyFetch, version: 0, body: fetchRequestOneBlock},
30 {key: apiKeyFetch, version: 4, body: fetchRequestOneBlockV4},
31 {key: apiKeyFetch, version: 11, body: fetchRequestOneBlockV11},
32 {key: apiKeyFetch, version: 12, body: fetchRequestOneBlockV12},
33 {key: apiKeyListOffsets, version: 1, body: offsetRequestNoBlocksV1},
34 {key: apiKeyMetadata, version: 0, body: metadataRequestNoTopicsV0},
35 {key: apiKeyOffsetCommit, version: 0, body: offsetCommitRequestNoBlocksV0},
36 {key: apiKeyOffsetFetch, version: 0, body: offsetFetchRequestNoGroupNoPartitions},
37 {key: apiKeyFindCoordinator, version: 0, body: consumerMetadataRequestEmpty},
38 {key: apiKeyFindCoordinator, version: 1, body: findCoordinatorRequestConsumerGroup},
39 {key: apiKeyJoinGroup, version: 0, body: joinGroupRequestV0_NoProtocols},
40 {key: apiKeyHeartbeat, version: 0, body: basicHeartbeatRequestV0},
41 {key: apiKeyLeaveGroup, version: 0, body: basicLeaveGroupRequestV0},
42 {key: apiKeySyncGroup, version: 0, body: emptySyncGroupRequest},
43 {key: apiKeyDescribeGroups, version: 0, body: emptyDescribeGroupsRequest},
44 {key: apiKeyApiVersions, version: 0, body: apiVersionRequest},
45 {key: apiKeyCreateTopics, version: 0, body: createTopicsRequestV0},
46 {key: apiKeyDeleteTopics, version: 0, body: deleteTopicsRequest},
47 {key: apiKeyInitProducerId, version: 0, body: initProducerIDRequestNull},
48 {key: apiKeyTxnOffsetCommit, version: 0, body: txnOffsetCommitRequest},
49 {key: apiKeyDescribeAcls, version: 0, body: aclDescribeRequest},
50 {key: apiKeyCreateAcls, version: 0, body: aclCreateRequest},
51 {key: apiKeyDeleteAcls, version: 1, body: aclDeleteRequestNullsv1},
52 {key: apiKeyDescribeConfigs, version: 0, body: emptyDescribeConfigsRequest},
53 {key: apiKeyAlterConfigs, version: 0, body: emptyAlterConfigsRequest},
54 {key: apiKeyDescribeLogDirs, version: 0, body: emptyDescribeLogDirsRequest},
55 {key: apiKeySASLAuth, version: 0, body: saslAuthenticateRequest},
56 {key: apiKeyCreatePartitions, version: 0, body: createPartitionRequestNoAssignment},
57 {key: apiKeyDeleteGroups, version: 0, body: emptyDeleteGroupsRequest},
58 {key: apiKeyElectLeaders, version: 1, body: electLeadersRequestOneTopicV1},
59 {key: apiKeyIncrementalAlterConfigs, version: 0, body: emptyIncrementalAlterConfigsRequest},
60 {key: apiKeyAlterPartitionReassignments, version: 0, body: alterPartitionReassignmentsRequestNoBlock},
61 {key: apiKeyOffsetDelete, version: 0, body: emptyDeleteOffsetsRequest},
62 {key: apiKeyDescribeClientQuotas, version: 0, body: describeClientQuotasRequestAll},
63 {key: apiKeyAlterClientQuotas, version: 0, body: alterClientQuotasRequestSingleOp},
64 {key: apiKeyDescribeUserScramCredentials, version: 0, body: emptyDescribeUserScramCredentialsRequest},
65 {key: apiKeyAlterUserScramCredentials, version: 0, body: emptyAlterUserScramCredentialsRequest},
66 {key: apiKeyUpdateFeatures, version: 0, body: updateFeaturesRequestV0},
67 } {
68 f.Add(seed.key, seed.version, seed.body)
69 }
70 f.Fuzz(func(t *testing.T, key, version int16, in []byte) {
71 body := allocateBody(key, version)
72 if body == nil {
73 t.Skip()
74 }
75 defer fuzzPanic(t, "request", key, version, in)

Callers

nothing calls this directly

Calls 4

allocateBodyFunction · 0.85
fuzzPanicFunction · 0.85
versionedDecodeFunction · 0.85
AddMethod · 0.45

Tested by

no test coverage detected