Skip to content

Feature/storage/add cv stress tests#49077

Draft
browndav-msft wants to merge 6 commits intoAzure:feature/storage/content-validationfrom
browndav-msft:feature/storage/add-cv-stress-tests
Draft

Feature/storage/add cv stress tests#49077
browndav-msft wants to merge 6 commits intoAzure:feature/storage/content-validationfrom
browndav-msft:feature/storage/add-cv-stress-tests

Conversation

@browndav-msft
Copy link
Copy Markdown
Member

  • add content validation stress tests
  • merge in changes stress test fix

gunjansingh-msft and others added 6 commits May 6, 2026 12:59
* 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>
@github-actions github-actions Bot added the Storage Storage Service (Queues, Blobs, Files) label May 6, 2026
@browndav-msft browndav-msft requested a review from Copilot May 7, 2026 15:45
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/choose ContentValidationAlgorithm.
  • 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> {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Storage Storage Service (Queues, Blobs, Files)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants