Feature/storage/add cv stress tests#49077
Draft
browndav-msft wants to merge 6 commits intoAzure:feature/storage/content-validationfrom
Draft
Feature/storage/add cv stress tests#49077browndav-msft wants to merge 6 commits intoAzure:feature/storage/content-validationfrom
browndav-msft wants to merge 6 commits intoAzure:feature/storage/content-validationfrom
Conversation
Member
browndav-msft
commented
May 6, 2026
- add content validation stress tests
- merge in changes stress test fix
* removed enableDeterministic * change .delete() to .deleteIfExists() * remove Sinks.EmitFailureHandler.FAIL_FAST from CrcInputStream - read functions had FAIL_FAST which would throw an error when the stream had reached then end and we wanted to read from the stream again. So we removed from both reads. - refactor code so that the exit criteria is a tthe beginning - refactor the emitContentInfo for dry * prevent crashes on reattempted close on stream - changed emitValue to tryEmitValue - remove Sinks.EmitFailureHandler.FAIL_FAST so that multiple closes does not cause an error to be thrown * fix telemetry so that it doesnt swallow errors * roll back two deps because they were causing failures in the containers - opentelemetry-runtime-telemetry-java8 from 2.24.0-alpha -> 2.15.0-alpha - opentelemetry-logback-appender-1.0 from 2.24.0-alpha -> 2.15.0-alpha * rollback azure-client-sdk-parent linting extensions from 1.0.0-beta.2 t0 beta.1 * revert linting extensions to beta2 * remove comments with old code * add logging for errors * remove catches for double close issue and okay status * recursively delete files then delete the directory * change to sync deletes, refactor for easier reading * restructing share clean up so super calls only once * incorporate copilot suggestions * incorporate copilot suggestions * incorporate copilot suggestions * incorporate copilot suggestions * fix all deletes to make sync and wrap in try-catch * fix tests so that super.globalCleanupAsync() is only called once * change telemetry to loggin only returns final state instead of failed retries when ultimately successful * undo versio downgrade for linting-extensions * Fixing spacing in error messages Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * refactor datalake delete all so that it is easier to read * refactor runAsync in ShareScenarioBase so retry failures dont show as failures upon success --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Export the fault injector certificate as PEM and wait for it before importing it into the Java truststore so storage stress tests fail fast instead of hitting PKIX errors. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds new Azure Storage Blob stress scenarios that exercise download response content validation (CRC/structured message) and updates the stress-job fault-injector certificate flow to be more reliable when importing the injector’s cert into the JVM truststore.
Changes:
- Added multiple new
ContentValidation*Blob stress scenarios plus a dedicated options type to enable/chooseContentValidationAlgorithm. - Updated blob/file-share/datalake stress job templates and scripts to export a PEM cert and wait for it before importing into
cacerts. - Changed OpenTelemetry instrumentation dependency versions in several storage stress POMs.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| sdk/storage/azure-storage-stress/pom.xml | Updates OpenTelemetry instrumentation dependency versions used by storage stress utilities. |
| sdk/storage/azure-storage-blob-stress/pom.xml | Updates OpenTelemetry instrumentation dependency versions for blob stress module. |
| sdk/storage/azure-storage-file-share-stress/pom.xml | Updates OpenTelemetry instrumentation dependency versions for file-share stress module. |
| sdk/storage/azure-storage-file-datalake-stress/pom.xml | Updates OpenTelemetry instrumentation dependency versions for datalake stress module. |
| sdk/storage/azure-storage-file-share-stress/templates/stress-test-job.yaml | Switches fault-injector cert export to PEM and adds a wait/import flow into JVM truststore. |
| sdk/storage/azure-storage-file-datalake-stress/templates/stress-test-job.yaml | Switches fault-injector cert export to PEM and adds a wait/import flow into JVM truststore. |
| sdk/storage/azure-storage-blob-stress/templates/stress-test-job.yaml | Switches fault-injector cert export to PEM and adds a wait/import flow into JVM truststore. |
| sdk/storage/azure-storage-blob-stress/scripts/fault-injector.sh | Exports fault-injector cert as PEM instead of PFX. |
| sdk/storage/azure-storage-blob-stress/scripts/stress-run.sh | Waits for PEM cert and imports it into cacerts (with alias management). |
| sdk/storage/azure-storage-blob-stress/src/main/java/com/azure/storage/blob/stress/ContentValidationDecoderStressOptions.java | Adds stress options to control ContentValidationAlgorithm. |
| sdk/storage/azure-storage-blob-stress/src/main/java/com/azure/storage/blob/stress/ContentValidationDownloadContent.java | New stress scenario validating download content with content validation enabled. |
| sdk/storage/azure-storage-blob-stress/src/main/java/com/azure/storage/blob/stress/ContentValidationDownloadStream.java | New stress scenario validating streaming downloads with content validation enabled. |
| sdk/storage/azure-storage-blob-stress/src/main/java/com/azure/storage/blob/stress/ContentValidationDownloadToFile.java | New stress scenario validating download-to-file with content validation enabled. |
| sdk/storage/azure-storage-blob-stress/src/main/java/com/azure/storage/blob/stress/ContentValidationOpenInputStream.java | New stress scenario validating openInputStream with content validation enabled. |
| sdk/storage/azure-storage-blob-stress/src/main/java/com/azure/storage/blob/stress/ContentValidationOpenSeekableByteChannelRead.java | New stress scenario validating openSeekableByteChannelRead with content validation enabled. |
Comment on lines
53
to
57
| <groupId>io.opentelemetry.instrumentation</groupId> | ||
| <artifactId>opentelemetry-runtime-telemetry-java8</artifactId> | ||
| <version>2.24.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| <version>2.15.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| </dependency> | ||
| <dependency> |
Comment on lines
58
to
62
| <groupId>io.opentelemetry.instrumentation</groupId> | ||
| <artifactId>opentelemetry-runtime-telemetry-java8</artifactId> | ||
| <version>2.24.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| <version>2.15.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| </dependency> | ||
| <dependency> |
Comment on lines
58
to
62
| <groupId>io.opentelemetry.instrumentation</groupId> | ||
| <artifactId>opentelemetry-runtime-telemetry-java8</artifactId> | ||
| <version>2.24.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| <version>2.15.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| </dependency> | ||
| <dependency> |
Comment on lines
58
to
62
| <groupId>io.opentelemetry.instrumentation</groupId> | ||
| <artifactId>opentelemetry-runtime-telemetry-java8</artifactId> | ||
| <version>2.24.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| <version>2.15.0-alpha</version> <!-- {x-version-update;io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8;external_dependency} --> | ||
| </dependency> | ||
| <dependency> |
Comment on lines
+17
to
+21
| * Download content with | ||
| * {@link BlobDownloadContentOptions#setContentValidationAlgorithm} enabled. | ||
| * Verifies the correctness of the download response content via CRC. | ||
| */ | ||
| public class ContentValidationDownloadContent extends BlobScenarioBase<ContentValidationDecoderStressOptions> { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.