Proto commits in google/fuzztest

These 32 commits are when the Protocol Buffers files have changed:

Commit:429d46c
Author:László Szekeres
Committer:Copybara-Service

Change `centipede` namespace to `fuzztest::internal` (no functional change). PiperOrigin-RevId: 745605983

The documentation is generated from this commit.

Commit:b35469f
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

Avoid initializing infinitely recursive sub-fields. Given that sub-fields may not get initialized in the smoke-test, it could be unexpected for users to encounter this issue during fuzzing. Instead of producing a failure, we produce a warning and avoid initializing them. In addition, the recursion loops are detected over fields and not protos because the customizations are done over fields and two fields of same type could have different customizations, which can affect the recursion analysis. PiperOrigin-RevId: 726556282

Commit:5dc1f1e
Author:Filip Niksic
Committer:Copybara-Service

Fix a flaky end-to-end test `UnitTestModeTest.ProtobufOfMutatesTheProto`. PiperOrigin-RevId: 676887028

Commit:a29e31c
Author:Xinhao Yuan
Committer:Copybara-Service

#Centipede Split the protobuf-related dependencies out from the core runtime. This is to avoid involving protobuf in fuzzers so it can be used in consumer projects that have specific constraints for protobuf. PiperOrigin-RevId: 669419511

Commit:ff36d85
Author:Xinhao Yuan
Committer:Copybara-Service

No public description PiperOrigin-RevId: 668035717

Commit:05f1afb
Author:Markus Kusano
Committer:Copybara-Service

#Centipede Add support for directly passing a corpus shard in a SeedCorpusSource PiperOrigin-RevId: 647474909

Commit:951aada
Author:FuzzTest Team
Committer:Copybara-Service

No public description PiperOrigin-RevId: 617257551

Commit:12dfa72
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

No public description PiperOrigin-RevId: 616849387

Commit:ed902e4
Author:Filip Niksic
Committer:Copybara-Service

Add a variant of the Maze puzzle with doors and keys along the way. PiperOrigin-RevId: 616840381

Commit:0239500
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

No public description PiperOrigin-RevId: 616830147

Commit:6a7245c
Author:FuzzTest Team
Committer:Copybara-Service

No public description PiperOrigin-RevId: 615517628

Commit:393ae75
Author:FuzzTest Team
Committer:Copybara-Service

Add a graph reachability puzzle. PiperOrigin-RevId: 615341103

Commit:bbed20c
Author:László Szekeres
Committer:Copybara-Service

Add maze puzzle. PiperOrigin-RevId: 615195474

Commit:3c5fc52
Author:FuzzTest Team
Committer:Copybara-Service

Add web search proto puzzle. PiperOrigin-RevId: 608660172

Commit:c213d41
Author:Markus Kusano
Committer:Copybara-Service

Add variants of string proto puzzles using a simpler input proto. PiperOrigin-RevId: 606714492

Commit:b67bf91
Author:Markus Kusano
Committer:Copybara-Service

Add Robo Courier proto puzzle PiperOrigin-RevId: 606406024

Commit:87845fe
Author:Markus Kusano
Committer:Copybara-Service

Add puzzle evaluating a 4 function calculator operation. PiperOrigin-RevId: 606401157

Commit:ad41f7a
Author:Markus Kusano
Committer:Copybara-Service

Add puzzle using a proto with a switch statement used in a loop (state machine). PiperOrigin-RevId: 606400746

Commit:6608add
Author:FuzzTest Team
Committer:Copybara-Service

Save --analyze coverage information to a proto PiperOrigin-RevId: 561133459

Commit:920ce48
Author:Sergey Shevchenko
Committer:Copybara-Service

#Centipede Define proto to configure seed corpus generation Example: ``` # Self-seed from 5 completed previous iterations. sources: { dir_glob: "./centipede/run_*.fuzzed" # ".fuzzed" picks up completed dirs only shard_rel_glob: "distilled*.*" num_recent_dirs: 5 fraction: 0.5 } # Mix in 10% of the latest Simics iteration (even an active one). sources: { dir_glob: "/cns/iq-d/home/platforms-sdc-silifuzz/corpus/pipeline/simics.default.self/run_*" # no ".fuzzed" picks up everything shard_rel_glob: "corpus*.*" # use running corpus.* shards, not distilled*.* num_recent_dirs: 1 fraction: 0.1 } # Also mix in 2000 elements from 2 previous Unicorn iterations. sources: { dir_glob: "/cns/iq-d/home/platforms-sdc-silifuzz/corpus/pipeline/unicorn_x86_64.default.self/run_*" shard_rel_glob: "distilled*.*" num_recent_dirs: 2 count: 2000 } # Write the result to `<.pb's parent dir>/centipede` destination: { dir_path: "./centipede" shard_rel_glob: "corpus.*" shard_index_digits: 6 num_shards: 4 } ``` PiperOrigin-RevId: 557682202

Commit:0f0adb7
Author:Yongheng Chen
Committer:Copybara-Service

No public description PiperOrigin-RevId: 554371233

Commit:d69f326
Author:Yongheng Chen
Committer:Copybara-Service

No public description PiperOrigin-RevId: 552932557

Commit:0087fe0
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

Add full support for known extension fields. Serialization and parsing extension fields were supported before. Other missing capabilities including corpus validation, domain initialization, domain mutation, domain customization, and recursion detection are added. PiperOrigin-RevId: 551832440

Commit:3dbb0bc
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

Add full support for known extension fields. Serialization and parsing extension fields were supported before. Other missing capabilities including corpus validation, domain initialization, domain mutation, domain customization, and recursion detection are added. PiperOrigin-RevId: 548714204

Commit:af8c735
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

Add full support for known extension fields. Serialization and parsing extension fields were supported before. Other missing capabilities including corpus validation, domain initialization, domain mutation, domain customization, and recursion detection are added. PiperOrigin-RevId: 548676590

Commit:1af1306
Author:Todd Lipcon
Committer:Copybara-Service

Internal change PiperOrigin-RevId: 526122507

Commit:7fcea31
Author:László Szekeres
Committer:Copybara-Service

Readability improvements. - Document Domain concept. - Make the following renames: GetValue() -> CorpusToUserValue() FromValue() -> UserToCorpusValue() SerializeCorpus() -> CorpusToIrValue() ParseCorpus() -> IrToCorpusValue() T -> UserValueT CorpusType -> CorpusValueT IRObject -> IrValue value_type -> user_value_t corpus_type -> corpus_value_t value_type_t<> -> user_value_t_of<> corpus_type_t<> -> corpus_value_t_of<> GenericDomainCorpusType -> GenericCorpusValue RequireCustomCorpusType -> RequireCustomCorpusValueT PiperOrigin-RevId: 526091807

Commit:58b4e70
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

Set nullness of oneof fields when nullness is not defined explicitely. As a side-effect, WithOneofAlwaysSet needs to be called before customizing oneof fields. PiperOrigin-RevId: 505196838

Commit:d550948
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

Detects recursions through oneofs. PiperOrigin-RevId: 503220736

Commit:6036085
Author:Filip Niksic
Committer:Copybara-Service

Fix the flaky test ProtocolBuffer.ArbitraryWithRequiredHasAllMutations. The test was flaky due to repeated and map fields in TestProtobufWithRequired, which were bloating the proto after repeated mutation and reducing the chance of mutating the fields that were interesting for the test. To fix the test, I: - Removed the map field `map_str`, which was not used in any way. - Broke the test into multiple tests that each test a single behavior. For example, there's now a dedicated test to check that an optional field is eventually unset. In that test we can restrict the proto domain by leaving all repeated, map, and other optional fields unset in order to limit the total number of fields and maximize the probability that the desired field gets unset. With this, we only need 11000 iterations to guarantee that the test will almost always succeed, whereas if we left the test unbroken, we would have needed 36000 iterations for the same guarantee, risking flakiness due to timeouts. PiperOrigin-RevId: 502625815

Commit:9ffe366
Author:Hadi Ravanbakhsh
Committer:Copybara-Service

Fixes map field issues with required fields. There are two issues with the required fields, which are addressed here: (1) Map field values could be messages with required fields. We treat map field values that are messages as required. This way, we make sure the `value` is initialized while the message itself could be empty. (2) There could be required fields next to map fields. To address this, we fix serialization-deserialization of map fields to remove duplicates. `corpus_copy` contains only one field (a map field) which goes through a mutation. So, the serialization should be done partially and we should not be worried about other required fields. PiperOrigin-RevId: 499842705

Commit:658be28
Author:FuzzTest Team
Committer:Filip Niksic

Internal change PiperOrigin-RevId: 473826475