Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cloud_storage: Add manifest operations fuzzer #25089

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from

Conversation

Lazin
Copy link
Contributor

@Lazin Lazin commented Feb 14, 2025

The PR adds a new component called manifest_mutator which contains a partition_manifest instances and applies different operations to it. The examples of operations are 'add segment' or 'spill' or 'replace segment'. All operations are implemented similarly to how they are done in the ntp_archiver. So basically, if the archiver replicates STM commands in certain order then the mutator is doing the same thing.

The mutator is used to add two new fuzz tests which trigger different operations randomly. It can also be used to implement normal tests because it removes a lot of boilerplate. It's also used to add a new unit test that generates the data then triggers spillover then lets retention to remove all spillover manifests and all segments and then adds data again.

Backports Required

  • none - not a bug fix
  • none - this is a backport
  • none - issue does not exist in previous branches
  • none - papercut/not impactful enough to backport
  • v24.3.x
  • v24.2.x
  • v24.1.x

Release Notes

  • none

The manifest mutator implements different manifest operations in the
same way they are implemented in the ntp_archiver. The fuzz test uses
this object to drive changes to the manifest and validates the
consistency.

Signed-off-by: Evgeny Lazin <[email protected]>
list of operations supported by the fuzzer.

Signed-off-by: Evgeny Lazin <[email protected]>
@vbotbuildovich
Copy link
Collaborator

CI test results

test results on build#61878
test_id test_kind job_url test_status passed
cloud_storage_rpunit.cloud_storage_rpunit unit https://buildkite.com/redpanda/redpanda/builds/61878#019506be-87b0-47a5-a8af-4b23e3ce9b3d FAIL 0/2
cloud_storage_rpunit.cloud_storage_rpunit unit https://buildkite.com/redpanda/redpanda/builds/61878#019506be-87b1-4e9b-80eb-e0d050419b52 FAIL 0/2
rptest.tests.compaction_recovery_test.CompactionRecoveryTest.test_index_recovery ducktape https://buildkite.com/redpanda/redpanda/builds/61878#01950702-c5be-4838-a1c8-b394a69c5e06 FLAKY 1/2
rptest.tests.compaction_recovery_test.CompactionRecoveryTest.test_index_recovery ducktape https://buildkite.com/redpanda/redpanda/builds/61878#0195071c-433e-4355-80c9-c1f46b9e353b FLAKY 1/2
rptest.tests.compaction_recovery_test.CompactionRecoveryUpgradeTest.test_index_recovery_after_upgrade ducktape https://buildkite.com/redpanda/redpanda/builds/61878#0195071c-433b-48e5-b095-c42b2b9e5f8d FLAKY 1/2
rptest.tests.log_compaction_test.LogCompactionTest.compaction_stress_test.cleanup_policy=compact.delete.key_set_cardinality=1000.storage_compaction_key_map_memory_kb=10 ducktape https://buildkite.com/redpanda/redpanda/builds/61878#0195071c-433e-4355-80c9-c1f46b9e353b FLAKY 1/2
rptest.tests.log_compaction_test.LogCompactionTest.compaction_stress_test.cleanup_policy=compact.key_set_cardinality=1000.storage_compaction_key_map_memory_kb=3 ducktape https://buildkite.com/redpanda/redpanda/builds/61878#0195071c-433e-4355-80c9-c1f46b9e353b FLAKY 1/3
rptest.tests.write_caching_fi_e2e_test.WriteCachingFailureInjectionE2ETest.test_crash_all_with_consumer_group ducktape https://buildkite.com/redpanda/redpanda/builds/61878#01950702-c5be-4838-a1c8-b394a69c5e06 FLAKY 1/2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants