From 0075cd0a1cfc2013ff5e050a1b50532fdf5e0554 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Wed, 11 Mar 2026 19:10:23 -0700 Subject: [PATCH 01/35] Use BulkExecutor for pre-populating documents in benchmarks Replaced individual createItem calls with executeBulkOperations for document pre-population in AsyncBenchmark, AsyncCtlWorkload, AsyncEncryptionBenchmark, and ReadMyWriteWorkflow. Also migrated ReadMyWriteWorkflow from internal Document/AsyncDocumentClient APIs to the public PojoizedJson/CosmosAsyncContainer v4 APIs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/AsyncBenchmark.java | 65 ++---- .../cosmos/benchmark/ReadMyWriteWorkflow.java | 185 +++++++----------- .../benchmark/ctl/AsyncCtlWorkload.java | 45 +++-- .../encryption/AsyncEncryptionBenchmark.java | 62 ++---- 4 files changed, 126 insertions(+), 231 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index ea4c3b371332..5dac7654d996 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -20,6 +20,9 @@ import com.azure.cosmos.models.CosmosMicrometerMetricsOptions; import com.azure.cosmos.models.CosmosContainerIdentity; import com.azure.cosmos.models.PartitionKey; +import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperations; +import com.azure.cosmos.models.CosmosItemOperation; import com.azure.cosmos.models.ThroughputProperties; import io.micrometer.core.instrument.MeterRegistry; @@ -29,8 +32,6 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; -import reactor.util.retry.Retry; - import java.time.Duration; import java.util.ArrayList; import java.util.List; @@ -184,68 +185,32 @@ abstract class AsyncBenchmark implements Benchmark { partitionKey = cosmosAsyncContainer.read().block().getProperties().getPartitionKeyDefinition() .getPaths().iterator().next().split("/")[1]; - ArrayList> createDocumentObservables = new ArrayList<>(); - if (cfg.getOperationType() != Operation.WriteLatency && cfg.getOperationType() != Operation.WriteThroughput && cfg.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", cfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(cfg.getDocumentDataFieldSize()); + List generatedDocs = new ArrayList<>(); + List bulkOperations = new ArrayList<>(); for (int i = 0; i < cfg.getNumberOfPreCreatedDocuments(); i++) { String uuid = UUID.randomUUID().toString(); PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, dataFieldValue, partitionKey, cfg.getDocumentDataFieldCount()); - Flux obs = cosmosAsyncContainer - .createItem(newDoc) - .retryWhen(Retry.max(5).filter((error) -> { - if (!(error instanceof CosmosException)) { - return false; - } - final CosmosException cosmosException = (CosmosException) error; - if (cosmosException.getStatusCode() == 410 || - cosmosException.getStatusCode() == 408 || - cosmosException.getStatusCode() == 429 || - cosmosException.getStatusCode() == 500 || - cosmosException.getStatusCode() == 503) { - return true; - } - - return false; - })) - .onErrorResume( - (error) -> { - if (!(error instanceof CosmosException)) { - return false; - } - final CosmosException cosmosException = (CosmosException) error; - if (cosmosException.getStatusCode() == 409) { - return true; - } - - return false; - }, - (conflictException) -> cosmosAsyncContainer.readItem( - uuid, new PartitionKey(partitionKey), PojoizedJson.class) - ) - .map(resp -> { - PojoizedJson x = - resp.getItem(); - return x; - }) - .flux(); - createDocumentObservables.add(obs); + generatedDocs.add(newDoc); + bulkOperations.add( + CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); } - } - if (createDocumentObservables.isEmpty()) { - docsToRead = new ArrayList<>(); + CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); + cosmosAsyncContainer + .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .blockLast(Duration.ofMinutes(10)); + + docsToRead = generatedDocs; } else { - int prePopConcurrency = Math.max(1, Math.min(cfg.getConcurrency(), 100)); - docsToRead = Flux.merge(Flux.fromIterable(createDocumentObservables), prePopConcurrency) - .collectList() - .block(); + docsToRead = new ArrayList<>(); } logger.info("Finished pre-populating {} documents", cfg.getNumberOfPreCreatedDocuments()); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java index 656fedd58b17..9d90c9a46a95 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java @@ -3,19 +3,10 @@ package com.azure.cosmos.benchmark; -import com.azure.cosmos.CosmosBridgeInternal; import com.azure.cosmos.CosmosException; -import com.azure.cosmos.implementation.AsyncDocumentClient; -import com.azure.cosmos.implementation.CosmosPagedFluxOptions; -import com.azure.cosmos.implementation.Database; -import com.azure.cosmos.implementation.Document; -import com.azure.cosmos.implementation.DocumentCollection; -import com.azure.cosmos.implementation.NotFoundException; -import com.azure.cosmos.implementation.OperationType; -import com.azure.cosmos.implementation.QueryFeedOperationState; -import com.azure.cosmos.implementation.RequestOptions; -import com.azure.cosmos.implementation.ResourceResponse; -import com.azure.cosmos.implementation.ResourceType; +import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperations; +import com.azure.cosmos.models.CosmosItemOperation; import com.azure.cosmos.models.CosmosQueryRequestOptions; import com.azure.cosmos.models.PartitionKey; import com.azure.cosmos.models.SqlParameter; @@ -26,6 +17,7 @@ import reactor.core.scheduler.Scheduler; import reactor.util.retry.Retry; +import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -42,15 +34,12 @@ * This workflow first will create some documents in cosmosdb and will store them all in its local cache. * Then at each step will randomly will try to do a write, read its own write, or query for its own write. */ -class ReadMyWriteWorkflow extends AsyncBenchmark { +class ReadMyWriteWorkflow extends AsyncBenchmark { private final static String QUERY_FIELD_NAME = "prop"; private final static String ORDER_BY_FIELD_NAME = "_ts"; private final static int MAX_TOP_QUERY_COUNT = 2000; - private AsyncDocumentClient client; - private DocumentCollection collection; - private String nameCollectionLink; - private ConcurrentHashMap cache; + private ConcurrentHashMap cache; private int cacheSize; ReadMyWriteWorkflow(TenantWorkloadConfig cfg, Scheduler scheduler) { @@ -59,21 +48,15 @@ class ReadMyWriteWorkflow extends AsyncBenchmark { @Override protected void init() { - // TODO: move read my writes to use v4 APIs - this.client = CosmosBridgeInternal.getAsyncDocumentClient(benchmarkWorkloadClient); - Database database = DocDBUtils.getDatabase(client, workloadConfig.getDatabaseId()); - this.collection = DocDBUtils.getCollection(client, database.getSelfLink(), workloadConfig.getContainerId()); - this.nameCollectionLink = String.format("dbs/%s/colls/%s", database.getId(), collection.getId()); - this.cacheSize = workloadConfig.getNumberOfPreCreatedDocuments(); this.cache = new ConcurrentHashMap<>(); this.populateCache(); } @Override - protected Mono performWorkload(long i) { + protected Mono performWorkload(long i) { - Flux obs; + Flux obs; boolean readyMyWrite = RandomUtils.nextBoolean(); if (readyMyWrite) { @@ -97,7 +80,7 @@ protected Mono performWorkload(long i) { // then try to query for the document which just was written obs = writeDocument() .flatMap(d -> singlePartitionQuery(d) - .switchIfEmpty(Flux.error(new NotFoundException( + .switchIfEmpty(Flux.error(new RuntimeException( "couldn't find my write in a single partition query!")))); break; case 2: @@ -105,7 +88,7 @@ protected Mono performWorkload(long i) { // then try to query for the document which just was written obs = writeDocument() .flatMap(d -> xPartitionQuery(generateQuery(d)) - .switchIfEmpty(Flux.error(new NotFoundException( + .switchIfEmpty(Flux.error(new RuntimeException( "couldn't find my write in a cross partition query!")))); break; default: @@ -134,13 +117,13 @@ protected Mono performWorkload(long i) { case 2: // randomly choose a document from the cache and do a single partition query obs = singlePartitionQuery(cache.get(cacheKey())) - .switchIfEmpty(Flux.error(new NotFoundException( + .switchIfEmpty(Flux.error(new RuntimeException( "couldn't find my cached write in a single partition query!"))); break; case 3: // randomly choose a document from the cache and do a cross partition query obs = xPartitionQuery(generateRandomQuery()) - .switchIfEmpty(Flux.error(new NotFoundException( + .switchIfEmpty(Flux.error(new RuntimeException( "couldn't find my cached write in a cross partition query!"))); break; default: @@ -153,14 +136,33 @@ protected Mono performWorkload(long i) { } private void populateCache() { - ArrayList> list = new ArrayList<>(); + logger.info("PRE-populating {} documents ....", cacheSize); + List generatedDocs = new ArrayList<>(); + List bulkOperations = new ArrayList<>(); for (int i = 0; i < cacheSize; i++) { - Flux observable = writeDocument(i); - list.add(observable); + String idString = UUID.randomUUID().toString(); + String randomVal = UUID.randomUUID().toString(); + PojoizedJson newDoc = new PojoizedJson(); + newDoc.setProperty("id", idString); + newDoc.setProperty(partitionKey, idString); + newDoc.setProperty(QUERY_FIELD_NAME, randomVal); + newDoc.setProperty("dataField1", randomVal); + newDoc.setProperty("dataField2", randomVal); + newDoc.setProperty("dataField3", randomVal); + newDoc.setProperty("dataField4", randomVal); + generatedDocs.add(newDoc); + bulkOperations.add( + CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(idString))); } - logger.info("PRE-populating {} documents ....", cacheSize); - Flux.merge(Flux.fromIterable(list), workloadConfig.getConcurrency()).then().block(); + CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); + cosmosAsyncContainer + .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .blockLast(Duration.ofMinutes(10)); + + for (int i = 0; i < generatedDocs.size(); i++) { + cache.put(i, generatedDocs.get(i)); + } logger.info("Finished pre-populating {} documents", cacheSize); } @@ -169,7 +171,7 @@ private void populateCache() { * * @return Observable of document */ - private Flux writeDocument() { + private Flux writeDocument() { return writeDocument(null); } @@ -178,20 +180,20 @@ private Flux writeDocument() { * * @return Observable of document */ - private Flux writeDocument(Integer i) { + private Flux writeDocument(Integer i) { String idString = UUID.randomUUID().toString(); String randomVal = UUID.randomUUID().toString(); - Document document = new Document(); - document.setId(idString); - document.set(partitionKey, idString); - document.set(QUERY_FIELD_NAME, randomVal); - document.set("dataField1", randomVal); - document.set("dataField2", randomVal); - document.set("dataField3", randomVal); - document.set("dataField4", randomVal); + PojoizedJson newDoc = new PojoizedJson(); + newDoc.setProperty("id", idString); + newDoc.setProperty(partitionKey, idString); + newDoc.setProperty(QUERY_FIELD_NAME, randomVal); + newDoc.setProperty("dataField1", randomVal); + newDoc.setProperty("dataField2", randomVal); + newDoc.setProperty("dataField3", randomVal); + newDoc.setProperty("dataField4", randomVal); Integer key = i == null ? cacheKey() : i; - return client.createDocument(getCollectionLink(), document, null, false) + return cosmosAsyncContainer.createItem(newDoc) .retryWhen(Retry.max(5).filter((error) -> { if (!(error instanceof CosmosException)) { return false; @@ -218,10 +220,11 @@ private Flux writeDocument(Integer i) { return false; }, - (conflictException) -> client.readDocument(getDocumentLink(document), null) + (conflictException) -> cosmosAsyncContainer.readItem( + idString, new PartitionKey(idString), PojoizedJson.class) ) - .doOnNext(r -> cache.put(key, r.getResource())) - .map(ResourceResponse::getResource).flux(); + .doOnNext(r -> cache.put(key, r.getItem())) + .map(r -> r.getItem()).flux(); } /** @@ -230,12 +233,10 @@ private Flux writeDocument(Integer i) { * @param d document to be read * @return Observable of document */ - private Flux readDocument(Document d) { - RequestOptions options = new RequestOptions(); - options.setPartitionKey(new PartitionKey(d.getString(partitionKey))); - - return client.readDocument(getDocumentLink(d), options) - .map(ResourceResponse::getResource).flux(); + private Flux readDocument(PojoizedJson d) { + return cosmosAsyncContainer.readItem( + d.getId(), new PartitionKey(d.getId()), PojoizedJson.class) + .map(r -> r.getItem()).flux(); } /** @@ -250,7 +251,7 @@ private SqlQuerySpec generateRandomQuery() { int key = RandomUtils.nextInt(0, cacheSize); keys.add(key); } - List documentList = null; + List documentList = null; if (RandomUtils.nextBoolean()) { documentList = keys.stream().map(cache::get).collect(Collectors.toList()); } @@ -267,24 +268,11 @@ private SqlQuerySpec generateRandomQuery() { * @param query to find document * @return Observable document */ - private Flux xPartitionQuery(SqlQuerySpec query) { + private Flux xPartitionQuery(SqlQuerySpec query) { CosmosQueryRequestOptions options = new CosmosQueryRequestOptions(); options.setMaxDegreeOfParallelism(-1); - QueryFeedOperationState state = new QueryFeedOperationState( - benchmarkWorkloadClient, - "xPartitionQuery", - workloadConfig.getDatabaseId(), - workloadConfig.getContainerId(), - ResourceType.Document, - OperationType.Query, - null, - options, - new CosmosPagedFluxOptions() - ); - - return client.queryDocuments(getCollectionLink(), query, state, Document.class) - .flatMap(p -> Flux.fromIterable(p.getResults())); + return cosmosAsyncContainer.queryItems(query, options, PojoizedJson.class); } /** @@ -294,28 +282,15 @@ private Flux xPartitionQuery(SqlQuerySpec query) { * @param d document to be queried for. * @return Observable document */ - private Flux singlePartitionQuery(Document d) { + private Flux singlePartitionQuery(PojoizedJson d) { CosmosQueryRequestOptions options = new CosmosQueryRequestOptions(); - options.setPartitionKey(new PartitionKey(d.get(partitionKey))); + options.setPartitionKey(new PartitionKey(d.getProperty(partitionKey))); SqlQuerySpec sqlQuerySpec = new SqlQuerySpec(String.format("Select top 100 * from c where c.%s = '%s'", QUERY_FIELD_NAME, - d.getString(QUERY_FIELD_NAME))); - - QueryFeedOperationState state = new QueryFeedOperationState( - benchmarkWorkloadClient, - "singlePartitionQuery", - workloadConfig.getDatabaseId(), - workloadConfig.getContainerId(), - ResourceType.Document, - OperationType.Query, - null, - options, - new CosmosPagedFluxOptions() - ); - - return client.queryDocuments(getCollectionLink(), sqlQuerySpec, state, Document.class) - .flatMap(p -> Flux.fromIterable(p.getResults())); + (String) d.getProperty(QUERY_FIELD_NAME))); + + return cosmosAsyncContainer.queryItems(sqlQuerySpec, options, PojoizedJson.class); } /** @@ -326,7 +301,7 @@ private Flux singlePartitionQuery(Document d) { * @param documentList list of documents to be queried for * @return SqlQuerySpec */ - private SqlQuerySpec generateQuery(Document... documentList) { + private SqlQuerySpec generateQuery(PojoizedJson... documentList) { return generateQuery(Arrays.asList(documentList)); } @@ -338,7 +313,7 @@ private SqlQuerySpec generateQuery(Document... documentList) { * @param documentList list of documents to be queried for * @return SqlQuerySpec */ - private SqlQuerySpec generateQuery(List documentList) { + private SqlQuerySpec generateQuery(List documentList) { int top = RandomUtils.nextInt(0, MAX_TOP_QUERY_COUNT); boolean useOrderBy = RandomUtils.nextBoolean(); @@ -353,7 +328,7 @@ private SqlQuerySpec generateQuery(List documentList) { * @param withOrderBy if not null, the query will have an orderby clause * @return SqlQuerySpec */ - private SqlQuerySpec generateQuery(List documentList, Integer topCount, boolean withOrderBy) { + private SqlQuerySpec generateQuery(List documentList, Integer topCount, boolean withOrderBy) { QueryBuilder queryBuilder = new QueryBuilder(); if (withOrderBy) { queryBuilder.orderBy(ORDER_BY_FIELD_NAME); @@ -409,10 +384,10 @@ static class InWhereClause extends WhereClause { private final List parameters; private final String whereCondition; - static InWhereClause asInWhereClause(String fieldName, List documentList) { + static InWhereClause asInWhereClause(String fieldName, List documentList) { List parameters = new ArrayList<>(documentList.size()); for (int i = 0; i < documentList.size(); i++) { - Object value = documentList.get(i).get(fieldName); + Object value = documentList.get(i).getProperty(fieldName); SqlParameter sqlParameter = new SqlParameter("@param" + i, value); parameters.add(sqlParameter); } @@ -473,28 +448,4 @@ SqlQuerySpec toSqlQuerySpec() { } } - protected String getCollectionLink() { - if (workloadConfig.isUseNameLink()) { - return this.nameCollectionLink; - } else { - return collection.getSelfLink(); - } - } - - protected String getDocumentLink(Document doc) { - if (workloadConfig.isUseNameLink()) { - return this.nameCollectionLink + "/docs/" + doc.getId(); - } else { - return doc.getSelfLink(); - } - } - - @Override - public void shutdown() { - if (this.client != null) { - this.client.close(); - } - - super.shutdown(); - } } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 8f3a94772025..5be5b1aca716 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -18,7 +18,10 @@ import com.azure.cosmos.benchmark.TenantWorkloadConfig; import com.azure.cosmos.implementation.HttpConstants; import com.azure.cosmos.implementation.OperationType; +import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperations; import com.azure.cosmos.models.CosmosItemIdentity; +import com.azure.cosmos.models.CosmosItemOperation; import com.azure.cosmos.models.CosmosQueryRequestOptions; import com.azure.cosmos.models.PartitionKey; import com.azure.cosmos.models.ThroughputProperties; @@ -244,33 +247,37 @@ private void parsedReadWriteQueryReadManyPct(String readWriteQueryReadManyPct) { private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { for (CosmosAsyncContainer container : containers) { - AtomicLong successCount = new AtomicLong(0); - AtomicLong failureCount = new AtomicLong(0); - ArrayList> createDocumentObservables = new ArrayList<>(); + List generatedDocs = new ArrayList<>(); + List bulkOperations = new ArrayList<>(); for (int i = 0; i < numberOfPreCreatedDocuments; i++) { String uId = UUID.randomUUID().toString(); PojoizedJson newDoc = BenchmarkHelper.generateDocument(uId, dataFieldValue, partitionKey, workloadConfig.getDocumentDataFieldCount()); - - Flux obs = container.createItem(newDoc).map(resp -> { - PojoizedJson x = - resp.getItem(); - return x; - }).onErrorResume(throwable -> { - failureCount.incrementAndGet(); - logger.error("Error during pre populating item ", throwable.getMessage()); - return Mono.empty(); - }).doOnSuccess(pojoizedJson -> { - successCount.incrementAndGet(); - }).flux(); - createDocumentObservables.add(obs); + generatedDocs.add(newDoc); + bulkOperations.add( + CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId))); } - docsToRead.put(container.getId(), - Flux.merge(Flux.fromIterable(createDocumentObservables), 100).collectList().block()); + + AtomicLong successCount = new AtomicLong(0); + AtomicLong failureCount = new AtomicLong(0); + CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); + container.executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .doOnNext(response -> { + if (response.getResponse() != null && response.getResponse().isSuccessStatusCode()) { + successCount.incrementAndGet(); + } else { + failureCount.incrementAndGet(); + logger.error("Error during pre populating item {}", + response.getException() != null ? response.getException().getMessage() : "unknown error"); + } + }) + .blockLast(Duration.ofMinutes(10)); + + docsToRead.put(container.getId(), generatedDocs); logger.info("Finished pre-populating {} documents for container {}", - successCount.get() - failureCount.get(), container.getId()); + successCount.get(), container.getId()); if (failureCount.get() > 0) { logger.info("Failed pre-populating {} documents for container {}", failureCount.get(), container.getId()); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index 6801350ca145..74b25239fc82 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -27,9 +27,11 @@ import com.azure.cosmos.implementation.apachecommons.lang.StringUtils; import com.azure.cosmos.models.ClientEncryptionIncludedPath; import com.azure.cosmos.models.ClientEncryptionPolicy; +import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperations; import com.azure.cosmos.models.CosmosClientEncryptionKeyProperties; import com.azure.cosmos.models.CosmosContainerProperties; -import com.azure.cosmos.models.CosmosItemRequestOptions; +import com.azure.cosmos.models.CosmosItemOperation; import com.azure.cosmos.models.EncryptionKeyWrapMetadata; import com.azure.cosmos.models.FeedResponse; import com.azure.cosmos.models.PartitionKey; @@ -44,7 +46,6 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; -import reactor.util.retry.Retry; import java.io.IOException; import java.io.InputStream; @@ -116,13 +117,13 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { createEncryptionDatabaseAndContainer(); partitionKey = cosmosAsyncContainer.read().block().getProperties().getPartitionKeyDefinition() .getPaths().iterator().next().split("/")[1]; - ArrayList> createDocumentObservables = new ArrayList<>(); - if (workloadConfig.getOperationType() != Operation.WriteLatency && workloadConfig.getOperationType() != Operation.WriteThroughput && workloadConfig.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", workloadCfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); + List generatedDocs = new ArrayList<>(); + List bulkOperations = new ArrayList<>(); for (int i = 0; i < workloadCfg.getNumberOfPreCreatedDocuments(); i++) { String uuid = UUID.randomUUID().toString(); PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, @@ -138,49 +139,20 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); } - - Flux obs = cosmosEncryptionAsyncContainer - .createItem(newDoc, new PartitionKey(uuid), new CosmosItemRequestOptions()) - .retryWhen(Retry.max(5).filter((error) -> { - if (!(error instanceof CosmosException)) { - return false; - } - final CosmosException cosmosException = (CosmosException) error; - if (cosmosException.getStatusCode() == 410 || - cosmosException.getStatusCode() == 408 || - cosmosException.getStatusCode() == 429 || - cosmosException.getStatusCode() == 503) { - return true; - } - - return false; - })) - .onErrorResume( - (error) -> { - if (!(error instanceof CosmosException)) { - return false; - } - final CosmosException cosmosException = (CosmosException) error; - if (cosmosException.getStatusCode() == 409) { - return true; - } - - return false; - }, - (conflictException) -> cosmosAsyncContainer.readItem( - uuid, new PartitionKey(partitionKey), PojoizedJson.class) - ) - .map(resp -> { - PojoizedJson x = - resp.getItem(); - return x; - }) - .flux(); - createDocumentObservables.add(obs); + generatedDocs.add(newDoc); + bulkOperations.add( + CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); } - } - docsToRead = Flux.merge(Flux.fromIterable(createDocumentObservables), 100).collectList().block(); + CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); + cosmosEncryptionAsyncContainer + .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .blockLast(Duration.ofMinutes(10)); + + docsToRead = generatedDocs; + } else { + docsToRead = new ArrayList<>(); + } logger.info("Finished pre-populating {} documents", workloadCfg.getNumberOfPreCreatedDocuments()); init(); From 4df5cde2f55311d506276a22224e2325c7415ce8 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Wed, 11 Mar 2026 20:06:04 -0700 Subject: [PATCH 02/35] Use streaming Flux for bulk pre-population to reduce memory pressure Replace pre-materialized List with Flux.range().map() to lazily emit operations on demand. This avoids holding all N operations in memory simultaneously - the bulk executor consumes them as they are generated, allowing GC to reclaim processed operation wrappers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/AsyncBenchmark.java | 24 +++++------ .../cosmos/benchmark/ReadMyWriteWorkflow.java | 34 +++++++-------- .../benchmark/ctl/AsyncCtlWorkload.java | 24 +++++------ .../encryption/AsyncEncryptionBenchmark.java | 42 +++++++++---------- 4 files changed, 62 insertions(+), 62 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index 5dac7654d996..ecc7a9f51dc0 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -191,21 +191,21 @@ abstract class AsyncBenchmark implements Benchmark { logger.info("PRE-populating {} documents ....", cfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(cfg.getDocumentDataFieldSize()); List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); - for (int i = 0; i < cfg.getNumberOfPreCreatedDocuments(); i++) { - String uuid = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, - dataFieldValue, - partitionKey, - cfg.getDocumentDataFieldCount()); - generatedDocs.add(newDoc); - bulkOperations.add( - CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); - } + + Flux bulkOperationFlux = Flux.range(0, cfg.getNumberOfPreCreatedDocuments()) + .map(i -> { + String uuid = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, + dataFieldValue, + partitionKey, + cfg.getDocumentDataFieldCount()); + generatedDocs.add(newDoc); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); + }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); cosmosAsyncContainer - .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .blockLast(Duration.ofMinutes(10)); docsToRead = generatedDocs; diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java index 9d90c9a46a95..545e92357bae 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java @@ -138,26 +138,26 @@ protected Mono performWorkload(long i) { private void populateCache() { logger.info("PRE-populating {} documents ....", cacheSize); List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); - for (int i = 0; i < cacheSize; i++) { - String idString = UUID.randomUUID().toString(); - String randomVal = UUID.randomUUID().toString(); - PojoizedJson newDoc = new PojoizedJson(); - newDoc.setProperty("id", idString); - newDoc.setProperty(partitionKey, idString); - newDoc.setProperty(QUERY_FIELD_NAME, randomVal); - newDoc.setProperty("dataField1", randomVal); - newDoc.setProperty("dataField2", randomVal); - newDoc.setProperty("dataField3", randomVal); - newDoc.setProperty("dataField4", randomVal); - generatedDocs.add(newDoc); - bulkOperations.add( - CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(idString))); - } + + Flux bulkOperationFlux = Flux.range(0, cacheSize) + .map(i -> { + String idString = UUID.randomUUID().toString(); + String randomVal = UUID.randomUUID().toString(); + PojoizedJson newDoc = new PojoizedJson(); + newDoc.setProperty("id", idString); + newDoc.setProperty(partitionKey, idString); + newDoc.setProperty(QUERY_FIELD_NAME, randomVal); + newDoc.setProperty("dataField1", randomVal); + newDoc.setProperty("dataField2", randomVal); + newDoc.setProperty("dataField3", randomVal); + newDoc.setProperty("dataField4", randomVal); + generatedDocs.add(newDoc); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(idString)); + }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); cosmosAsyncContainer - .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .blockLast(Duration.ofMinutes(10)); for (int i = 0; i < generatedDocs.size(); i++) { diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 5be5b1aca716..8866b696fdea 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -248,22 +248,22 @@ private void parsedReadWriteQueryReadManyPct(String readWriteQueryReadManyPct) { private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { for (CosmosAsyncContainer container : containers) { List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); - for (int i = 0; i < numberOfPreCreatedDocuments; i++) { - String uId = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uId, - dataFieldValue, - partitionKey, - workloadConfig.getDocumentDataFieldCount()); - generatedDocs.add(newDoc); - bulkOperations.add( - CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId))); - } + + Flux bulkOperationFlux = Flux.range(0, numberOfPreCreatedDocuments) + .map(i -> { + String uId = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uId, + dataFieldValue, + partitionKey, + workloadConfig.getDocumentDataFieldCount()); + generatedDocs.add(newDoc); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId)); + }); AtomicLong successCount = new AtomicLong(0); AtomicLong failureCount = new AtomicLong(0); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); - container.executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + container.executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() != null && response.getResponse().isSuccessStatusCode()) { successCount.incrementAndGet(); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index 74b25239fc82..befd7e447008 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -123,30 +123,30 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { logger.info("PRE-populating {} documents ....", workloadCfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); - for (int i = 0; i < workloadCfg.getNumberOfPreCreatedDocuments(); i++) { - String uuid = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, - dataFieldValue, - partitionKey, - workloadConfig.getDocumentDataFieldCount()); - for (int j = 1; j <= workloadCfg.getEncryptedStringFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_STRING_FIELD + j, uuid); - } - for (int j = 1; j <= workloadCfg.getEncryptedLongFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_LONG_FIELD + j, 1234l); - } - for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); - } - generatedDocs.add(newDoc); - bulkOperations.add( - CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); - } + + Flux bulkOperationFlux = Flux.range(0, workloadCfg.getNumberOfPreCreatedDocuments()) + .map(i -> { + String uuid = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, + dataFieldValue, + partitionKey, + workloadConfig.getDocumentDataFieldCount()); + for (int j = 1; j <= workloadCfg.getEncryptedStringFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_STRING_FIELD + j, uuid); + } + for (int j = 1; j <= workloadCfg.getEncryptedLongFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_LONG_FIELD + j, 1234l); + } + for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); + } + generatedDocs.add(newDoc); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); + }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); cosmosEncryptionAsyncContainer - .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .blockLast(Duration.ofMinutes(10)); docsToRead = generatedDocs; From cd9b3d91b61725760a70f51ce659a528c9f2a191 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Wed, 11 Mar 2026 20:15:42 -0700 Subject: [PATCH 03/35] Add createItem fallback retry for failed bulk operations If a bulk operation fails, fall back to individual createItem calls with retry logic (max 5 retries for transient errors: 410, 408, 429, 500, 503) and 409 conflict suppression. The retry helper is centralized in BenchmarkHelper.retryFailedBulkOperations(). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/AsyncBenchmark.java | 9 +++ .../cosmos/benchmark/BenchmarkHelper.java | 65 +++++++++++++++++++ .../cosmos/benchmark/ReadMyWriteWorkflow.java | 9 +++ .../benchmark/ctl/AsyncCtlWorkload.java | 5 ++ .../encryption/AsyncEncryptionBenchmark.java | 9 +++ 5 files changed, 97 insertions(+) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index ecc7a9f51dc0..62de71350d3b 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -21,6 +21,7 @@ import com.azure.cosmos.models.CosmosContainerIdentity; import com.azure.cosmos.models.PartitionKey; import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperationResponse; import com.azure.cosmos.models.CosmosBulkOperations; import com.azure.cosmos.models.CosmosItemOperation; import com.azure.cosmos.models.ThroughputProperties; @@ -204,10 +205,18 @@ abstract class AsyncBenchmark implements Benchmark { }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); + List> failedResponses = new ArrayList<>(); cosmosAsyncContainer .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) + .doOnNext(response -> { + if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { + failedResponses.add(response); + } + }) .blockLast(Duration.ofMinutes(10)); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, partitionKey); + docsToRead = generatedDocs; } else { docsToRead = new ArrayList<>(); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java index 2bd8b5bd2b8a..1f8c2ee4ac5b 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java @@ -4,9 +4,23 @@ package com.azure.cosmos.benchmark; import java.time.Duration; +import java.util.List; import java.util.Map; +import com.azure.cosmos.CosmosAsyncContainer; +import com.azure.cosmos.CosmosException; +import com.azure.cosmos.models.CosmosBulkOperationResponse; +import com.azure.cosmos.models.CosmosItemOperation; +import com.azure.cosmos.models.PartitionKey; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + public class BenchmarkHelper { + + private static final Logger logger = LoggerFactory.getLogger(BenchmarkHelper.class); public static PojoizedJson generateDocument(String idString, String dataFieldValue, String partitionKey, int dataFieldCount) { PojoizedJson instance = new PojoizedJson(); @@ -30,4 +44,55 @@ public static boolean shouldContinue(long startTimeMillis, long iterationCount, return startTimeMillis + maxDurationTime.toMillis() > System.currentTimeMillis(); } + + /** + * Retries failed bulk operation responses by falling back to individual createItem calls. + * Ignores 409 (Conflict) errors since the document already exists. + * + * @param failedResponses list of failed bulk operation responses + * @param container the container to retry against + * @param partitionKeyName the partition key property name + */ + public static void retryFailedBulkOperations( + List> failedResponses, + CosmosAsyncContainer container, + String partitionKeyName) { + + if (failedResponses.isEmpty()) { + return; + } + + logger.info("Retrying {} failed bulk operations with individual createItem calls", failedResponses.size()); + + Flux.fromIterable(failedResponses) + .flatMap(failedResponse -> { + CosmosItemOperation operation = failedResponse.getOperation(); + PojoizedJson item = operation.getItem(); + PartitionKey pk = operation.getPartitionKeyValue(); + + return container.createItem(item, pk, null) + .retryWhen(Retry.max(5).filter(error -> { + if (!(error instanceof CosmosException)) { + return false; + } + int statusCode = ((CosmosException) error).getStatusCode(); + return statusCode == 410 + || statusCode == 408 + || statusCode == 429 + || statusCode == 500 + || statusCode == 503; + })) + .onErrorResume(error -> { + if (error instanceof CosmosException + && ((CosmosException) error).getStatusCode() == 409) { + return Mono.empty(); + } + logger.error("Failed to create item on retry: {}", error.getMessage()); + return Mono.empty(); + }); + }, 100) + .blockLast(Duration.ofMinutes(10)); + + logger.info("Finished retrying failed bulk operations"); + } } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java index 545e92357bae..1136eed9f9b9 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java @@ -5,6 +5,7 @@ import com.azure.cosmos.CosmosException; import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperationResponse; import com.azure.cosmos.models.CosmosBulkOperations; import com.azure.cosmos.models.CosmosItemOperation; import com.azure.cosmos.models.CosmosQueryRequestOptions; @@ -156,10 +157,18 @@ private void populateCache() { }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); + List> failedResponses = new ArrayList<>(); cosmosAsyncContainer .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) + .doOnNext(response -> { + if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { + failedResponses.add(response); + } + }) .blockLast(Duration.ofMinutes(10)); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, partitionKey); + for (int i = 0; i < generatedDocs.size(); i++) { cache.put(i, generatedDocs.get(i)); } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 8866b696fdea..3eb0ba4f4eb1 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -19,6 +19,7 @@ import com.azure.cosmos.implementation.HttpConstants; import com.azure.cosmos.implementation.OperationType; import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperationResponse; import com.azure.cosmos.models.CosmosBulkOperations; import com.azure.cosmos.models.CosmosItemIdentity; import com.azure.cosmos.models.CosmosItemOperation; @@ -262,6 +263,7 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { AtomicLong successCount = new AtomicLong(0); AtomicLong failureCount = new AtomicLong(0); + List> failedResponses = new ArrayList<>(); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); container.executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .doOnNext(response -> { @@ -269,12 +271,15 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { successCount.incrementAndGet(); } else { failureCount.incrementAndGet(); + failedResponses.add(response); logger.error("Error during pre populating item {}", response.getException() != null ? response.getException().getMessage() : "unknown error"); } }) .blockLast(Duration.ofMinutes(10)); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, container, partitionKey); + docsToRead.put(container.getId(), generatedDocs); logger.info("Finished pre-populating {} documents for container {}", successCount.get(), container.getId()); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index befd7e447008..43734bbdeaca 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -28,6 +28,7 @@ import com.azure.cosmos.models.ClientEncryptionIncludedPath; import com.azure.cosmos.models.ClientEncryptionPolicy; import com.azure.cosmos.models.CosmosBulkExecutionOptions; +import com.azure.cosmos.models.CosmosBulkOperationResponse; import com.azure.cosmos.models.CosmosBulkOperations; import com.azure.cosmos.models.CosmosClientEncryptionKeyProperties; import com.azure.cosmos.models.CosmosContainerProperties; @@ -145,10 +146,18 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); + List> failedResponses = new ArrayList<>(); cosmosEncryptionAsyncContainer .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) + .doOnNext(response -> { + if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { + failedResponses.add(response); + } + }) .blockLast(Duration.ofMinutes(10)); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, partitionKey); + docsToRead = generatedDocs; } else { docsToRead = new ArrayList<>(); From 403aeabcdc1d40e92a8eec6c1ceeadeb12e788e2 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Wed, 11 Mar 2026 22:44:47 -0700 Subject: [PATCH 04/35] Reduce Gateway mode per-request CPU overhead 1. HttpHeaders.set()/getHeader(): Add toLowerCaseIfNeeded() fast-path that skips String.toLowerCase() allocation when header name is already all-lowercase (common for x-ms-* and standard Cosmos headers). 2. RxGatewayStoreModel.getUri(): Build URI via StringBuilder instead of the 7-arg URI constructor which re-validates and re-encodes all components. Since components are already well-formed, the single-arg URI(String) constructor is sufficient and avoids URI$Parser overhead. 3. RxDocumentServiceRequest: Cache getCollectionName() result to avoid repeated O(n) slash-scanning across 14+ call sites per request lifecycle. Cache is invalidated when resourceAddress changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../RxDocumentServiceRequest.java | 17 ++++++++++++++ .../implementation/RxGatewayStoreModel.java | 23 ++++++++++++------- .../implementation/http/HttpHeaders.java | 18 +++++++++++++-- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java index e2b18537c7ac..4873fa695be4 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java @@ -48,6 +48,7 @@ public class RxDocumentServiceRequest implements Cloneable { private final boolean isNameBased; private final OperationType operationType; private String resourceAddress; + private volatile String cachedCollectionName; public volatile boolean forceNameCacheRefresh; private volatile URI endpointOverride = null; private final UUID activityId; @@ -102,6 +103,22 @@ public boolean isReadOnlyRequest() { public void setResourceAddress(String newAddress) { this.resourceAddress = newAddress; + this.cachedCollectionName = null; + } + + /** + * Gets the collection name extracted from the resource address. + * The result is cached to avoid repeated O(n) slash-scanning in Utils.getCollectionName(). + * + * @return the collection name path segment + */ + public String getCollectionName() { + String result = this.cachedCollectionName; + if (result == null) { + result = Utils.getCollectionName(this.resourceAddress); + this.cachedCollectionName = result; + } + return result; } public boolean isReadOnlyScript() { diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java index 42172026ad5b..1f4db071493a 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java @@ -394,16 +394,23 @@ private URI getUri(RxDocumentServiceRequest request) throws URISyntaxException { path = StringUtils.EMPTY; } - // allow using http connections if customer opt in to use http for vnext emulator + // Build URI string directly to avoid the overhead of URI's multi-arg constructor + // which re-parses and re-validates all components. String scheme = HTTP_CONNECTION_WITHOUT_TLS_ALLOWED ? rootUri.getScheme() : "https"; + String host = rootUri.getHost(); + int port = rootUri.getPort(); + String slashPath = ensureSlashPrefixed(path); + + StringBuilder sb = new StringBuilder(scheme.length() + host.length() + 16 + (slashPath != null ? slashPath.length() : 0)); + sb.append(scheme).append("://").append(host); + if (port >= 0) { + sb.append(':').append(port); + } + if (slashPath != null) { + sb.append(slashPath); + } - return new URI(scheme, - null, - rootUri.getHost(), - rootUri.getPort(), - ensureSlashPrefixed(path), - null, // Query string not used. - null); + return new URI(sb.toString()); } private String ensureSlashPrefixed(String path) { diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java index 7090bd453a51..e39336e2797f 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java @@ -66,7 +66,7 @@ public int size() { * @return this HttpHeaders */ public HttpHeaders set(String name, String value) { - final String headerKey = name.toLowerCase(Locale.ROOT); + final String headerKey = toLowerCaseIfNeeded(name); if (value == null) { headers.remove(headerKey); } else { @@ -100,10 +100,24 @@ public String[] values(String name) { } private HttpHeader getHeader(String headerName) { - final String headerKey = headerName.toLowerCase(Locale.ROOT); + final String headerKey = toLowerCaseIfNeeded(headerName); return headers.get(headerKey); } + private static String toLowerCaseIfNeeded(String name) { + // Fast-path: skip toLowerCase allocation if the string is already all-lowercase. + // This avoids creating a new String object on every header set/get call + // for the common case of lowercase header names (e.g., "authorization", "etag", + // "x-ms-*" headers). + for (int i = 0; i < name.length(); i++) { + char c = name.charAt(i); + if (c >= 'A' && c <= 'Z') { + return name.toLowerCase(Locale.ROOT); + } + } + return name; + } + /** * Get {@link Map} representation of the HttpHeaders collection. * From 2f1c8a72a35f58b67631018c8db8098f7a1d1fe5 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Wed, 11 Mar 2026 23:03:29 -0700 Subject: [PATCH 05/35] Revert HttpHeaders toLowerCaseIfNeeded optimization The char-by-char scan added method call + branch overhead that offset the toLowerCase savings. Profiling showed ConcurrentHashMap.get(), HashMap.putVal(), and the scan loop itself caused ~10% throughput regression. Reverting to original toLowerCase(Locale.ROOT) which the JIT handles as an intrinsic. The URI construction and collection name caching optimizations are retained as they don't have this issue. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../implementation/http/HttpHeaders.java | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java index e39336e2797f..7090bd453a51 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpHeaders.java @@ -66,7 +66,7 @@ public int size() { * @return this HttpHeaders */ public HttpHeaders set(String name, String value) { - final String headerKey = toLowerCaseIfNeeded(name); + final String headerKey = name.toLowerCase(Locale.ROOT); if (value == null) { headers.remove(headerKey); } else { @@ -100,24 +100,10 @@ public String[] values(String name) { } private HttpHeader getHeader(String headerName) { - final String headerKey = toLowerCaseIfNeeded(headerName); + final String headerKey = headerName.toLowerCase(Locale.ROOT); return headers.get(headerKey); } - private static String toLowerCaseIfNeeded(String name) { - // Fast-path: skip toLowerCase allocation if the string is already all-lowercase. - // This avoids creating a new String object on every header set/get call - // for the common case of lowercase header names (e.g., "authorization", "etag", - // "x-ms-*" headers). - for (int i = 0; i < name.length(); i++) { - char c = name.charAt(i); - if (c >= 'A' && c <= 'Z') { - return name.toLowerCase(Locale.ROOT); - } - } - return name; - } - /** * Get {@link Map} representation of the HttpHeaders collection. * From 0d19062747b9ff41adf7afb17fa8a18b53b748d1 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 11:52:44 -0700 Subject: [PATCH 06/35] Eliminate URI parsing on Gateway request hot path The JFR profiling showed URI$Parser.parse() consuming ~757 CPU samples per 60s recording, all from RxGatewayStoreModel.getUri(). The root cause was a String->URI->String round-trip: we built a URI string, parsed it into java.net.URI (expensive), then Reactor Netty called .toASCIIString() to convert it back to a String. Changes: - RxGatewayStoreModel.getUri() now returns String directly (no URI parse) - HttpRequest: add uriString field with lazy URI parsing via uri() - HttpRequest: new String-based constructor to skip URI parse entirely - ReactorNettyClient: use request.uriString() instead of uri().toASCIIString() - RxGatewayStoreModel: use uriString() for diagnostics/error paths - URI is only parsed lazily on error paths that require a URI object Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../implementation/RxGatewayStoreModel.java | 59 ++++++++++++++----- .../implementation/http/HttpRequest.java | 46 ++++++++++++++- .../http/ReactorNettyClient.java | 4 +- 3 files changed, 89 insertions(+), 20 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java index 1f4db071493a..cd4f77465cfd 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java @@ -195,13 +195,17 @@ public void setCollectionCache(RxClientCollectionCache collectionCache) { @Override public HttpRequest wrapInHttpRequest(RxDocumentServiceRequest request, URI requestUri) throws Exception { + return wrapInHttpRequest(request, requestUri.toString(), requestUri.getPort()); + } + + private HttpRequest wrapInHttpRequest(RxDocumentServiceRequest request, String requestUriString, int port) throws Exception { HttpMethod method = getHttpMethod(request); HttpHeaders httpHeaders = this.getHttpRequestHeaders(request.getHeaders()); Flux contentAsByteArray = request.getContentAsByteArrayFlux(); return new HttpRequest(method, - requestUri, - requestUri.getPort(), + requestUriString, + port, httpHeaders, contentAsByteArray); } @@ -279,8 +283,8 @@ public Mono performRequest(RxDocumentServiceRequest r request.requestContext.cosmosDiagnostics = clientContext.createDiagnostics(); } - URI uri = getUri(request); - request.requestContext.resourcePhysicalAddress = uri.toString(); + String uri = getUri(request); + request.requestContext.resourcePhysicalAddress = uri; if (this.throughputControlStore != null) { return this.throughputControlStore.processRequest(request, Mono.defer(() -> this.performRequestInternal(request, uri))); @@ -303,7 +307,7 @@ protected boolean partitionKeyRangeResolutionNeeded(RxDocumentServiceRequest req * @param requestUri * @return Flux */ - public Mono performRequestInternal(RxDocumentServiceRequest request, URI requestUri) { + public Mono performRequestInternal(RxDocumentServiceRequest request, String requestUri) { if (!partitionKeyRangeResolutionNeeded(request)) { return this.performRequestInternalCore(request, requestUri); } @@ -316,12 +320,23 @@ public Mono performRequestInternal(RxDocumentServiceR }); } - private Mono performRequestInternalCore(RxDocumentServiceRequest request, URI requestUri) { + // Overload for callers that still pass URI + public Mono performRequestInternal(RxDocumentServiceRequest request, URI requestUri) { + return performRequestInternal(request, requestUri.toString()); + } + + private Mono performRequestInternalCore(RxDocumentServiceRequest request, String requestUri) { try { - HttpRequest httpRequest = request - .getEffectiveHttpTransportSerializer(this) - .wrapInHttpRequest(request, requestUri); + HttpRequest httpRequest; + HttpTransportSerializer effectiveSerializer = request.getEffectiveHttpTransportSerializer(this); + if (effectiveSerializer == this) { + // Fast path: use the string-based overload to avoid URI parsing + httpRequest = this.wrapInHttpRequest(request, requestUri, this.resolvePort(request)); + } else { + // Fallback for custom serializers (e.g., ThinClientStoreModel) + httpRequest = effectiveSerializer.wrapInHttpRequest(request, new URI(requestUri)); + } // Capture the request record early so it's available on both success and error paths. // Each retry creates a new HttpRequest with a new record, so this is per-attempt. @@ -378,7 +393,7 @@ public URI getRootUri(RxDocumentServiceRequest request) { return this.globalEndpointManager.resolveServiceEndpoint(request).getGatewayRegionalEndpoint(); } - private URI getUri(RxDocumentServiceRequest request) throws URISyntaxException { + private String getUri(RxDocumentServiceRequest request) { URI rootUri = request.getEndpointOverride(); if (rootUri == null) { if (request.getIsMedia()) { @@ -394,8 +409,8 @@ private URI getUri(RxDocumentServiceRequest request) throws URISyntaxException { path = StringUtils.EMPTY; } - // Build URI string directly to avoid the overhead of URI's multi-arg constructor - // which re-parses and re-validates all components. + // Build URI string directly — avoids java.net.URI parsing overhead entirely. + // The resulting string is passed to Reactor Netty which also accepts strings. String scheme = HTTP_CONNECTION_WITHOUT_TLS_ALLOWED ? rootUri.getScheme() : "https"; String host = rootUri.getHost(); int port = rootUri.getPort(); @@ -410,7 +425,19 @@ private URI getUri(RxDocumentServiceRequest request) throws URISyntaxException { sb.append(slashPath); } - return new URI(sb.toString()); + return sb.toString(); + } + + private int resolvePort(RxDocumentServiceRequest request) { + URI rootUri = request.getEndpointOverride(); + if (rootUri == null) { + if (request.getIsMedia()) { + rootUri = this.globalEndpointManager.getWriteEndpoints().get(0).getGatewayRegionalEndpoint(); + } else { + rootUri = getRootUri(request); + } + } + return rootUri.getPort(); } private String ensureSlashPrefixed(String path) { @@ -510,7 +537,7 @@ private Mono toDocumentServiceResponse(Mono toDocumentServiceResponse(Mono toDocumentServiceResponse(Mono body; @@ -31,6 +32,7 @@ public class HttpRequest { public HttpRequest(HttpMethod httpMethod, URI uri, int port, HttpHeaders httpHeaders) { this.httpMethod = httpMethod; this.uri = uri; + this.uriString = uri.toString(); this.port = port; this.headers = httpHeaders; this.reactorNettyRequestRecord = createReactorNettyRequestRecord(); @@ -44,7 +46,8 @@ public HttpRequest(HttpMethod httpMethod, URI uri, int port, HttpHeaders httpHea */ public HttpRequest(HttpMethod httpMethod, String uri, int port) throws URISyntaxException { this.httpMethod = httpMethod; - this.uri = new URI(uri); + this.uriString = uri; + this.uri = null; this.port = port; this.headers = new HttpHeaders(); this.reactorNettyRequestRecord = createReactorNettyRequestRecord(); @@ -61,6 +64,26 @@ public HttpRequest(HttpMethod httpMethod, String uri, int port) throws URISyntax public HttpRequest(HttpMethod httpMethod, URI uri, int port, HttpHeaders headers, Flux body) { this.httpMethod = httpMethod; this.uri = uri; + this.uriString = uri.toString(); + this.port = port; + this.headers = headers; + this.body = body; + this.reactorNettyRequestRecord = createReactorNettyRequestRecord(); + } + + /** + * Create a new HttpRequest instance from a URI string without parsing it. + * + * @param httpMethod the HTTP request method + * @param uriString the target address as a string (URI parsing is deferred) + * @param port the target port + * @param headers the HTTP headers to use with this request + * @param body the request content + */ + public HttpRequest(HttpMethod httpMethod, String uriString, int port, HttpHeaders headers, Flux body) { + this.httpMethod = httpMethod; + this.uriString = uriString; + this.uri = null; this.port = port; this.headers = headers; this.body = body; @@ -113,7 +136,25 @@ public HttpRequest withPort(int port) { * @return the target address */ public URI uri() { - return uri; + URI result = this.uri; + if (result == null) { + try { + result = new URI(this.uriString); + this.uri = result; + } catch (URISyntaxException e) { + throw new IllegalArgumentException("Invalid URI: " + this.uriString, e); + } + } + return result; + } + + /** + * Get the target address as a string without triggering URI parsing. + * + * @return the target address string + */ + public String uriString() { + return this.uriString; } /** @@ -124,6 +165,7 @@ public URI uri() { */ public HttpRequest withUri(URI uri) { this.uri = uri; + this.uriString = uri.toString(); return this; } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java index 3e7f763caeb8..a720fe803b7e 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java @@ -176,7 +176,7 @@ public Mono send(HttpRequest request) { @Override public Mono send(final HttpRequest request, Duration responseTimeout) { Objects.requireNonNull(request.httpMethod()); - Objects.requireNonNull(request.uri()); + Objects.requireNonNull(request.uriString()); Objects.requireNonNull(this.httpClientConfig); if(request.reactorNettyRequestRecord() == null) { ReactorNettyRequestRecord reactorNettyRequestRecord = new ReactorNettyRequestRecord(); @@ -202,7 +202,7 @@ public Mono send(final HttpRequest request, Duration responseTimeo .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectTimeoutMs) .responseTimeout(responseTimeout) .request(HttpMethod.valueOf(request.httpMethod().toString())) - .uri(request.uri().toASCIIString()) + .uri(request.uriString()) .send(bodySendDelegate(request)) .responseConnection((reactorNettyResponse, reactorNettyConnection) -> { HttpResponse httpResponse = new ReactorNettyHttpResponse(reactorNettyResponse, From 0d8e708d095683d91ccbb1e3a0102e8a1d838738 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 12:54:16 -0700 Subject: [PATCH 07/35] Add HTTP/2 support to benchmark workloads Add http2Enabled and http2MaxConcurrentStreams config options to TenantWorkloadConfig. When http2Enabled=true, configures Http2ConnectionConfig on GatewayConnectionConfig for AsyncBenchmark, AsyncCtlWorkload, and AsyncEncryptionBenchmark. Usage in workload JSON config: "http2Enabled": true, "http2MaxConcurrentStreams": 30 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../com/azure/cosmos/benchmark/AsyncBenchmark.java | 10 ++++++++++ .../cosmos/benchmark/TenantWorkloadConfig.java | 14 ++++++++++++++ .../cosmos/benchmark/ctl/AsyncCtlWorkload.java | 8 ++++++++ .../encryption/AsyncEncryptionBenchmark.java | 8 ++++++++ 4 files changed, 40 insertions(+) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index 62de71350d3b..a1c79871832b 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -14,6 +14,7 @@ import com.azure.cosmos.CosmosException; import com.azure.cosmos.DirectConnectionConfig; import com.azure.cosmos.GatewayConnectionConfig; +import com.azure.cosmos.Http2ConnectionConfig; import com.azure.cosmos.implementation.HttpConstants; import com.azure.cosmos.implementation.ImplementationBridgeHelpers; import com.azure.cosmos.models.CosmosClientTelemetryConfig; @@ -125,6 +126,15 @@ abstract class AsyncBenchmark implements Benchmark { } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); gatewayConnectionConfig.setMaxConnectionPoolSize(cfg.getMaxConnectionPoolSize()); + if (cfg.isHttp2Enabled()) { + Http2ConnectionConfig http2Config = gatewayConnectionConfig.getHttp2ConnectionConfig(); + http2Config.setEnabled(true); + if (cfg.getHttp2MaxConcurrentStreams() != null) { + http2Config.setMaxConcurrentStreams(cfg.getHttp2MaxConcurrentStreams()); + } + logger.info("HTTP/2 enabled with maxConcurrentStreams: {}", + http2Config.getMaxConcurrentStreams()); + } benchmarkSpecificClientBuilder = benchmarkSpecificClientBuilder.gatewayMode(gatewayConnectionConfig); } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java index e523852bcbd8..6e747788d73b 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java @@ -202,6 +202,12 @@ public enum Environment { @JsonProperty("connectionSharingAcrossClientsEnabled") private Boolean connectionSharingAcrossClientsEnabled; + @JsonProperty("http2Enabled") + private Boolean http2Enabled; + + @JsonProperty("http2MaxConcurrentStreams") + private Integer http2MaxConcurrentStreams; + @JsonProperty("preferredRegionsList") private String preferredRegionsList; @@ -338,6 +344,14 @@ public boolean isConnectionSharingAcrossClientsEnabled() { return connectionSharingAcrossClientsEnabled != null && connectionSharingAcrossClientsEnabled; } + public boolean isHttp2Enabled() { + return http2Enabled != null && http2Enabled; + } + + public Integer getHttp2MaxConcurrentStreams() { + return http2MaxConcurrentStreams; + } + public List getPreferredRegionsList() { if (preferredRegionsList == null || preferredRegionsList.isEmpty()) return null; List regions = new ArrayList<>(); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 3eb0ba4f4eb1..ee068d8b2fb4 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -12,6 +12,7 @@ import com.azure.cosmos.CosmosException; import com.azure.cosmos.DirectConnectionConfig; import com.azure.cosmos.GatewayConnectionConfig; +import com.azure.cosmos.Http2ConnectionConfig; import com.azure.cosmos.benchmark.Benchmark; import com.azure.cosmos.benchmark.BenchmarkHelper; import com.azure.cosmos.benchmark.PojoizedJson; @@ -91,6 +92,13 @@ public AsyncCtlWorkload(TenantWorkloadConfig workloadCfg, Scheduler scheduler) { } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); gatewayConnectionConfig.setMaxConnectionPoolSize(workloadCfg.getMaxConnectionPoolSize()); + if (workloadCfg.isHttp2Enabled()) { + Http2ConnectionConfig http2Config = gatewayConnectionConfig.getHttp2ConnectionConfig(); + http2Config.setEnabled(true); + if (workloadCfg.getHttp2MaxConcurrentStreams() != null) { + http2Config.setMaxConcurrentStreams(workloadCfg.getHttp2MaxConcurrentStreams()); + } + } cosmosClientBuilder = cosmosClientBuilder.gatewayMode(gatewayConnectionConfig); } cosmosClient = cosmosClientBuilder.buildAsyncClient(); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index 43734bbdeaca..50280a118590 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -12,6 +12,7 @@ import com.azure.cosmos.CosmosException; import com.azure.cosmos.DirectConnectionConfig; import com.azure.cosmos.GatewayConnectionConfig; +import com.azure.cosmos.Http2ConnectionConfig; import com.azure.cosmos.benchmark.Benchmark; import com.azure.cosmos.benchmark.BenchmarkHelper; import com.azure.cosmos.benchmark.Operation; @@ -110,6 +111,13 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); gatewayConnectionConfig.setMaxConnectionPoolSize(workloadCfg.getMaxConnectionPoolSize()); + if (workloadCfg.isHttp2Enabled()) { + Http2ConnectionConfig http2Config = gatewayConnectionConfig.getHttp2ConnectionConfig(); + http2Config.setEnabled(true); + if (workloadCfg.getHttp2MaxConcurrentStreams() != null) { + http2Config.setMaxConcurrentStreams(workloadCfg.getHttp2MaxConcurrentStreams()); + } + } cosmosClientBuilder = cosmosClientBuilder.gatewayMode(gatewayConnectionConfig); } cosmosClient = cosmosClientBuilder.buildAsyncClient(); From 7916e5c9ef7e4d4a3b6900f6101b455e7b0bb192 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 13:15:23 -0700 Subject: [PATCH 08/35] Fix http2Enabled/http2MaxConcurrentStreams not applied from tenantDefaults Add missing cases in applyField switch statement so these fields are properly inherited from tenantDefaults, not only from individual tenant entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java index 6e747788d73b..03f43408ff26 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java @@ -522,6 +522,10 @@ private void applyField(String key, String value, boolean overwrite) { if (overwrite || environment == null) environment = value; break; case "useSync": if (overwrite || useSync == null) useSync = Boolean.parseBoolean(value); break; + case "http2Enabled": + if (overwrite || http2Enabled == null) http2Enabled = Boolean.parseBoolean(value); break; + case "http2MaxConcurrentStreams": + if (overwrite || http2MaxConcurrentStreams == null) http2MaxConcurrentStreams = Integer.parseInt(value); break; // JVM-global properties (minConnectionPoolSizePerEndpoint, isPartitionLevelCircuitBreakerEnabled, // isPerPartitionAutomaticFailoverRequired) are handled in BenchmarkConfig, not per-tenant. case "minConnectionPoolSizePerEndpoint": From 277cb83b3e360c51d496dff28700bc0d604a0834 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 13:26:15 -0700 Subject: [PATCH 09/35] Add test to guard applyField coverage for new config fields Ensures every @JsonProperty field in TenantWorkloadConfig has a corresponding case in the applyField() switch statement. This prevents future fields from silently failing to inherit from tenantDefaults, which was the root cause of the http2Enabled bug. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../TenantWorkloadConfigApplyFieldTest.java | 67 ++++ .../Command line suite/Command line test.html | 161 ++++++++ .../Command line suite/Command line test.xml | 47 +++ .../Command line suite/testng-failed.xml | 13 + .../test-output/bullet_point.png | Bin 0 -> 356 bytes .../test-output/collapseall.gif | Bin 0 -> 157 bytes .../test-output/emailable-report.html | 56 +++ .../test-output/failed.png | Bin 0 -> 977 bytes .../test-output/index.html | 284 +++++++++++++++ .../test-output/jquery.min.js | 2 + ...ark.TenantWorkloadConfigApplyFieldTest.xml | 48 +++ .../test-output/navigator-bullet.png | Bin 0 -> 352 bytes .../Command line test.properties | 1 + .../old/Command line suite/classes.html | 29 ++ .../old/Command line suite/groups.html | 3 + .../old/Command line suite/index.html | 6 + .../old/Command line suite/main.html | 2 + .../methods-alphabetical.html | 6 + .../Command line suite/methods-not-run.html | 2 + .../old/Command line suite/methods.html | 6 + .../Command line suite/reporter-output.html | 1 + .../old/Command line suite/testng.xml.html | 1 + .../old/Command line suite/toc.html | 30 ++ .../test-output/old/index.html | 9 + .../test-output/passed.png | Bin 0 -> 1019 bytes .../test-output/skipped.png | Bin 0 -> 967 bytes .../test-output/testng-failed.xml | 13 + .../test-output/testng-reports.css | 326 +++++++++++++++++ .../test-output/testng-reports.js | 122 +++++++ .../test-output/testng-reports1.css | 344 ++++++++++++++++++ .../test-output/testng-reports2.js | 76 ++++ .../test-output/testng-results.xml | 66 ++++ .../test-output/testng.css | 9 + 33 files changed, 1730 insertions(+) create mode 100644 sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/collapseall.gif create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/junitreports/TEST-com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/Command line test.properties create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/classes.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/skipped.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java new file mode 100644 index 000000000000..62143c20997e --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.cosmos.benchmark; + +import com.fasterxml.jackson.annotation.JsonProperty; +import org.testng.annotations.Test; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Ensures every @JsonProperty field in TenantWorkloadConfig has a corresponding + * case in the applyField() switch statement, so that tenantDefaults inheritance works. + */ +public class TenantWorkloadConfigApplyFieldTest { + + // Fields that are intentionally excluded from applyField + private static final Set EXCLUDED_FIELDS = new HashSet<>(Arrays.asList( + "id" // tenant ID should not be inherited from defaults + )); + + @Test(groups = {"unit"}) + public void allJsonPropertiesShouldHaveApplyFieldCase() throws IOException { + // Collect all @JsonProperty names from the class + Set jsonPropertyNames = new HashSet<>(); + for (Field field : TenantWorkloadConfig.class.getDeclaredFields()) { + JsonProperty annotation = field.getAnnotation(JsonProperty.class); + if (annotation != null) { + jsonPropertyNames.add(annotation.value()); + } + } + + // Parse the source file to find all case "..." entries in applyField + Path sourceFile = Paths.get("src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java"); + String source = new String(Files.readAllBytes(sourceFile)); + Set caseNames = new HashSet<>(); + Matcher matcher = Pattern.compile("case\\s+\"([^\"]+)\"").matcher(source); + while (matcher.find()) { + caseNames.add(matcher.group(1)); + } + + // Every @JsonProperty (except excluded) should have a case in applyField + Set missingCases = new HashSet<>(); + for (String propName : jsonPropertyNames) { + if (!EXCLUDED_FIELDS.contains(propName) && !caseNames.contains(propName)) { + missingCases.add(propName); + } + } + + assertThat(missingCases) + .as("@JsonProperty fields missing from applyField() switch — " + + "these fields won't be inherited from tenantDefaults. " + + "Add a case in applyField() for each, or add to EXCLUDED_FIELDS if intentional.") + .isEmpty(); + } +} diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html new file mode 100644 index 000000000000..fe7b28114b7b --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html @@ -0,0 +1,161 @@ + + +TestNG: Command line test + + + + + + + + +

Command line test

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:0/1/0
Started on:Thu Mar 12 13:25:41 PDT 2026
Total time:0 seconds (13 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + +
FAILED TESTS
Test methodExceptionTime (seconds)Instance
allJsonPropertiesShouldHaveApplyFieldCase
Test class: com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
+	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
+	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
+	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
+	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
+	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
+	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:808)
+	at org.testng.TestRunner.run(TestRunner.java:603)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.runSuites(TestNG.java:1092)
+	at org.testng.TestNG.run(TestNG.java:1060)
+	at org.testng.TestNG.privateMain(TestNG.java:1403)
+	at org.testng.TestNG.main(TestNG.java:1367)
+
Click to show all stack frames +
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
+	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
+	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
+	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
+	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
+	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
+	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:808)
+	at org.testng.TestRunner.run(TestRunner.java:603)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.runSuites(TestNG.java:1092)
+	at org.testng.TestNG.run(TestNG.java:1060)
+	at org.testng.TestNG.privateMain(TestNG.java:1403)
+	at org.testng.TestNG.main(TestNG.java:1367)
+
0com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df

+ + \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml new file mode 100644 index 000000000000..fb074125d325 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml new file mode 100644 index 000000000000..f11054d19b32 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png new file mode 100644 index 0000000000000000000000000000000000000000..176e6d5b3d64d032e76c493e5811a1cf839220b5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html new file mode 100644 index 000000000000..e3a1912ee694 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html @@ -0,0 +1,56 @@ + + + + +TestNG Report + + + + + + + +
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
Command line suite
Command line test000113
+ +
ClassMethodStartTime (ms)
Command line suite
Command line test — failed
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTestallJsonPropertiesShouldHaveApplyFieldCase17733471411692
+

Command line test

com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest#allJsonPropertiesShouldHaveApplyFieldCase

Exception
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 + at java.base/java.lang.ClassLoader.defineClass1(Native Method) + at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) + at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) + at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) + at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) + at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) + at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) + at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) + at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) + at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) + at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) + at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.testng.TestRunner.privateRun(TestRunner.java:808) + at org.testng.TestRunner.run(TestRunner.java:603) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) + at org.testng.SuiteRunner.run(SuiteRunner.java:326) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) + at org.testng.TestNG.runSuites(TestNG.java:1092) + at org.testng.TestNG.run(TestNG.java:1060) + at org.testng.TestNG.privateMain(TestNG.java:1403) + at org.testng.TestNG.main(TestNG.java:1367) +

back to summary

+ + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png new file mode 100644 index 0000000000000000000000000000000000000000..c117be59a9ecd1da15ebf48f6b7f53496302a7cd GIT binary patch literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html new file mode 100644 index 000000000000..e7cc45f775e0 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html @@ -0,0 +1,284 @@ + + + + + + TestNG reports + + + + + + + + + + + +
+ Test results + +
+ 1 suite, 1 failed test +
+ +
+
+
+
+
+ + com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest +
+
+
+
+ + + allJsonPropertiesShouldHaveApplyFieldCase +
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 + at java.base/java.lang.ClassLoader.defineClass1(Native Method) + at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) + at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) + at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) + at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) + at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) + at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) + at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) + at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) + at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) + at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) + at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.testng.TestRunner.privateRun(TestRunner.java:808) + at org.testng.TestRunner.run(TestRunner.java:603) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) + at org.testng.SuiteRunner.run(SuiteRunner.java:326) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) + at org.testng.TestNG.runSuites(TestNG.java:1092) + at org.testng.TestNG.run(TestNG.java:1060) + at org.testng.TestNG.privateMain(TestNG.java:1403) + at org.testng.TestNG.main(TestNG.java:1367) + +
+
+
+
+
+
+
+
+
+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
+<suite name="Command line suite" verbose="2">
+  <test thread-count="5" name="Command line test" verbose="2">
+    <classes>
+      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
+    </classes>
+  </test> <!-- Command line test -->
+</suite> <!-- Command line suite -->
+            
+
+
+
+
+ Tests for Command line suite +
+
+
    +
  • + Command line test (1 class) +
  • +
+
+
+
+
+ Groups for Command line suite +
+
+
+ unit +
+
+ allJsonPropertiesShouldHaveApplyFieldCase +
+
+
+
+
+
+
+ Times for Command line suite +
+
+
+ + Total running time: 2 ms +
+
+
+
+
+
+
+ Reporter output for Command line suite +
+
+
+
+
+
+ 0 ignored methods +
+
+
+
+
+
+ Methods in chronological order +
+
+
+
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
+
+ + + allJsonPropertiesShouldHaveApplyFieldCase + 0 ms +
+
+
+
+
+ + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js new file mode 100644 index 000000000000..b0614034ad3a --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..36d90d395c51912e718b89dd88b4a3fb53aa1d85 GIT binary patch literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 + +Class name +Method name +Groups + +com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest +   + +@Test + + +  +allJsonPropertiesShouldHaveApplyFieldCase +unit + + +@BeforeClass + + +@BeforeMethod + + +@AfterMethod + + +@AfterClass + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html new file mode 100644 index 000000000000..027f83fca723 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html @@ -0,0 +1,3 @@ +

Groups used for this test run

+ +
Group nameMethods
unitTenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase()[pri:0, instance:com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df]
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html new file mode 100644 index 000000000000..3577bd28a9f6 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html @@ -0,0 +1,6 @@ +Results for Command line suite + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html new file mode 100644 index 000000000000..0ee4b5b499ac --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html @@ -0,0 +1,2 @@ +Results for Command line suite +Select a result on the left-hand pane. diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html new file mode 100644 index 000000000000..872d1d4a0de8 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html @@ -0,0 +1,6 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html new file mode 100644 index 000000000000..54b14cb854b6 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html @@ -0,0 +1,2 @@ +

Methods that were not run

+
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html new file mode 100644 index 000000000000..872d1d4a0de8 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html @@ -0,0 +1,6 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html new file mode 100644 index 000000000000..063bc2e96fd0 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html @@ -0,0 +1 @@ +

Reporter output

\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html new file mode 100644 index 000000000000..fcf1c50c6537 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html @@ -0,0 +1 @@ +testng.xml for Command line suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command line suite" verbose="2">
  <test thread-count="5" name="Command line test" verbose="2">
    <classes>
      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
    </classes>
  </test> <!-- Command line test -->
</suite> <!-- Command line suite -->
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html new file mode 100644 index 000000000000..1dde178e49ee --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html @@ -0,0 +1,30 @@ + + +Results for Command line suite + + + + +

Results for
Command line suite

+ + + + + + + + + + +
1 test1 class1 method:
+  chronological
+  alphabetical
+  not run (0)
1 groupreporter outputtestng.xml
+ +

+

+
Command line test (0/1/0) + Results +
+
+ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html new file mode 100644 index 000000000000..f0ca6453a9b1 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html @@ -0,0 +1,9 @@ + + + + +

Test results

+ + + +
SuitePassedFailedSkippedtestng.xml
Total010 
Command line suite010Link
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png new file mode 100644 index 0000000000000000000000000000000000000000..45e85bbfd0f5e85def14b896cfd4331675be2759 GIT binary patch literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml new file mode 100644 index 000000000000..f11054d19b32 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css new file mode 100644 index 000000000000..d7b75c404782 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css @@ -0,0 +1,326 @@ +body { + margin: 0 0 5px 5px; +} + +ul { + margin: 0; +} + +li { + list-style-type: none; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.navigator-selected { + background: #ffa500; +} + +.wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + overflow: auto; +} + +.navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto; +} + +.suite { + margin: 0 10px 10px 0; + background-color: #fff8dc; +} + +.suite-name { + padding-left: 10px; + font-size: 25px; + font-family: Times, sans-serif; +} + +.main-panel-header { + padding: 5px; + background-color: #9FB4D9; /*afeeee*/; + font-family: monospace; + font-size: 18px; +} + +.main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #DEE8FC; /*d0ffff*/; +} + +.rounded-window { + border-radius: 10px; + border-style: solid; + border-width: 1px; +} + +.rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto; +} + +.light-rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; +} + +.rounded-window-bottom { + border-style: solid; + border-width: 0 1px 1px 1px; + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto; +} + +.method-name { + font-size: 12px; + font-family: monospace; +} + +.method-content { + border-style: solid; + border-width: 0 0 1px 0; + margin-bottom: 10px; + padding-bottom: 5px; + width: 80%; +} + +.parameters { + font-size: 14px; + font-family: monospace; +} + +.stack-trace { + white-space: pre; + font-family: monospace; + font-size: 12px; + font-weight: bold; + margin-top: 0; + margin-left: 20px; +} + +.testng-xml { + font-family: monospace; +} + +.method-list-content { + margin-left: 10px; +} + +.navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; +} + +.suite-section-title { + margin-top: 10px; + width: 80%; + border-style: solid; + border-width: 1px 0 0 0; + font-family: Times, sans-serif; + font-size: 18px; + font-weight: bold; +} + +.suite-section-content { + list-style-image: url(bullet_point.png); +} + +.top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0 0 5px 0; + background-color: #0066ff; + font-family: Times, sans-serif; + color: #fff; + text-align: center; +} +.button{ + position: absolute; + margin-left:500px; + margin-top:8px; + background-color: white; + color:#0066ff; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight:bold; + border-color:#0066ff ; + border-radius:25px; + cursor: pointer; + height:30px; + width:150px; + outline:none; + +} + +.top-banner-title-font { + font-size: 25px; +} + +.test-name { + font-family: 'Lucida Grande', sans-serif; + font-size: 16px; +} + +.suite-icon { + padding: 5px; + float: right; + height: 20px; +} + +.test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0 0 1px 0; + border-style: solid; + padding: 5px; +} + +.test-group-name { + font-weight: bold; +} + +.method-in-group { + font-size: 16px; + margin-left: 80px; +} + +table.google-visualization-table-table { + width: 100%; +} + +.reporter-method-name { + font-size: 14px; + font-family: monospace; +} + +.reporter-method-output-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0 0 0 1px; + border-style: solid; +} + +.ignored-class-div { + font-size: 14px; + font-family: monospace; +} + +.ignored-methods-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0 0 0 1px; + border-style: solid; +} + +.border-failed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #f00; +} + +.border-skipped { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #edc600; +} + +.border-passed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #19f52d; +} + +.times-div { + text-align: center; + padding: 5px; +} + +.suite-total-time { + font: 16px 'Lucida Grande'; +} + +.configuration-suite { + margin-left: 20px; +} + +.configuration-test { + margin-left: 40px; +} + +.configuration-class { + margin-left: 60px; +} + +.configuration-method { + margin-left: 80px; +} + +.test-method { + margin-left: 100px; +} + +.chronological-class { + background-color: skyblue; + border-style: solid; + border-width: 0 0 1px 1px; +} + +.method-start { + float: right; +} + +.chronological-class-name { + padding: 0 0 0 5px; + color: #008; +} + +.after, .before, .test-method { + font-family: monospace; + font-size: 14px; +} + +.navigator-suite-header { + font-size: 22px; + margin: 0 10px 5px 0; + background-color: #deb887; + text-align: center; +} + +.collapse-all-icon { + padding: 5px; + float: right; +} +/*retro Theme*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js new file mode 100644 index 000000000000..c1a84a35d453 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js @@ -0,0 +1,122 @@ +$(document).ready(function() { + $('a.navigator-link').on("click", function() { + // Extract the panel for this link + var panel = getPanelName($(this)); + + // Mark this link as currently selected + $('.navigator-link').parent().removeClass('navigator-selected'); + $(this).parent().addClass('navigator-selected'); + + showPanel(panel); + }); + + installMethodHandlers('failed'); + installMethodHandlers('skipped'); + installMethodHandlers('passed', true); // hide passed methods by default + + $('a.method').on("click", function() { + showMethod($(this)); + return false; + }); + + // Hide all the panels and display the first one (do this last + // to make sure the click() will invoke the listeners) + $('.panel').hide(); + $('.navigator-link').first().trigger("click"); + + // Collapse/expand the suites + $('a.collapse-all-link').on("click", function() { + var contents = $('.navigator-suite-content'); + if (contents.css('display') == 'none') { + contents.show(); + } else { + contents.hide(); + } + }); +}); + +// The handlers that take care of showing/hiding the methods +function installMethodHandlers(name, hide) { + function getContent(t) { + return $('.method-list-content.' + name + "." + t.attr('panel-name')); + } + + function getHideLink(t, name) { + var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); + return $(s); + } + + function getShowLink(t, name) { + return $('a.show-methods.' + name + "." + t.attr('panel-name')); + } + + function getMethodPanelClassSel(element, name) { + var panelName = getPanelName(element); + var sel = '.' + panelName + "-class-" + name; + return $(sel); + } + + $('a.hide-methods.' + name).on("click", function() { + var w = getContent($(this)); + w.hide(); + getHideLink($(this), name).hide(); + getShowLink($(this), name).show(); + getMethodPanelClassSel($(this), name).hide(); + }); + + $('a.show-methods.' + name).on("click", function() { + var w = getContent($(this)); + w.show(); + getHideLink($(this), name).show(); + getShowLink($(this), name).hide(); + showPanel(getPanelName($(this))); + getMethodPanelClassSel($(this), name).show(); + }); + + if (hide) { + $('a.hide-methods.' + name).trigger("click"); + } else { + $('a.show-methods.' + name).trigger("click"); + } +} + +function getHashForMethod(element) { + return element.attr('hash-for-method'); +} + +function getPanelName(element) { + return element.attr('panel-name'); +} + +function showPanel(panelName) { + $('.panel').hide(); + var panel = $('.panel[panel-name="' + panelName + '"]'); + panel.show(); +} + +function showMethod(element) { + var hashTag = getHashForMethod(element); + var panelName = getPanelName(element); + showPanel(panelName); + var current = document.location.href; + var base = current.substring(0, current.indexOf('#')) + document.location.href = base + '#' + hashTag; + var newPosition = $(document).scrollTop() - 65; + $(document).scrollTop(newPosition); +} + +function drawTable() { + for (var i = 0; i < suiteTableInitFunctions.length; i++) { + window[suiteTableInitFunctions[i]](); + } + + for (var k in window.suiteTableData) { + var v = window.suiteTableData[k]; + var div = v.tableDiv; + var data = v.tableData + var table = new google.visualization.Table(document.getElementById(div)); + table.draw(data, { + showRowNumber : false + }); + } +} diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css new file mode 100644 index 000000000000..570323ffb8fe --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css @@ -0,0 +1,344 @@ +body { + background-color: whitesmoke; + margin: 0 0 5px 5px; +} +ul { + margin-top: 10px; + margin-left:-10px; +} + li { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding:5px 5px; + } + a { + text-decoration: none; + color: black; + font-size: 14px; + } + + a:hover { + color:black ; + text-decoration: underline; + } + + .navigator-selected { + /* #ffa500; Mouse hover color after click Orange.*/ + background:#027368 + } + + .wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + margin-right:9px; + overflow: auto;/*imortant*/ + } + + .navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto;/*important*/ + } + + .suite { + margin: -5px 10px 10px 5px; + background-color: whitesmoke ;/*Colour of the left bside box*/ + } + + .suite-name { + font-size: 24px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/ + color: white; + } + + .main-panel-header { + padding: 5px; + background-color: #027368; /*afeeee*/; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color:white; + font-size: 18px; + } + + .main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/ + } + + .rounded-window { + border-style: dotted; + border-width: 1px;/*Border of left Side box*/ + background-color: whitesmoke; + border-radius: 10px; + } + + .rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto;/*Top of RightSide box*/ + } + + .light-rounded-window-top { + background-color: #027368; + padding-left:120px; + border-radius: 10px; + + } + + .rounded-window-bottom { + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto;/*Bottom of rightSide box*/ + } + + .method-name { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold; + } + + .method-content { + border-style: solid; + border-width: 0 0 1px 0; + margin-bottom: 10px; + padding-bottom: 5px; + width: 100%; + } + + .parameters { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .stack-trace { + white-space: pre; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: bold; + margin-top: 0; + margin-left: 20px; /*Error Stack Trace Message*/ + } + + .testng-xml { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .method-list-content { + margin-left: 10px; + } + + .navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; + } + + .suite-section-title { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight:bold; + background-color: #8C8887; + margin-left: -10px; + margin-top:10px; + padding:6px; + } + + .suite-section-content { + list-style-image: url(bullet_point.png); + background-color: whitesmoke; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + overflow: hidden; + } + + .top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0 0 5px 0; + background-color: #027368; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 18px; + color: #fff; + text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/ + } + + .top-banner-title-font { + font-size: 25px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 3px; + float: right; + } + + .test-name { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + } + + .suite-icon { + padding: 5px; + float: right; + height: 20px; + } + + .test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0 0 1px 0; + border-style: solid; + padding: 5px; + } + + .test-group-name { + font-weight: bold; + } + + .method-in-group { + font-size: 16px; + margin-left: 80px; + } + + table.google-visualization-table-table { + width: 100%; + } + + .reporter-method-name { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .reporter-method-output-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + border-width: 0 0 0 1px; + border-style: solid; + } + + .ignored-class-div { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .ignored-methods-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + border-width: 0 0 0 1px; + border-style: solid; + } + + .border-failed { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #F20505; + } + + .border-skipped { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #F2BE22; + } + + .border-passed { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #038C73; + } + + .times-div { + text-align: center; + padding: 5px; + } + + .suite-total-time { + font: 16px 'Lucida Grande'; + } + + .configuration-suite { + margin-left: 20px; + } + + .configuration-test { + margin-left: 40px; + } + + .configuration-class { + margin-left: 60px; + } + + .configuration-method { + margin-left: 80px; + } + + .test-method { + margin-left: 100px; + } + + .chronological-class { + background-color: #CCD0D1; + border-width: 0 0 1px 1px;/*Chronological*/ + } + + .method-start { + float: right; + } + + .chronological-class-name { + padding: 0 0 0 5px; + margin-top:5px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #008; + } + + .after, .before, .test-method { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + margin-top:5px; + } + + .navigator-suite-header { + font-size: 18px; + margin: 0px 10px 10px 5px; + padding: 5px; + border-radius: 10px; + background-color: #027368; + color: white; + font-weight:bold; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + text-align: center; /*All Suites on top of left box*//*Status: -Completed*/ + } + + .collapse-all-icon { + padding: 3px; + float: right; + } + .button{ + position: absolute; + margin-left:500px; + margin-top:8px; + background-color: white; + color:#027368; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight:bold; + border-color:#027368; + border-radius:25px; + cursor: pointer; + height:30px; + width:150px; + outline: none; +} +/*Author: - Akhil Gullapalli*/ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js new file mode 100644 index 000000000000..5342859fa4df --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js @@ -0,0 +1,76 @@ +window.onload = function () { + let cookies = document.cookie; + let cookieValue = cookies.split('='); + if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') { + document.getElementById('retro').setAttribute('disabled', 'false'); + } else if (cookieValue[1] === 'Switch Ultra Theme' || + localStorage.getItem('Theme') === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('retro').setAttribute('disabled', 'false'); + + } else if (cookieValue[1] === 'Switch Retro Theme' || + localStorage.getItem('Theme') === 'Switch Retro Theme') { + if (cookieValue[1] === 'Switch Ultra Theme' || + localStorage.getItem('Theme') === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('retro').setAttribute('disabled', 'false'); + + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('retro').removeAttribute('disabled'); + document.getElementById('ultra').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + + } else if (select === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('ultra').removeAttribute('disabled'); + document.getElementById('retro').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + } + } else if (cookieValue[1] === 'Switch Retro Theme' || + localStorage.getItem('Theme') === 'Switch Retro Theme') { + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('ultra').setAttribute('disabled', 'false'); + } +} +document.getElementById('button').onclick = function () { + let select = document.getElementById('button').innerText; + if (select === 'Switch Retro Theme') { + let d = new Date(); + days = 365; + d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 + document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('retro').removeAttribute('disabled'); + document.getElementById('ultra').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + + } else if (select === 'Switch Ultra Theme') { + let d = new Date(); + days = 365; + d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 + document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('ultra').removeAttribute('disabled'); + document.getElementById('retro').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + } +} +//Function to mouse hovering affect. +document.getElementById('button').onmouseover = function () { + document.getElementById('button').style.borderRadius = "25px"; + document.getElementById('button').style.width = "180px"; + document.getElementById('button').style.height = "45px"; + document.getElementById('button').style.marginTop = "1px"; + +} +//Function to mouse out affect +document.getElementById('button').onmouseout = function () { + document.getElementById('button').style.borderRadius = "25px"; + document.getElementById('button').style.width = "150px"; + document.getElementById('button').style.height = "30px"; + document.getElementById('button').style.marginTop = "8px"; + +} + +//This is the file where we handle the switching of the Themes. +/*Author:- Akhil Gullapalli*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml new file mode 100644 index 000000000000..6ed30a81cada --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css new file mode 100644 index 000000000000..5124ba863b37 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css @@ -0,0 +1,9 @@ +.invocation-failed, .test-failed { background-color: #DD0000; } +.invocation-percent, .test-percent { background-color: #006600; } +.invocation-passed, .test-passed { background-color: #00AA00; } +.invocation-skipped, .test-skipped { background-color: #CCCC00; } + +.main-page { + font-size: x-large; +} + From 89339b4118d0b7566915c964f3023a34d6a5ff2d Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 13:26:32 -0700 Subject: [PATCH 10/35] Remove test-output from tracking and add to .gitignore Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- sdk/cosmos/azure-cosmos-benchmark/.gitignore | 1 + .../Command line suite/Command line test.html | 161 -------- .../Command line suite/Command line test.xml | 47 --- .../Command line suite/testng-failed.xml | 13 - .../test-output/bullet_point.png | Bin 356 -> 0 bytes .../test-output/collapseall.gif | Bin 157 -> 0 bytes .../test-output/emailable-report.html | 56 --- .../test-output/failed.png | Bin 977 -> 0 bytes .../test-output/index.html | 284 --------------- .../test-output/jquery.min.js | 2 - ...ark.TenantWorkloadConfigApplyFieldTest.xml | 48 --- .../test-output/navigator-bullet.png | Bin 352 -> 0 bytes .../Command line test.properties | 1 - .../old/Command line suite/classes.html | 29 -- .../old/Command line suite/groups.html | 3 - .../old/Command line suite/index.html | 6 - .../old/Command line suite/main.html | 2 - .../methods-alphabetical.html | 6 - .../Command line suite/methods-not-run.html | 2 - .../old/Command line suite/methods.html | 6 - .../Command line suite/reporter-output.html | 1 - .../old/Command line suite/testng.xml.html | 1 - .../old/Command line suite/toc.html | 30 -- .../test-output/old/index.html | 9 - .../test-output/passed.png | Bin 1019 -> 0 bytes .../test-output/skipped.png | Bin 967 -> 0 bytes .../test-output/testng-failed.xml | 13 - .../test-output/testng-reports.css | 326 ----------------- .../test-output/testng-reports.js | 122 ------- .../test-output/testng-reports1.css | 344 ------------------ .../test-output/testng-reports2.js | 76 ---- .../test-output/testng-results.xml | 66 ---- .../test-output/testng.css | 9 - 33 files changed, 1 insertion(+), 1663 deletions(-) create mode 100644 sdk/cosmos/azure-cosmos-benchmark/.gitignore delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/collapseall.gif delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/junitreports/TEST-com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/Command line test.properties delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/classes.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/skipped.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css diff --git a/sdk/cosmos/azure-cosmos-benchmark/.gitignore b/sdk/cosmos/azure-cosmos-benchmark/.gitignore new file mode 100644 index 000000000000..3510f1ce1f3b --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/.gitignore @@ -0,0 +1 @@ +sdk/cosmos/azure-cosmos-benchmark/test-output/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html deleted file mode 100644 index fe7b28114b7b..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html +++ /dev/null @@ -1,161 +0,0 @@ - - -TestNG: Command line test - - - - - - - - -

Command line test

- - - - - - - - - - - -
Tests passed/Failed/Skipped:0/1/0
Started on:Thu Mar 12 13:25:41 PDT 2026
Total time:0 seconds (13 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - -
FAILED TESTS
Test methodExceptionTime (seconds)Instance
allJsonPropertiesShouldHaveApplyFieldCase
Test class: com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
-	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
-	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
-	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
-	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
-	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
-	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
-	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
-	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
-	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
-	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
-	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
-	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
-	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-	at org.testng.TestRunner.privateRun(TestRunner.java:808)
-	at org.testng.TestRunner.run(TestRunner.java:603)
-	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
-	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
-	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
-	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
-	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
-	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
-	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
-	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
-	at org.testng.TestNG.runSuites(TestNG.java:1092)
-	at org.testng.TestNG.run(TestNG.java:1060)
-	at org.testng.TestNG.privateMain(TestNG.java:1403)
-	at org.testng.TestNG.main(TestNG.java:1367)
-
Click to show all stack frames -
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
-	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
-	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
-	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
-	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
-	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
-	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
-	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
-	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
-	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
-	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
-	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
-	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
-	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-	at org.testng.TestRunner.privateRun(TestRunner.java:808)
-	at org.testng.TestRunner.run(TestRunner.java:603)
-	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
-	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
-	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
-	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
-	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
-	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
-	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
-	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
-	at org.testng.TestNG.runSuites(TestNG.java:1092)
-	at org.testng.TestNG.run(TestNG.java:1060)
-	at org.testng.TestNG.privateMain(TestNG.java:1403)
-	at org.testng.TestNG.main(TestNG.java:1367)
-
0com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df

- - \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml deleted file mode 100644 index fb074125d325..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml deleted file mode 100644 index f11054d19b32..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png deleted file mode 100644 index 176e6d5b3d64d032e76c493e5811a1cf839220b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html deleted file mode 100644 index e3a1912ee694..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - -TestNG Report - - - - - - - -
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
Command line suite
Command line test000113
- -
ClassMethodStartTime (ms)
Command line suite
Command line test — failed
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTestallJsonPropertiesShouldHaveApplyFieldCase17733471411692
-

Command line test

com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest#allJsonPropertiesShouldHaveApplyFieldCase

Exception
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) - at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) - at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) - at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) - at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) - at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) - at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) - at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) - at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) - at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) - at org.testng.TestRunner.privateRun(TestRunner.java:808) - at org.testng.TestRunner.run(TestRunner.java:603) - at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) - at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) - at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) - at org.testng.SuiteRunner.run(SuiteRunner.java:326) - at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) - at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) - at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) - at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) - at org.testng.TestNG.runSuites(TestNG.java:1092) - at org.testng.TestNG.run(TestNG.java:1060) - at org.testng.TestNG.privateMain(TestNG.java:1403) - at org.testng.TestNG.main(TestNG.java:1367) -

back to summary

- - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png deleted file mode 100644 index c117be59a9ecd1da15ebf48f6b7f53496302a7cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html deleted file mode 100644 index e7cc45f775e0..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - TestNG reports - - - - - - - - - - - -
- Test results - -
- 1 suite, 1 failed test -
- -
-
-
-
-
- - com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest -
-
-
-
- - - allJsonPropertiesShouldHaveApplyFieldCase -
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) - at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) - at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) - at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) - at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) - at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) - at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) - at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) - at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) - at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) - at org.testng.TestRunner.privateRun(TestRunner.java:808) - at org.testng.TestRunner.run(TestRunner.java:603) - at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) - at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) - at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) - at org.testng.SuiteRunner.run(SuiteRunner.java:326) - at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) - at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) - at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) - at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) - at org.testng.TestNG.runSuites(TestNG.java:1092) - at org.testng.TestNG.run(TestNG.java:1060) - at org.testng.TestNG.privateMain(TestNG.java:1403) - at org.testng.TestNG.main(TestNG.java:1367) - -
-
-
-
-
-
-
-
-
-
-
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
-<suite name="Command line suite" verbose="2">
-  <test thread-count="5" name="Command line test" verbose="2">
-    <classes>
-      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
-    </classes>
-  </test> <!-- Command line test -->
-</suite> <!-- Command line suite -->
-            
-
-
-
-
- Tests for Command line suite -
-
-
    -
  • - Command line test (1 class) -
  • -
-
-
-
-
- Groups for Command line suite -
-
-
- unit -
-
- allJsonPropertiesShouldHaveApplyFieldCase -
-
-
-
-
-
-
- Times for Command line suite -
-
-
- - Total running time: 2 ms -
-
-
-
-
-
-
- Reporter output for Command line suite -
-
-
-
-
-
- 0 ignored methods -
-
-
-
-
-
- Methods in chronological order -
-
-
-
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
-
- - - allJsonPropertiesShouldHaveApplyFieldCase - 0 ms -
-
-
-
-
- - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js deleted file mode 100644 index b0614034ad3a..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png deleted file mode 100644 index 36d90d395c51912e718b89dd88b4a3fb53aa1d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 - -Class name -Method name -Groups - -com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest -   - -@Test - - -  -allJsonPropertiesShouldHaveApplyFieldCase -unit - - -@BeforeClass - - -@BeforeMethod - - -@AfterMethod - - -@AfterClass - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html deleted file mode 100644 index 027f83fca723..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html +++ /dev/null @@ -1,3 +0,0 @@ -

Groups used for this test run

- -
Group nameMethods
unitTenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase()[pri:0, instance:com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df]
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html deleted file mode 100644 index 3577bd28a9f6..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Results for Command line suite - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html deleted file mode 100644 index 0ee4b5b499ac..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html +++ /dev/null @@ -1,2 +0,0 @@ -Results for Command line suite -Select a result on the left-hand pane. diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html deleted file mode 100644 index 872d1d4a0de8..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html +++ /dev/null @@ -1,6 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

- - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html deleted file mode 100644 index 54b14cb854b6..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html +++ /dev/null @@ -1,2 +0,0 @@ -

Methods that were not run

-
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html deleted file mode 100644 index 872d1d4a0de8..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html +++ /dev/null @@ -1,6 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

- - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html deleted file mode 100644 index 063bc2e96fd0..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html +++ /dev/null @@ -1 +0,0 @@ -

Reporter output

\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html deleted file mode 100644 index fcf1c50c6537..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html +++ /dev/null @@ -1 +0,0 @@ -testng.xml for Command line suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command line suite" verbose="2">
  <test thread-count="5" name="Command line test" verbose="2">
    <classes>
      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
    </classes>
  </test> <!-- Command line test -->
</suite> <!-- Command line suite -->
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html deleted file mode 100644 index 1dde178e49ee..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html +++ /dev/null @@ -1,30 +0,0 @@ - - -Results for Command line suite - - - - -

Results for
Command line suite

- - - - - - - - - - -
1 test1 class1 method:
-  chronological
-  alphabetical
-  not run (0)
1 groupreporter outputtestng.xml
- -

-

-
Command line test (0/1/0) - Results -
-
- \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html deleted file mode 100644 index f0ca6453a9b1..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - -

Test results

- - - -
SuitePassedFailedSkippedtestng.xml
Total010 
Command line suite010Link
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png deleted file mode 100644 index 45e85bbfd0f5e85def14b896cfd4331675be2759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml deleted file mode 100644 index f11054d19b32..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css deleted file mode 100644 index d7b75c404782..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css +++ /dev/null @@ -1,326 +0,0 @@ -body { - margin: 0 0 5px 5px; -} - -ul { - margin: 0; -} - -li { - list-style-type: none; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.navigator-selected { - background: #ffa500; -} - -.wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - overflow: auto; -} - -.navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto; -} - -.suite { - margin: 0 10px 10px 0; - background-color: #fff8dc; -} - -.suite-name { - padding-left: 10px; - font-size: 25px; - font-family: Times, sans-serif; -} - -.main-panel-header { - padding: 5px; - background-color: #9FB4D9; /*afeeee*/; - font-family: monospace; - font-size: 18px; -} - -.main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #DEE8FC; /*d0ffff*/; -} - -.rounded-window { - border-radius: 10px; - border-style: solid; - border-width: 1px; -} - -.rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto; -} - -.light-rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; -} - -.rounded-window-bottom { - border-style: solid; - border-width: 0 1px 1px 1px; - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto; -} - -.method-name { - font-size: 12px; - font-family: monospace; -} - -.method-content { - border-style: solid; - border-width: 0 0 1px 0; - margin-bottom: 10px; - padding-bottom: 5px; - width: 80%; -} - -.parameters { - font-size: 14px; - font-family: monospace; -} - -.stack-trace { - white-space: pre; - font-family: monospace; - font-size: 12px; - font-weight: bold; - margin-top: 0; - margin-left: 20px; -} - -.testng-xml { - font-family: monospace; -} - -.method-list-content { - margin-left: 10px; -} - -.navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; -} - -.suite-section-title { - margin-top: 10px; - width: 80%; - border-style: solid; - border-width: 1px 0 0 0; - font-family: Times, sans-serif; - font-size: 18px; - font-weight: bold; -} - -.suite-section-content { - list-style-image: url(bullet_point.png); -} - -.top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0 0 5px 0; - background-color: #0066ff; - font-family: Times, sans-serif; - color: #fff; - text-align: center; -} -.button{ - position: absolute; - margin-left:500px; - margin-top:8px; - background-color: white; - color:#0066ff; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight:bold; - border-color:#0066ff ; - border-radius:25px; - cursor: pointer; - height:30px; - width:150px; - outline:none; - -} - -.top-banner-title-font { - font-size: 25px; -} - -.test-name { - font-family: 'Lucida Grande', sans-serif; - font-size: 16px; -} - -.suite-icon { - padding: 5px; - float: right; - height: 20px; -} - -.test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0 0 1px 0; - border-style: solid; - padding: 5px; -} - -.test-group-name { - font-weight: bold; -} - -.method-in-group { - font-size: 16px; - margin-left: 80px; -} - -table.google-visualization-table-table { - width: 100%; -} - -.reporter-method-name { - font-size: 14px; - font-family: monospace; -} - -.reporter-method-output-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.ignored-class-div { - font-size: 14px; - font-family: monospace; -} - -.ignored-methods-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.border-failed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #f00; -} - -.border-skipped { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #edc600; -} - -.border-passed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #19f52d; -} - -.times-div { - text-align: center; - padding: 5px; -} - -.suite-total-time { - font: 16px 'Lucida Grande'; -} - -.configuration-suite { - margin-left: 20px; -} - -.configuration-test { - margin-left: 40px; -} - -.configuration-class { - margin-left: 60px; -} - -.configuration-method { - margin-left: 80px; -} - -.test-method { - margin-left: 100px; -} - -.chronological-class { - background-color: skyblue; - border-style: solid; - border-width: 0 0 1px 1px; -} - -.method-start { - float: right; -} - -.chronological-class-name { - padding: 0 0 0 5px; - color: #008; -} - -.after, .before, .test-method { - font-family: monospace; - font-size: 14px; -} - -.navigator-suite-header { - font-size: 22px; - margin: 0 10px 5px 0; - background-color: #deb887; - text-align: center; -} - -.collapse-all-icon { - padding: 5px; - float: right; -} -/*retro Theme*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js deleted file mode 100644 index c1a84a35d453..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js +++ /dev/null @@ -1,122 +0,0 @@ -$(document).ready(function() { - $('a.navigator-link').on("click", function() { - // Extract the panel for this link - var panel = getPanelName($(this)); - - // Mark this link as currently selected - $('.navigator-link').parent().removeClass('navigator-selected'); - $(this).parent().addClass('navigator-selected'); - - showPanel(panel); - }); - - installMethodHandlers('failed'); - installMethodHandlers('skipped'); - installMethodHandlers('passed', true); // hide passed methods by default - - $('a.method').on("click", function() { - showMethod($(this)); - return false; - }); - - // Hide all the panels and display the first one (do this last - // to make sure the click() will invoke the listeners) - $('.panel').hide(); - $('.navigator-link').first().trigger("click"); - - // Collapse/expand the suites - $('a.collapse-all-link').on("click", function() { - var contents = $('.navigator-suite-content'); - if (contents.css('display') == 'none') { - contents.show(); - } else { - contents.hide(); - } - }); -}); - -// The handlers that take care of showing/hiding the methods -function installMethodHandlers(name, hide) { - function getContent(t) { - return $('.method-list-content.' + name + "." + t.attr('panel-name')); - } - - function getHideLink(t, name) { - var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); - return $(s); - } - - function getShowLink(t, name) { - return $('a.show-methods.' + name + "." + t.attr('panel-name')); - } - - function getMethodPanelClassSel(element, name) { - var panelName = getPanelName(element); - var sel = '.' + panelName + "-class-" + name; - return $(sel); - } - - $('a.hide-methods.' + name).on("click", function() { - var w = getContent($(this)); - w.hide(); - getHideLink($(this), name).hide(); - getShowLink($(this), name).show(); - getMethodPanelClassSel($(this), name).hide(); - }); - - $('a.show-methods.' + name).on("click", function() { - var w = getContent($(this)); - w.show(); - getHideLink($(this), name).show(); - getShowLink($(this), name).hide(); - showPanel(getPanelName($(this))); - getMethodPanelClassSel($(this), name).show(); - }); - - if (hide) { - $('a.hide-methods.' + name).trigger("click"); - } else { - $('a.show-methods.' + name).trigger("click"); - } -} - -function getHashForMethod(element) { - return element.attr('hash-for-method'); -} - -function getPanelName(element) { - return element.attr('panel-name'); -} - -function showPanel(panelName) { - $('.panel').hide(); - var panel = $('.panel[panel-name="' + panelName + '"]'); - panel.show(); -} - -function showMethod(element) { - var hashTag = getHashForMethod(element); - var panelName = getPanelName(element); - showPanel(panelName); - var current = document.location.href; - var base = current.substring(0, current.indexOf('#')) - document.location.href = base + '#' + hashTag; - var newPosition = $(document).scrollTop() - 65; - $(document).scrollTop(newPosition); -} - -function drawTable() { - for (var i = 0; i < suiteTableInitFunctions.length; i++) { - window[suiteTableInitFunctions[i]](); - } - - for (var k in window.suiteTableData) { - var v = window.suiteTableData[k]; - var div = v.tableDiv; - var data = v.tableData - var table = new google.visualization.Table(document.getElementById(div)); - table.draw(data, { - showRowNumber : false - }); - } -} diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css deleted file mode 100644 index 570323ffb8fe..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css +++ /dev/null @@ -1,344 +0,0 @@ -body { - background-color: whitesmoke; - margin: 0 0 5px 5px; -} -ul { - margin-top: 10px; - margin-left:-10px; -} - li { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding:5px 5px; - } - a { - text-decoration: none; - color: black; - font-size: 14px; - } - - a:hover { - color:black ; - text-decoration: underline; - } - - .navigator-selected { - /* #ffa500; Mouse hover color after click Orange.*/ - background:#027368 - } - - .wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - margin-right:9px; - overflow: auto;/*imortant*/ - } - - .navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto;/*important*/ - } - - .suite { - margin: -5px 10px 10px 5px; - background-color: whitesmoke ;/*Colour of the left bside box*/ - } - - .suite-name { - font-size: 24px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/ - color: white; - } - - .main-panel-header { - padding: 5px; - background-color: #027368; /*afeeee*/; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color:white; - font-size: 18px; - } - - .main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/ - } - - .rounded-window { - border-style: dotted; - border-width: 1px;/*Border of left Side box*/ - background-color: whitesmoke; - border-radius: 10px; - } - - .rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto;/*Top of RightSide box*/ - } - - .light-rounded-window-top { - background-color: #027368; - padding-left:120px; - border-radius: 10px; - - } - - .rounded-window-bottom { - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto;/*Bottom of rightSide box*/ - } - - .method-name { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: bold; - } - - .method-content { - border-style: solid; - border-width: 0 0 1px 0; - margin-bottom: 10px; - padding-bottom: 5px; - width: 100%; - } - - .parameters { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .stack-trace { - white-space: pre; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: bold; - margin-top: 0; - margin-left: 20px; /*Error Stack Trace Message*/ - } - - .testng-xml { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .method-list-content { - margin-left: 10px; - } - - .navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; - } - - .suite-section-title { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-weight:bold; - background-color: #8C8887; - margin-left: -10px; - margin-top:10px; - padding:6px; - } - - .suite-section-content { - list-style-image: url(bullet_point.png); - background-color: whitesmoke; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - overflow: hidden; - } - - .top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0 0 5px 0; - background-color: #027368; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - color: #fff; - text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/ - } - - .top-banner-title-font { - font-size: 25px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 3px; - float: right; - } - - .test-name { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 16px; - } - - .suite-icon { - padding: 5px; - float: right; - height: 20px; - } - - .test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0 0 1px 0; - border-style: solid; - padding: 5px; - } - - .test-group-name { - font-weight: bold; - } - - .method-in-group { - font-size: 16px; - margin-left: 80px; - } - - table.google-visualization-table-table { - width: 100%; - } - - .reporter-method-name { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .reporter-method-output-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - border-width: 0 0 0 1px; - border-style: solid; - } - - .ignored-class-div { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .ignored-methods-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - border-width: 0 0 0 1px; - border-style: solid; - } - - .border-failed { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #F20505; - } - - .border-skipped { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #F2BE22; - } - - .border-passed { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #038C73; - } - - .times-div { - text-align: center; - padding: 5px; - } - - .suite-total-time { - font: 16px 'Lucida Grande'; - } - - .configuration-suite { - margin-left: 20px; - } - - .configuration-test { - margin-left: 40px; - } - - .configuration-class { - margin-left: 60px; - } - - .configuration-method { - margin-left: 80px; - } - - .test-method { - margin-left: 100px; - } - - .chronological-class { - background-color: #CCD0D1; - border-width: 0 0 1px 1px;/*Chronological*/ - } - - .method-start { - float: right; - } - - .chronological-class-name { - padding: 0 0 0 5px; - margin-top:5px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #008; - } - - .after, .before, .test-method { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - margin-top:5px; - } - - .navigator-suite-header { - font-size: 18px; - margin: 0px 10px 10px 5px; - padding: 5px; - border-radius: 10px; - background-color: #027368; - color: white; - font-weight:bold; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - text-align: center; /*All Suites on top of left box*//*Status: -Completed*/ - } - - .collapse-all-icon { - padding: 3px; - float: right; - } - .button{ - position: absolute; - margin-left:500px; - margin-top:8px; - background-color: white; - color:#027368; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight:bold; - border-color:#027368; - border-radius:25px; - cursor: pointer; - height:30px; - width:150px; - outline: none; -} -/*Author: - Akhil Gullapalli*/ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js deleted file mode 100644 index 5342859fa4df..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js +++ /dev/null @@ -1,76 +0,0 @@ -window.onload = function () { - let cookies = document.cookie; - let cookieValue = cookies.split('='); - if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') { - document.getElementById('retro').setAttribute('disabled', 'false'); - } else if (cookieValue[1] === 'Switch Ultra Theme' || - localStorage.getItem('Theme') === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('retro').setAttribute('disabled', 'false'); - - } else if (cookieValue[1] === 'Switch Retro Theme' || - localStorage.getItem('Theme') === 'Switch Retro Theme') { - if (cookieValue[1] === 'Switch Ultra Theme' || - localStorage.getItem('Theme') === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('retro').setAttribute('disabled', 'false'); - - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('retro').removeAttribute('disabled'); - document.getElementById('ultra').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - - } else if (select === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('ultra').removeAttribute('disabled'); - document.getElementById('retro').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - } - } else if (cookieValue[1] === 'Switch Retro Theme' || - localStorage.getItem('Theme') === 'Switch Retro Theme') { - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('ultra').setAttribute('disabled', 'false'); - } -} -document.getElementById('button').onclick = function () { - let select = document.getElementById('button').innerText; - if (select === 'Switch Retro Theme') { - let d = new Date(); - days = 365; - d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 - document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('retro').removeAttribute('disabled'); - document.getElementById('ultra').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - - } else if (select === 'Switch Ultra Theme') { - let d = new Date(); - days = 365; - d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 - document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('ultra').removeAttribute('disabled'); - document.getElementById('retro').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - } -} -//Function to mouse hovering affect. -document.getElementById('button').onmouseover = function () { - document.getElementById('button').style.borderRadius = "25px"; - document.getElementById('button').style.width = "180px"; - document.getElementById('button').style.height = "45px"; - document.getElementById('button').style.marginTop = "1px"; - -} -//Function to mouse out affect -document.getElementById('button').onmouseout = function () { - document.getElementById('button').style.borderRadius = "25px"; - document.getElementById('button').style.width = "150px"; - document.getElementById('button').style.height = "30px"; - document.getElementById('button').style.marginTop = "8px"; - -} - -//This is the file where we handle the switching of the Themes. -/*Author:- Akhil Gullapalli*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml deleted file mode 100644 index 6ed30a81cada..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css deleted file mode 100644 index 5124ba863b37..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css +++ /dev/null @@ -1,9 +0,0 @@ -.invocation-failed, .test-failed { background-color: #DD0000; } -.invocation-percent, .test-percent { background-color: #006600; } -.invocation-passed, .test-passed { background-color: #00AA00; } -.invocation-skipped, .test-skipped { background-color: #CCCC00; } - -.main-page { - font-size: x-large; -} - From c500bddaff5a3df25ea9c6421126be866c3e7b1c Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 14:38:17 -0700 Subject: [PATCH 11/35] =?UTF-8?q?R3:=20Lazy=20response=20header=20access?= =?UTF-8?q?=20=E2=80=94=20skip=20intermediate=20HttpHeaders=20copy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, every Gateway response copied ALL Netty response headers through a 3-step chain: 1. Netty headers → HttpHeaders (toLowerCase + new HttpHeader per entry) 2. HttpHeaders.toLowerCaseMap() → new HashMap 3. StoreResponse constructor → String[] arrays Now the flow is: 1. Netty headers → Map directly (single toLowerCase pass) 2. StoreResponse constructor → String[] arrays Changes: - HttpResponse: add headerMap() returning Map directly - ReactorNettyHttpResponse: override headerMap() to build lowercase map from Netty headers without intermediate HttpHeaders object - HttpTransportSerializer: unwrapToStoreResponse takes Map instead of HttpHeaders - RxGatewayStoreModel: use httpResponse.headerMap() instead of headers() - ThinClientStoreModel: pass response.getHeaders().asMap() directly instead of wrapping in new HttpHeaders() This eliminates per-response: ~20 HttpHeader object allocations, ~20 extra toLowerCase calls, and one intermediate HashMap. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../implementation/RxGatewayStoreModel.java | 15 ++++++++------- .../implementation/ThinClientStoreModel.java | 4 ++-- .../cosmos/implementation/http/HttpResponse.java | 12 ++++++++++++ .../http/HttpTransportSerializer.java | 3 ++- .../implementation/http/ReactorNettyClient.java | 14 ++++++++++++++ 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java index cd4f77465cfd..360321c1703d 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java @@ -215,7 +215,7 @@ public StoreResponse unwrapToStoreResponse( String endpoint, RxDocumentServiceRequest request, int statusCode, - HttpHeaders headers, + Map headers, ByteBuf retainedContent) { checkNotNull(headers, "Argument 'headers' must not be null."); @@ -242,7 +242,7 @@ public StoreResponse unwrapToStoreResponse( return new StoreResponse( endpoint, statusCode, - HttpUtils.unescape(headers.toLowerCaseMap()), + HttpUtils.unescape(headers), new ByteBufInputStream(retainedContent, true), size); } else { @@ -252,7 +252,7 @@ public StoreResponse unwrapToStoreResponse( return new StoreResponse( endpoint, statusCode, - HttpUtils.unescape(headers.toLowerCaseMap()), + HttpUtils.unescape(headers), null, 0); } @@ -471,8 +471,9 @@ private Mono toDocumentServiceResponse(Mono { - // header key/value pairs - HttpHeaders httpResponseHeaders = httpResponse.headers(); + // header key/value pairs — get as lowercase map directly from Netty, + // skipping the intermediate HttpHeaders copy + Map httpResponseHeaders = httpResponse.headerMap(); int httpResponseStatus = httpResponse.statusCode(); // Track the retained ByteBuf so we can release it as a safety net in doFinally @@ -741,7 +742,7 @@ private Mono toDocumentServiceResponse(Mono headers, ByteBuf retainedBodyAsByteBuf) { int statusCode = status.code(); @@ -763,7 +764,7 @@ private void validateOrThrow(RxDocumentServiceRequest request, String.format("%s, StatusCode: %s", cosmosError.getMessage(), statusCodeString), cosmosError.getPartitionedQueryExecutionInfo()); - CosmosException dce = BridgeInternal.createCosmosException(request.requestContext.resourcePhysicalAddress, statusCode, cosmosError, headers.toLowerCaseMap()); + CosmosException dce = BridgeInternal.createCosmosException(request.requestContext.resourcePhysicalAddress, statusCode, cosmosError, headers); BridgeInternal.setRequestHeaders(dce, request.getHeaders()); throw dce; } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java index 92d1c197525e..a50d01028118 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java @@ -99,7 +99,7 @@ public StoreResponse unwrapToStoreResponse( String endpoint, RxDocumentServiceRequest request, int statusCode, - HttpHeaders headers, + Map headers, ByteBuf content) { if (content == null) { @@ -141,7 +141,7 @@ public StoreResponse unwrapToStoreResponse( endpoint, request, response.getStatus().code(), - new HttpHeaders(response.getHeaders().asMap(request.getActivityId())), + response.getHeaders().asMap(request.getActivityId()), payloadBuf ); diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java index 29d871d8663f..3a57d4e08ad5 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java @@ -7,6 +7,8 @@ import reactor.core.publisher.Mono; import reactor.netty.Connection; +import java.util.Map; + /** * The type representing response of {@link HttpRequest}. */ @@ -35,6 +37,16 @@ public abstract class HttpResponse implements AutoCloseable { */ public abstract HttpHeaders headers(); + /** + * Get all response headers as a lowercase-keyed map, avoiding intermediate copies. + * Subclasses may override for a more efficient implementation. + * + * @return the response headers as a map with lowercase keys + */ + public Map headerMap() { + return headers().toLowerCaseMap(); + } + /** * Get the publisher emitting response content chunks. * diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java index 58a2dc95cf8d..6438173c5903 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java @@ -5,6 +5,7 @@ import io.netty.buffer.ByteBuf; import java.net.URI; +import java.util.Map; public interface HttpTransportSerializer { HttpRequest wrapInHttpRequest(RxDocumentServiceRequest request, URI requestUri) throws Exception; @@ -13,6 +14,6 @@ StoreResponse unwrapToStoreResponse( String endpoint, RxDocumentServiceRequest request, int statusCode, - HttpHeaders headers, + Map headers, ByteBuf retainedContent); } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java index a720fe803b7e..21217e5d59c0 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java @@ -35,6 +35,9 @@ import java.lang.invoke.WrongMethodTypeException; import java.time.Duration; import java.time.Instant; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiFunction; @@ -414,6 +417,17 @@ public HttpHeaders headers() { return headers; } + @Override + public Map headerMap() { + io.netty.handler.codec.http.HttpHeaders nettyHeaders = reactorNettyResponse.responseHeaders(); + Map map = new HashMap<>(nettyHeaders.size()); + for (Map.Entry e : nettyHeaders) { + // Netty HTTP/1.1 headers may be mixed-case; lowercase for SDK consistency + map.put(e.getKey().toLowerCase(Locale.ROOT), e.getValue()); + } + return map; + } + @Override public Mono body() { return ByteBufFlux From f1ba753060c91830eafc0ecf3219e328dd05e872 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 14:48:54 -0700 Subject: [PATCH 12/35] =?UTF-8?q?Eliminate=20Map=E2=86=92String[]=E2=86=92?= =?UTF-8?q?Map=20header=20copy=20chain=20in=20response=20path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit StoreResponse now stores the response headers Map directly instead of converting to parallel String[] arrays. This eliminates a redundant copy since RxDocumentServiceResponse and StoreClient were immediately converting back to Map. Before: Map → String[] + String[] → Map (3 allocations, 2 iterations) After: Map shared directly (0 extra allocations, 0 extra iterations) Also upgrades StoreResponse.getHeaderValue() from O(n) linear scan to O(1) HashMap.get() with case-insensitive fallback. Null header values from Netty are skipped (matching old HttpHeaders.set behavior which removed null entries). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Command line suite/Command line test.html | 161 ++++++++ .../Command line suite/Command line test.xml | 47 +++ .../Command line suite/testng-failed.xml | 13 + .../test-output/bullet_point.png | Bin 0 -> 356 bytes .../test-output/collapseall.gif | Bin 0 -> 157 bytes .../test-output/emailable-report.html | 56 +++ .../test-output/failed.png | Bin 0 -> 977 bytes .../test-output/index.html | 284 +++++++++++++++ .../test-output/jquery.min.js | 2 + ...ark.TenantWorkloadConfigApplyFieldTest.xml | 48 +++ .../test-output/navigator-bullet.png | Bin 0 -> 352 bytes .../Command line test.properties | 1 + .../old/Command line suite/classes.html | 29 ++ .../old/Command line suite/groups.html | 3 + .../old/Command line suite/index.html | 6 + .../old/Command line suite/main.html | 2 + .../methods-alphabetical.html | 6 + .../Command line suite/methods-not-run.html | 2 + .../old/Command line suite/methods.html | 6 + .../Command line suite/reporter-output.html | 1 + .../old/Command line suite/testng.xml.html | 1 + .../old/Command line suite/toc.html | 30 ++ .../test-output/old/index.html | 9 + .../test-output/passed.png | Bin 0 -> 1019 bytes .../test-output/skipped.png | Bin 0 -> 967 bytes .../test-output/testng-failed.xml | 13 + .../test-output/testng-reports.css | 326 +++++++++++++++++ .../test-output/testng-reports.js | 122 +++++++ .../test-output/testng-reports1.css | 344 ++++++++++++++++++ .../test-output/testng-reports2.js | 76 ++++ .../test-output/testng-results.xml | 66 ++++ .../test-output/testng.css | 9 + .../RxDocumentServiceResponse.java | 10 +- .../directconnectivity/StoreClient.java | 14 +- .../directconnectivity/StoreResponse.java | 76 ++-- .../directconnectivity/StoreResult.java | 9 +- .../http/ReactorNettyClient.java | 6 +- 37 files changed, 1710 insertions(+), 68 deletions(-) create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/collapseall.gif create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/junitreports/TEST-com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/Command line test.properties create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/classes.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/skipped.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html new file mode 100644 index 000000000000..fe7b28114b7b --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html @@ -0,0 +1,161 @@ + + +TestNG: Command line test + + + + + + + + +

Command line test

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:0/1/0
Started on:Thu Mar 12 13:25:41 PDT 2026
Total time:0 seconds (13 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + +
FAILED TESTS
Test methodExceptionTime (seconds)Instance
allJsonPropertiesShouldHaveApplyFieldCase
Test class: com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
+	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
+	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
+	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
+	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
+	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
+	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:808)
+	at org.testng.TestRunner.run(TestRunner.java:603)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.runSuites(TestNG.java:1092)
+	at org.testng.TestNG.run(TestNG.java:1060)
+	at org.testng.TestNG.privateMain(TestNG.java:1403)
+	at org.testng.TestNG.main(TestNG.java:1367)
+
Click to show all stack frames +
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
+	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
+	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
+	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
+	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
+	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
+	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:808)
+	at org.testng.TestRunner.run(TestRunner.java:603)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.runSuites(TestNG.java:1092)
+	at org.testng.TestNG.run(TestNG.java:1060)
+	at org.testng.TestNG.privateMain(TestNG.java:1403)
+	at org.testng.TestNG.main(TestNG.java:1367)
+
0com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df

+ + \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml new file mode 100644 index 000000000000..fb074125d325 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml new file mode 100644 index 000000000000..f11054d19b32 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png new file mode 100644 index 0000000000000000000000000000000000000000..176e6d5b3d64d032e76c493e5811a1cf839220b5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html new file mode 100644 index 000000000000..e3a1912ee694 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html @@ -0,0 +1,56 @@ + + + + +TestNG Report + + + + + + + +
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
Command line suite
Command line test000113
+ +
ClassMethodStartTime (ms)
Command line suite
Command line test — failed
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTestallJsonPropertiesShouldHaveApplyFieldCase17733471411692
+

Command line test

com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest#allJsonPropertiesShouldHaveApplyFieldCase

Exception
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 + at java.base/java.lang.ClassLoader.defineClass1(Native Method) + at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) + at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) + at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) + at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) + at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) + at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) + at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) + at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) + at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) + at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) + at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.testng.TestRunner.privateRun(TestRunner.java:808) + at org.testng.TestRunner.run(TestRunner.java:603) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) + at org.testng.SuiteRunner.run(SuiteRunner.java:326) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) + at org.testng.TestNG.runSuites(TestNG.java:1092) + at org.testng.TestNG.run(TestNG.java:1060) + at org.testng.TestNG.privateMain(TestNG.java:1403) + at org.testng.TestNG.main(TestNG.java:1367) +

back to summary

+ + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png new file mode 100644 index 0000000000000000000000000000000000000000..c117be59a9ecd1da15ebf48f6b7f53496302a7cd GIT binary patch literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html new file mode 100644 index 000000000000..e7cc45f775e0 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html @@ -0,0 +1,284 @@ + + + + + + TestNG reports + + + + + + + + + + + +
+ Test results + +
+ 1 suite, 1 failed test +
+ +
+
+
+
+
+ + com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest +
+
+
+
+ + + allJsonPropertiesShouldHaveApplyFieldCase +
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 + at java.base/java.lang.ClassLoader.defineClass1(Native Method) + at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) + at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) + at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) + at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) + at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) + at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) + at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) + at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) + at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) + at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) + at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.testng.TestRunner.privateRun(TestRunner.java:808) + at org.testng.TestRunner.run(TestRunner.java:603) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) + at org.testng.SuiteRunner.run(SuiteRunner.java:326) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) + at org.testng.TestNG.runSuites(TestNG.java:1092) + at org.testng.TestNG.run(TestNG.java:1060) + at org.testng.TestNG.privateMain(TestNG.java:1403) + at org.testng.TestNG.main(TestNG.java:1367) + +
+
+
+
+
+
+
+
+
+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
+<suite name="Command line suite" verbose="2">
+  <test thread-count="5" name="Command line test" verbose="2">
+    <classes>
+      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
+    </classes>
+  </test> <!-- Command line test -->
+</suite> <!-- Command line suite -->
+            
+
+
+
+
+ Tests for Command line suite +
+
+
    +
  • + Command line test (1 class) +
  • +
+
+
+
+
+ Groups for Command line suite +
+
+
+ unit +
+
+ allJsonPropertiesShouldHaveApplyFieldCase +
+
+
+
+
+
+
+ Times for Command line suite +
+
+
+ + Total running time: 2 ms +
+
+
+
+
+
+
+ Reporter output for Command line suite +
+
+
+
+
+
+ 0 ignored methods +
+
+
+
+
+
+ Methods in chronological order +
+
+
+
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
+
+ + + allJsonPropertiesShouldHaveApplyFieldCase + 0 ms +
+
+
+
+
+ + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js new file mode 100644 index 000000000000..b0614034ad3a --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..36d90d395c51912e718b89dd88b4a3fb53aa1d85 GIT binary patch literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 + +Class name +Method name +Groups + +com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest +   + +@Test + + +  +allJsonPropertiesShouldHaveApplyFieldCase +unit + + +@BeforeClass + + +@BeforeMethod + + +@AfterMethod + + +@AfterClass + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html new file mode 100644 index 000000000000..027f83fca723 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html @@ -0,0 +1,3 @@ +

Groups used for this test run

+ +
Group nameMethods
unitTenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase()[pri:0, instance:com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df]
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html new file mode 100644 index 000000000000..3577bd28a9f6 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html @@ -0,0 +1,6 @@ +Results for Command line suite + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html new file mode 100644 index 000000000000..0ee4b5b499ac --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html @@ -0,0 +1,2 @@ +Results for Command line suite +Select a result on the left-hand pane. diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html new file mode 100644 index 000000000000..872d1d4a0de8 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html @@ -0,0 +1,6 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html new file mode 100644 index 000000000000..54b14cb854b6 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html @@ -0,0 +1,2 @@ +

Methods that were not run

+
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html new file mode 100644 index 000000000000..872d1d4a0de8 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html @@ -0,0 +1,6 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html new file mode 100644 index 000000000000..063bc2e96fd0 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html @@ -0,0 +1 @@ +

Reporter output

\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html new file mode 100644 index 000000000000..fcf1c50c6537 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html @@ -0,0 +1 @@ +testng.xml for Command line suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command line suite" verbose="2">
  <test thread-count="5" name="Command line test" verbose="2">
    <classes>
      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
    </classes>
  </test> <!-- Command line test -->
</suite> <!-- Command line suite -->
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html new file mode 100644 index 000000000000..1dde178e49ee --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html @@ -0,0 +1,30 @@ + + +Results for Command line suite + + + + +

Results for
Command line suite

+ + + + + + + + + + +
1 test1 class1 method:
+  chronological
+  alphabetical
+  not run (0)
1 groupreporter outputtestng.xml
+ +

+

+
Command line test (0/1/0) + Results +
+
+ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html new file mode 100644 index 000000000000..f0ca6453a9b1 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html @@ -0,0 +1,9 @@ + + + + +

Test results

+ + + +
SuitePassedFailedSkippedtestng.xml
Total010 
Command line suite010Link
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png new file mode 100644 index 0000000000000000000000000000000000000000..45e85bbfd0f5e85def14b896cfd4331675be2759 GIT binary patch literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml new file mode 100644 index 000000000000..f11054d19b32 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css new file mode 100644 index 000000000000..d7b75c404782 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css @@ -0,0 +1,326 @@ +body { + margin: 0 0 5px 5px; +} + +ul { + margin: 0; +} + +li { + list-style-type: none; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.navigator-selected { + background: #ffa500; +} + +.wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + overflow: auto; +} + +.navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto; +} + +.suite { + margin: 0 10px 10px 0; + background-color: #fff8dc; +} + +.suite-name { + padding-left: 10px; + font-size: 25px; + font-family: Times, sans-serif; +} + +.main-panel-header { + padding: 5px; + background-color: #9FB4D9; /*afeeee*/; + font-family: monospace; + font-size: 18px; +} + +.main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #DEE8FC; /*d0ffff*/; +} + +.rounded-window { + border-radius: 10px; + border-style: solid; + border-width: 1px; +} + +.rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto; +} + +.light-rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; +} + +.rounded-window-bottom { + border-style: solid; + border-width: 0 1px 1px 1px; + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto; +} + +.method-name { + font-size: 12px; + font-family: monospace; +} + +.method-content { + border-style: solid; + border-width: 0 0 1px 0; + margin-bottom: 10px; + padding-bottom: 5px; + width: 80%; +} + +.parameters { + font-size: 14px; + font-family: monospace; +} + +.stack-trace { + white-space: pre; + font-family: monospace; + font-size: 12px; + font-weight: bold; + margin-top: 0; + margin-left: 20px; +} + +.testng-xml { + font-family: monospace; +} + +.method-list-content { + margin-left: 10px; +} + +.navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; +} + +.suite-section-title { + margin-top: 10px; + width: 80%; + border-style: solid; + border-width: 1px 0 0 0; + font-family: Times, sans-serif; + font-size: 18px; + font-weight: bold; +} + +.suite-section-content { + list-style-image: url(bullet_point.png); +} + +.top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0 0 5px 0; + background-color: #0066ff; + font-family: Times, sans-serif; + color: #fff; + text-align: center; +} +.button{ + position: absolute; + margin-left:500px; + margin-top:8px; + background-color: white; + color:#0066ff; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight:bold; + border-color:#0066ff ; + border-radius:25px; + cursor: pointer; + height:30px; + width:150px; + outline:none; + +} + +.top-banner-title-font { + font-size: 25px; +} + +.test-name { + font-family: 'Lucida Grande', sans-serif; + font-size: 16px; +} + +.suite-icon { + padding: 5px; + float: right; + height: 20px; +} + +.test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0 0 1px 0; + border-style: solid; + padding: 5px; +} + +.test-group-name { + font-weight: bold; +} + +.method-in-group { + font-size: 16px; + margin-left: 80px; +} + +table.google-visualization-table-table { + width: 100%; +} + +.reporter-method-name { + font-size: 14px; + font-family: monospace; +} + +.reporter-method-output-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0 0 0 1px; + border-style: solid; +} + +.ignored-class-div { + font-size: 14px; + font-family: monospace; +} + +.ignored-methods-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0 0 0 1px; + border-style: solid; +} + +.border-failed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #f00; +} + +.border-skipped { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #edc600; +} + +.border-passed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #19f52d; +} + +.times-div { + text-align: center; + padding: 5px; +} + +.suite-total-time { + font: 16px 'Lucida Grande'; +} + +.configuration-suite { + margin-left: 20px; +} + +.configuration-test { + margin-left: 40px; +} + +.configuration-class { + margin-left: 60px; +} + +.configuration-method { + margin-left: 80px; +} + +.test-method { + margin-left: 100px; +} + +.chronological-class { + background-color: skyblue; + border-style: solid; + border-width: 0 0 1px 1px; +} + +.method-start { + float: right; +} + +.chronological-class-name { + padding: 0 0 0 5px; + color: #008; +} + +.after, .before, .test-method { + font-family: monospace; + font-size: 14px; +} + +.navigator-suite-header { + font-size: 22px; + margin: 0 10px 5px 0; + background-color: #deb887; + text-align: center; +} + +.collapse-all-icon { + padding: 5px; + float: right; +} +/*retro Theme*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js new file mode 100644 index 000000000000..c1a84a35d453 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js @@ -0,0 +1,122 @@ +$(document).ready(function() { + $('a.navigator-link').on("click", function() { + // Extract the panel for this link + var panel = getPanelName($(this)); + + // Mark this link as currently selected + $('.navigator-link').parent().removeClass('navigator-selected'); + $(this).parent().addClass('navigator-selected'); + + showPanel(panel); + }); + + installMethodHandlers('failed'); + installMethodHandlers('skipped'); + installMethodHandlers('passed', true); // hide passed methods by default + + $('a.method').on("click", function() { + showMethod($(this)); + return false; + }); + + // Hide all the panels and display the first one (do this last + // to make sure the click() will invoke the listeners) + $('.panel').hide(); + $('.navigator-link').first().trigger("click"); + + // Collapse/expand the suites + $('a.collapse-all-link').on("click", function() { + var contents = $('.navigator-suite-content'); + if (contents.css('display') == 'none') { + contents.show(); + } else { + contents.hide(); + } + }); +}); + +// The handlers that take care of showing/hiding the methods +function installMethodHandlers(name, hide) { + function getContent(t) { + return $('.method-list-content.' + name + "." + t.attr('panel-name')); + } + + function getHideLink(t, name) { + var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); + return $(s); + } + + function getShowLink(t, name) { + return $('a.show-methods.' + name + "." + t.attr('panel-name')); + } + + function getMethodPanelClassSel(element, name) { + var panelName = getPanelName(element); + var sel = '.' + panelName + "-class-" + name; + return $(sel); + } + + $('a.hide-methods.' + name).on("click", function() { + var w = getContent($(this)); + w.hide(); + getHideLink($(this), name).hide(); + getShowLink($(this), name).show(); + getMethodPanelClassSel($(this), name).hide(); + }); + + $('a.show-methods.' + name).on("click", function() { + var w = getContent($(this)); + w.show(); + getHideLink($(this), name).show(); + getShowLink($(this), name).hide(); + showPanel(getPanelName($(this))); + getMethodPanelClassSel($(this), name).show(); + }); + + if (hide) { + $('a.hide-methods.' + name).trigger("click"); + } else { + $('a.show-methods.' + name).trigger("click"); + } +} + +function getHashForMethod(element) { + return element.attr('hash-for-method'); +} + +function getPanelName(element) { + return element.attr('panel-name'); +} + +function showPanel(panelName) { + $('.panel').hide(); + var panel = $('.panel[panel-name="' + panelName + '"]'); + panel.show(); +} + +function showMethod(element) { + var hashTag = getHashForMethod(element); + var panelName = getPanelName(element); + showPanel(panelName); + var current = document.location.href; + var base = current.substring(0, current.indexOf('#')) + document.location.href = base + '#' + hashTag; + var newPosition = $(document).scrollTop() - 65; + $(document).scrollTop(newPosition); +} + +function drawTable() { + for (var i = 0; i < suiteTableInitFunctions.length; i++) { + window[suiteTableInitFunctions[i]](); + } + + for (var k in window.suiteTableData) { + var v = window.suiteTableData[k]; + var div = v.tableDiv; + var data = v.tableData + var table = new google.visualization.Table(document.getElementById(div)); + table.draw(data, { + showRowNumber : false + }); + } +} diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css new file mode 100644 index 000000000000..570323ffb8fe --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css @@ -0,0 +1,344 @@ +body { + background-color: whitesmoke; + margin: 0 0 5px 5px; +} +ul { + margin-top: 10px; + margin-left:-10px; +} + li { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding:5px 5px; + } + a { + text-decoration: none; + color: black; + font-size: 14px; + } + + a:hover { + color:black ; + text-decoration: underline; + } + + .navigator-selected { + /* #ffa500; Mouse hover color after click Orange.*/ + background:#027368 + } + + .wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + margin-right:9px; + overflow: auto;/*imortant*/ + } + + .navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto;/*important*/ + } + + .suite { + margin: -5px 10px 10px 5px; + background-color: whitesmoke ;/*Colour of the left bside box*/ + } + + .suite-name { + font-size: 24px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/ + color: white; + } + + .main-panel-header { + padding: 5px; + background-color: #027368; /*afeeee*/; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color:white; + font-size: 18px; + } + + .main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/ + } + + .rounded-window { + border-style: dotted; + border-width: 1px;/*Border of left Side box*/ + background-color: whitesmoke; + border-radius: 10px; + } + + .rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto;/*Top of RightSide box*/ + } + + .light-rounded-window-top { + background-color: #027368; + padding-left:120px; + border-radius: 10px; + + } + + .rounded-window-bottom { + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto;/*Bottom of rightSide box*/ + } + + .method-name { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold; + } + + .method-content { + border-style: solid; + border-width: 0 0 1px 0; + margin-bottom: 10px; + padding-bottom: 5px; + width: 100%; + } + + .parameters { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .stack-trace { + white-space: pre; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: bold; + margin-top: 0; + margin-left: 20px; /*Error Stack Trace Message*/ + } + + .testng-xml { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .method-list-content { + margin-left: 10px; + } + + .navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; + } + + .suite-section-title { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight:bold; + background-color: #8C8887; + margin-left: -10px; + margin-top:10px; + padding:6px; + } + + .suite-section-content { + list-style-image: url(bullet_point.png); + background-color: whitesmoke; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + overflow: hidden; + } + + .top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0 0 5px 0; + background-color: #027368; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 18px; + color: #fff; + text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/ + } + + .top-banner-title-font { + font-size: 25px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 3px; + float: right; + } + + .test-name { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + } + + .suite-icon { + padding: 5px; + float: right; + height: 20px; + } + + .test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0 0 1px 0; + border-style: solid; + padding: 5px; + } + + .test-group-name { + font-weight: bold; + } + + .method-in-group { + font-size: 16px; + margin-left: 80px; + } + + table.google-visualization-table-table { + width: 100%; + } + + .reporter-method-name { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .reporter-method-output-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + border-width: 0 0 0 1px; + border-style: solid; + } + + .ignored-class-div { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .ignored-methods-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + border-width: 0 0 0 1px; + border-style: solid; + } + + .border-failed { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #F20505; + } + + .border-skipped { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #F2BE22; + } + + .border-passed { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #038C73; + } + + .times-div { + text-align: center; + padding: 5px; + } + + .suite-total-time { + font: 16px 'Lucida Grande'; + } + + .configuration-suite { + margin-left: 20px; + } + + .configuration-test { + margin-left: 40px; + } + + .configuration-class { + margin-left: 60px; + } + + .configuration-method { + margin-left: 80px; + } + + .test-method { + margin-left: 100px; + } + + .chronological-class { + background-color: #CCD0D1; + border-width: 0 0 1px 1px;/*Chronological*/ + } + + .method-start { + float: right; + } + + .chronological-class-name { + padding: 0 0 0 5px; + margin-top:5px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #008; + } + + .after, .before, .test-method { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + margin-top:5px; + } + + .navigator-suite-header { + font-size: 18px; + margin: 0px 10px 10px 5px; + padding: 5px; + border-radius: 10px; + background-color: #027368; + color: white; + font-weight:bold; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + text-align: center; /*All Suites on top of left box*//*Status: -Completed*/ + } + + .collapse-all-icon { + padding: 3px; + float: right; + } + .button{ + position: absolute; + margin-left:500px; + margin-top:8px; + background-color: white; + color:#027368; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight:bold; + border-color:#027368; + border-radius:25px; + cursor: pointer; + height:30px; + width:150px; + outline: none; +} +/*Author: - Akhil Gullapalli*/ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js new file mode 100644 index 000000000000..5342859fa4df --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js @@ -0,0 +1,76 @@ +window.onload = function () { + let cookies = document.cookie; + let cookieValue = cookies.split('='); + if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') { + document.getElementById('retro').setAttribute('disabled', 'false'); + } else if (cookieValue[1] === 'Switch Ultra Theme' || + localStorage.getItem('Theme') === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('retro').setAttribute('disabled', 'false'); + + } else if (cookieValue[1] === 'Switch Retro Theme' || + localStorage.getItem('Theme') === 'Switch Retro Theme') { + if (cookieValue[1] === 'Switch Ultra Theme' || + localStorage.getItem('Theme') === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('retro').setAttribute('disabled', 'false'); + + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('retro').removeAttribute('disabled'); + document.getElementById('ultra').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + + } else if (select === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('ultra').removeAttribute('disabled'); + document.getElementById('retro').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + } + } else if (cookieValue[1] === 'Switch Retro Theme' || + localStorage.getItem('Theme') === 'Switch Retro Theme') { + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('ultra').setAttribute('disabled', 'false'); + } +} +document.getElementById('button').onclick = function () { + let select = document.getElementById('button').innerText; + if (select === 'Switch Retro Theme') { + let d = new Date(); + days = 365; + d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 + document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('retro').removeAttribute('disabled'); + document.getElementById('ultra').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + + } else if (select === 'Switch Ultra Theme') { + let d = new Date(); + days = 365; + d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 + document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('ultra').removeAttribute('disabled'); + document.getElementById('retro').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + } +} +//Function to mouse hovering affect. +document.getElementById('button').onmouseover = function () { + document.getElementById('button').style.borderRadius = "25px"; + document.getElementById('button').style.width = "180px"; + document.getElementById('button').style.height = "45px"; + document.getElementById('button').style.marginTop = "1px"; + +} +//Function to mouse out affect +document.getElementById('button').onmouseout = function () { + document.getElementById('button').style.borderRadius = "25px"; + document.getElementById('button').style.width = "150px"; + document.getElementById('button').style.height = "30px"; + document.getElementById('button').style.marginTop = "8px"; + +} + +//This is the file where we handle the switching of the Themes. +/*Author:- Akhil Gullapalli*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml new file mode 100644 index 000000000000..6ed30a81cada --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css new file mode 100644 index 000000000000..5124ba863b37 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css @@ -0,0 +1,9 @@ +.invocation-failed, .test-failed { background-color: #DD0000; } +.invocation-percent, .test-percent { background-color: #006600; } +.invocation-passed, .test-passed { background-color: #00AA00; } +.invocation-skipped, .test-skipped { background-color: #CCCC00; } + +.main-page { + font-size: x-large; +} + diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java index f9866f565957..6c6a753ed80c 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java @@ -32,19 +32,11 @@ public class RxDocumentServiceResponse { private CosmosDiagnostics cosmosDiagnostics; public RxDocumentServiceResponse(DiagnosticsClientContext diagnosticsClientContext, StoreResponse response) { - String[] headerNames = response.getResponseHeaderNames(); - String[] headerValues = response.getResponseHeaderValues(); - - this.headersMap = new HashMap<>(headerNames.length); + this.headersMap = response.getResponseHeaders(); // Gets status code. this.statusCode = response.getStatus(); - // Extracts headers. - for (int i = 0; i < headerNames.length; i++) { - this.headersMap.put(headerNames[i], headerValues[i]); - } - this.storeResponse = response; this.diagnosticsClientContext = diagnosticsClientContext; } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java index 8c1c270bf5cd..ad799137bf8f 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java @@ -174,19 +174,7 @@ private RxDocumentServiceResponse completeResponse( StoreResponse storeResponse, RxDocumentServiceRequest request) throws InternalServerErrorException { - if (storeResponse.getResponseHeaderNames().length != storeResponse.getResponseHeaderValues().length) { - throw new InternalServerErrorException( - Exceptions.getInternalServerErrorMessage(RMResources.InvalidBackendResponse), - HttpConstants.SubStatusCodes.INVALID_BACKEND_RESPONSE); - } - - Map headers = new HashMap<>(storeResponse.getResponseHeaderNames().length); - for (int idx = 0; idx < storeResponse.getResponseHeaderNames().length; idx++) { - String name = storeResponse.getResponseHeaderNames()[idx]; - String value = storeResponse.getResponseHeaderValues()[idx]; - - headers.put(name, value); - } + Map headers = storeResponse.getResponseHeaders(); this.updateResponseHeader(request, headers); this.captureSessionToken(request, headers); diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java index 10c7f40e9ae3..f57d9aff7c1f 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java @@ -30,8 +30,7 @@ public class StoreResponse { private static final Logger logger = LoggerFactory.getLogger(StoreResponse.class.getSimpleName()); final private int status; - final private String[] responseHeaderNames; - final private String[] responseHeaderValues; + final private Map responseHeaders; private int requestPayloadLength; private RequestTimeline requestTimeline; private RntbdChannelAcquisitionTimeline channelAcquisitionTimeline; @@ -56,17 +55,9 @@ public StoreResponse( checkArgument((contentStream == null) == (responsePayloadLength == 0), "Parameter 'contentStream' must be consistent with 'responsePayloadLength'."); requestTimeline = RequestTimeline.empty(); - responseHeaderNames = new String[headerMap.size()]; - responseHeaderValues = new String[headerMap.size()]; + this.responseHeaders = headerMap; this.endpoint = endpoint != null ? endpoint : ""; - int i = 0; - for (Map.Entry headerEntry : headerMap.entrySet()) { - responseHeaderNames[i] = headerEntry.getKey(); - responseHeaderValues[i] = headerEntry.getValue(); - i++; - } - this.status = status; replicaStatusList = new HashMap<>(); if (contentStream != null) { @@ -96,17 +87,9 @@ private StoreResponse( checkNotNull(endpoint, "Parameter 'endpoint' must not be null."); requestTimeline = RequestTimeline.empty(); - responseHeaderNames = new String[headerMap.size()]; - responseHeaderValues = new String[headerMap.size()]; + this.responseHeaders = headerMap; this.endpoint = endpoint; - int i = 0; - for (Map.Entry headerEntry : headerMap.entrySet()) { - responseHeaderNames[i] = headerEntry.getKey(); - responseHeaderValues[i] = headerEntry.getValue(); - i++; - } - this.status = status; replicaStatusList = new HashMap<>(); this.responsePayload = responsePayload; @@ -116,12 +99,16 @@ public int getStatus() { return status; } + public Map getResponseHeaders() { + return responseHeaders; + } + public String[] getResponseHeaderNames() { - return responseHeaderNames; + return responseHeaders.keySet().toArray(new String[0]); } public String[] getResponseHeaderValues() { - return responseHeaderValues; + return responseHeaders.values().toArray(new String[0]); } public void setRntbdRequestLength(int rntbdRequestLength) { @@ -191,29 +178,39 @@ public String getCorrelatedActivityId() { } public String getHeaderValue(String attribute) { - if (this.responseHeaderValues == null || this.responseHeaderNames.length != this.responseHeaderValues.length) { + if (this.responseHeaders == null) { return null; } - for (int i = 0; i < responseHeaderNames.length; i++) { - if (responseHeaderNames[i].equalsIgnoreCase(attribute)) { - return responseHeaderValues[i]; + // Headers are stored with lowercase keys + String value = responseHeaders.get(attribute); + if (value != null) { + return value; + } + // Fallback to case-insensitive scan for backward compatibility + for (Map.Entry entry : responseHeaders.entrySet()) { + if (entry.getKey().equalsIgnoreCase(attribute)) { + return entry.getValue(); } } - return null; } - //NOTE: only used for testing purpose to change the response header value void setHeaderValue(String headerName, String value) { - if (this.responseHeaderValues == null || this.responseHeaderNames.length != this.responseHeaderValues.length) { + if (this.responseHeaders == null) { return; } - for (int i = 0; i < responseHeaderNames.length; i++) { - if (responseHeaderNames[i].equalsIgnoreCase(headerName)) { - responseHeaderValues[i] = value; - break; + // Try exact match first (lowercase keys) + if (responseHeaders.containsKey(headerName)) { + responseHeaders.put(headerName, value); + return; + } + // Fallback to case-insensitive scan + for (String key : responseHeaders.keySet()) { + if (key.equalsIgnoreCase(headerName)) { + responseHeaders.put(key, value); + return; } } } @@ -310,15 +307,14 @@ public void setFaultInjectionRuleEvaluationResults(List results) { public StoreResponse withRemappedStatusCode(int newStatusCode, double additionalRequestCharge) { - Map headers = new HashMap<>(); - for (int i = 0; i < this.responseHeaderNames.length; i++) { - String headerName = this.responseHeaderNames[i]; - if (headerName.equalsIgnoreCase(HttpConstants.HttpHeaders.REQUEST_CHARGE)) { + Map headers = new HashMap<>(this.responseHeaders); + // Update request charge + for (String key : headers.keySet()) { + if (key.equalsIgnoreCase(HttpConstants.HttpHeaders.REQUEST_CHARGE)) { double currentRequestCharge = this.getRequestCharge(); double newRequestCharge = currentRequestCharge + additionalRequestCharge; - headers.put(headerName, String.valueOf(newRequestCharge)); - } else { - headers.put(headerName, this.responseHeaderValues[i]); + headers.put(key, String.valueOf(newRequestCharge)); + break; } } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java index c7817cd3b101..8cb99c4271a8 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java @@ -141,10 +141,11 @@ private static void setRequestCharge(StoreResponse response, CosmosException cos Double.toString(totalRequestCharge)); } // Set total charge as final charge for the response. - else if (response.getResponseHeaderNames() != null) { - for (int i = 0; i < response.getResponseHeaderNames().length; ++i) { - if (Strings.areEqualIgnoreCase(response.getResponseHeaderNames()[i], HttpConstants.HttpHeaders.REQUEST_CHARGE)) { - response.getResponseHeaderValues()[i] = Double.toString(totalRequestCharge); + else if (response.getResponseHeaders() != null) { + // Update the request charge in the response headers map + for (String key : response.getResponseHeaders().keySet()) { + if (Strings.areEqualIgnoreCase(key, HttpConstants.HttpHeaders.REQUEST_CHARGE)) { + response.getResponseHeaders().put(key, Double.toString(totalRequestCharge)); break; } } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java index 21217e5d59c0..4be56554cd46 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java @@ -422,8 +422,10 @@ public Map headerMap() { io.netty.handler.codec.http.HttpHeaders nettyHeaders = reactorNettyResponse.responseHeaders(); Map map = new HashMap<>(nettyHeaders.size()); for (Map.Entry e : nettyHeaders) { - // Netty HTTP/1.1 headers may be mixed-case; lowercase for SDK consistency - map.put(e.getKey().toLowerCase(Locale.ROOT), e.getValue()); + String value = e.getValue(); + if (value != null) { + map.put(e.getKey().toLowerCase(Locale.ROOT), value); + } } return map; } From 6f29ee3d58bca57d4f0d1dfe9349075dcfdf1f2d Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 14:49:10 -0700 Subject: [PATCH 13/35] Remove test-output from tracking Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Command line suite/Command line test.html | 161 -------- .../Command line suite/Command line test.xml | 47 --- .../Command line suite/testng-failed.xml | 13 - .../test-output/bullet_point.png | Bin 356 -> 0 bytes .../test-output/collapseall.gif | Bin 157 -> 0 bytes .../test-output/emailable-report.html | 56 --- .../test-output/failed.png | Bin 977 -> 0 bytes .../test-output/index.html | 284 --------------- .../test-output/jquery.min.js | 2 - ...ark.TenantWorkloadConfigApplyFieldTest.xml | 48 --- .../test-output/navigator-bullet.png | Bin 352 -> 0 bytes .../Command line test.properties | 1 - .../old/Command line suite/classes.html | 29 -- .../old/Command line suite/groups.html | 3 - .../old/Command line suite/index.html | 6 - .../old/Command line suite/main.html | 2 - .../methods-alphabetical.html | 6 - .../Command line suite/methods-not-run.html | 2 - .../old/Command line suite/methods.html | 6 - .../Command line suite/reporter-output.html | 1 - .../old/Command line suite/testng.xml.html | 1 - .../old/Command line suite/toc.html | 30 -- .../test-output/old/index.html | 9 - .../test-output/passed.png | Bin 1019 -> 0 bytes .../test-output/skipped.png | Bin 967 -> 0 bytes .../test-output/testng-failed.xml | 13 - .../test-output/testng-reports.css | 326 ----------------- .../test-output/testng-reports.js | 122 ------- .../test-output/testng-reports1.css | 344 ------------------ .../test-output/testng-reports2.js | 76 ---- .../test-output/testng-results.xml | 66 ---- .../test-output/testng.css | 9 - 32 files changed, 1663 deletions(-) delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/collapseall.gif delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/junitreports/TEST-com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/Command line test.properties delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/classes.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/skipped.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html deleted file mode 100644 index fe7b28114b7b..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html +++ /dev/null @@ -1,161 +0,0 @@ - - -TestNG: Command line test - - - - - - - - -

Command line test

- - - - - - - - - - - -
Tests passed/Failed/Skipped:0/1/0
Started on:Thu Mar 12 13:25:41 PDT 2026
Total time:0 seconds (13 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - -
FAILED TESTS
Test methodExceptionTime (seconds)Instance
allJsonPropertiesShouldHaveApplyFieldCase
Test class: com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
-	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
-	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
-	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
-	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
-	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
-	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
-	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
-	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
-	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
-	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
-	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
-	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
-	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-	at org.testng.TestRunner.privateRun(TestRunner.java:808)
-	at org.testng.TestRunner.run(TestRunner.java:603)
-	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
-	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
-	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
-	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
-	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
-	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
-	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
-	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
-	at org.testng.TestNG.runSuites(TestNG.java:1092)
-	at org.testng.TestNG.run(TestNG.java:1060)
-	at org.testng.TestNG.privateMain(TestNG.java:1403)
-	at org.testng.TestNG.main(TestNG.java:1367)
-
Click to show all stack frames -
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
-	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
-	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
-	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
-	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
-	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
-	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
-	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
-	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
-	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
-	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
-	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
-	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
-	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-	at org.testng.TestRunner.privateRun(TestRunner.java:808)
-	at org.testng.TestRunner.run(TestRunner.java:603)
-	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
-	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
-	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
-	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
-	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
-	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
-	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
-	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
-	at org.testng.TestNG.runSuites(TestNG.java:1092)
-	at org.testng.TestNG.run(TestNG.java:1060)
-	at org.testng.TestNG.privateMain(TestNG.java:1403)
-	at org.testng.TestNG.main(TestNG.java:1367)
-
0com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df

- - \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml deleted file mode 100644 index fb074125d325..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml deleted file mode 100644 index f11054d19b32..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png deleted file mode 100644 index 176e6d5b3d64d032e76c493e5811a1cf839220b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html deleted file mode 100644 index e3a1912ee694..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - -TestNG Report - - - - - - - -
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
Command line suite
Command line test000113
- -
ClassMethodStartTime (ms)
Command line suite
Command line test — failed
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTestallJsonPropertiesShouldHaveApplyFieldCase17733471411692
-

Command line test

com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest#allJsonPropertiesShouldHaveApplyFieldCase

Exception
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) - at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) - at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) - at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) - at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) - at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) - at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) - at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) - at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) - at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) - at org.testng.TestRunner.privateRun(TestRunner.java:808) - at org.testng.TestRunner.run(TestRunner.java:603) - at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) - at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) - at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) - at org.testng.SuiteRunner.run(SuiteRunner.java:326) - at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) - at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) - at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) - at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) - at org.testng.TestNG.runSuites(TestNG.java:1092) - at org.testng.TestNG.run(TestNG.java:1060) - at org.testng.TestNG.privateMain(TestNG.java:1403) - at org.testng.TestNG.main(TestNG.java:1367) -

back to summary

- - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png deleted file mode 100644 index c117be59a9ecd1da15ebf48f6b7f53496302a7cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html deleted file mode 100644 index e7cc45f775e0..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - TestNG reports - - - - - - - - - - - -
- Test results - -
- 1 suite, 1 failed test -
- -
-
-
-
-
- - com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest -
-
-
-
- - - allJsonPropertiesShouldHaveApplyFieldCase -
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) - at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) - at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) - at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) - at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) - at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) - at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) - at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) - at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) - at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) - at org.testng.TestRunner.privateRun(TestRunner.java:808) - at org.testng.TestRunner.run(TestRunner.java:603) - at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) - at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) - at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) - at org.testng.SuiteRunner.run(SuiteRunner.java:326) - at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) - at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) - at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) - at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) - at org.testng.TestNG.runSuites(TestNG.java:1092) - at org.testng.TestNG.run(TestNG.java:1060) - at org.testng.TestNG.privateMain(TestNG.java:1403) - at org.testng.TestNG.main(TestNG.java:1367) - -
-
-
-
-
-
-
-
-
-
-
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
-<suite name="Command line suite" verbose="2">
-  <test thread-count="5" name="Command line test" verbose="2">
-    <classes>
-      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
-    </classes>
-  </test> <!-- Command line test -->
-</suite> <!-- Command line suite -->
-            
-
-
-
-
- Tests for Command line suite -
-
-
    -
  • - Command line test (1 class) -
  • -
-
-
-
-
- Groups for Command line suite -
-
-
- unit -
-
- allJsonPropertiesShouldHaveApplyFieldCase -
-
-
-
-
-
-
- Times for Command line suite -
-
-
- - Total running time: 2 ms -
-
-
-
-
-
-
- Reporter output for Command line suite -
-
-
-
-
-
- 0 ignored methods -
-
-
-
-
-
- Methods in chronological order -
-
-
-
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
-
- - - allJsonPropertiesShouldHaveApplyFieldCase - 0 ms -
-
-
-
-
- - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js deleted file mode 100644 index b0614034ad3a..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png deleted file mode 100644 index 36d90d395c51912e718b89dd88b4a3fb53aa1d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 - -Class name -Method name -Groups - -com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest -   - -@Test - - -  -allJsonPropertiesShouldHaveApplyFieldCase -unit - - -@BeforeClass - - -@BeforeMethod - - -@AfterMethod - - -@AfterClass - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html deleted file mode 100644 index 027f83fca723..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html +++ /dev/null @@ -1,3 +0,0 @@ -

Groups used for this test run

- -
Group nameMethods
unitTenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase()[pri:0, instance:com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df]
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html deleted file mode 100644 index 3577bd28a9f6..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Results for Command line suite - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html deleted file mode 100644 index 0ee4b5b499ac..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html +++ /dev/null @@ -1,2 +0,0 @@ -Results for Command line suite -Select a result on the left-hand pane. diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html deleted file mode 100644 index 872d1d4a0de8..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html +++ /dev/null @@ -1,6 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

- - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html deleted file mode 100644 index 54b14cb854b6..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html +++ /dev/null @@ -1,2 +0,0 @@ -

Methods that were not run

-
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html deleted file mode 100644 index 872d1d4a0de8..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html +++ /dev/null @@ -1,6 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

- - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html deleted file mode 100644 index 063bc2e96fd0..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html +++ /dev/null @@ -1 +0,0 @@ -

Reporter output

\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html deleted file mode 100644 index fcf1c50c6537..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html +++ /dev/null @@ -1 +0,0 @@ -testng.xml for Command line suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command line suite" verbose="2">
  <test thread-count="5" name="Command line test" verbose="2">
    <classes>
      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
    </classes>
  </test> <!-- Command line test -->
</suite> <!-- Command line suite -->
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html deleted file mode 100644 index 1dde178e49ee..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html +++ /dev/null @@ -1,30 +0,0 @@ - - -Results for Command line suite - - - - -

Results for
Command line suite

- - - - - - - - - - -
1 test1 class1 method:
-  chronological
-  alphabetical
-  not run (0)
1 groupreporter outputtestng.xml
- -

-

-
Command line test (0/1/0) - Results -
-
- \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html deleted file mode 100644 index f0ca6453a9b1..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - -

Test results

- - - -
SuitePassedFailedSkippedtestng.xml
Total010 
Command line suite010Link
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png deleted file mode 100644 index 45e85bbfd0f5e85def14b896cfd4331675be2759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml deleted file mode 100644 index f11054d19b32..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css deleted file mode 100644 index d7b75c404782..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css +++ /dev/null @@ -1,326 +0,0 @@ -body { - margin: 0 0 5px 5px; -} - -ul { - margin: 0; -} - -li { - list-style-type: none; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.navigator-selected { - background: #ffa500; -} - -.wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - overflow: auto; -} - -.navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto; -} - -.suite { - margin: 0 10px 10px 0; - background-color: #fff8dc; -} - -.suite-name { - padding-left: 10px; - font-size: 25px; - font-family: Times, sans-serif; -} - -.main-panel-header { - padding: 5px; - background-color: #9FB4D9; /*afeeee*/; - font-family: monospace; - font-size: 18px; -} - -.main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #DEE8FC; /*d0ffff*/; -} - -.rounded-window { - border-radius: 10px; - border-style: solid; - border-width: 1px; -} - -.rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto; -} - -.light-rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; -} - -.rounded-window-bottom { - border-style: solid; - border-width: 0 1px 1px 1px; - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto; -} - -.method-name { - font-size: 12px; - font-family: monospace; -} - -.method-content { - border-style: solid; - border-width: 0 0 1px 0; - margin-bottom: 10px; - padding-bottom: 5px; - width: 80%; -} - -.parameters { - font-size: 14px; - font-family: monospace; -} - -.stack-trace { - white-space: pre; - font-family: monospace; - font-size: 12px; - font-weight: bold; - margin-top: 0; - margin-left: 20px; -} - -.testng-xml { - font-family: monospace; -} - -.method-list-content { - margin-left: 10px; -} - -.navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; -} - -.suite-section-title { - margin-top: 10px; - width: 80%; - border-style: solid; - border-width: 1px 0 0 0; - font-family: Times, sans-serif; - font-size: 18px; - font-weight: bold; -} - -.suite-section-content { - list-style-image: url(bullet_point.png); -} - -.top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0 0 5px 0; - background-color: #0066ff; - font-family: Times, sans-serif; - color: #fff; - text-align: center; -} -.button{ - position: absolute; - margin-left:500px; - margin-top:8px; - background-color: white; - color:#0066ff; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight:bold; - border-color:#0066ff ; - border-radius:25px; - cursor: pointer; - height:30px; - width:150px; - outline:none; - -} - -.top-banner-title-font { - font-size: 25px; -} - -.test-name { - font-family: 'Lucida Grande', sans-serif; - font-size: 16px; -} - -.suite-icon { - padding: 5px; - float: right; - height: 20px; -} - -.test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0 0 1px 0; - border-style: solid; - padding: 5px; -} - -.test-group-name { - font-weight: bold; -} - -.method-in-group { - font-size: 16px; - margin-left: 80px; -} - -table.google-visualization-table-table { - width: 100%; -} - -.reporter-method-name { - font-size: 14px; - font-family: monospace; -} - -.reporter-method-output-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.ignored-class-div { - font-size: 14px; - font-family: monospace; -} - -.ignored-methods-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.border-failed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #f00; -} - -.border-skipped { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #edc600; -} - -.border-passed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #19f52d; -} - -.times-div { - text-align: center; - padding: 5px; -} - -.suite-total-time { - font: 16px 'Lucida Grande'; -} - -.configuration-suite { - margin-left: 20px; -} - -.configuration-test { - margin-left: 40px; -} - -.configuration-class { - margin-left: 60px; -} - -.configuration-method { - margin-left: 80px; -} - -.test-method { - margin-left: 100px; -} - -.chronological-class { - background-color: skyblue; - border-style: solid; - border-width: 0 0 1px 1px; -} - -.method-start { - float: right; -} - -.chronological-class-name { - padding: 0 0 0 5px; - color: #008; -} - -.after, .before, .test-method { - font-family: monospace; - font-size: 14px; -} - -.navigator-suite-header { - font-size: 22px; - margin: 0 10px 5px 0; - background-color: #deb887; - text-align: center; -} - -.collapse-all-icon { - padding: 5px; - float: right; -} -/*retro Theme*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js deleted file mode 100644 index c1a84a35d453..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js +++ /dev/null @@ -1,122 +0,0 @@ -$(document).ready(function() { - $('a.navigator-link').on("click", function() { - // Extract the panel for this link - var panel = getPanelName($(this)); - - // Mark this link as currently selected - $('.navigator-link').parent().removeClass('navigator-selected'); - $(this).parent().addClass('navigator-selected'); - - showPanel(panel); - }); - - installMethodHandlers('failed'); - installMethodHandlers('skipped'); - installMethodHandlers('passed', true); // hide passed methods by default - - $('a.method').on("click", function() { - showMethod($(this)); - return false; - }); - - // Hide all the panels and display the first one (do this last - // to make sure the click() will invoke the listeners) - $('.panel').hide(); - $('.navigator-link').first().trigger("click"); - - // Collapse/expand the suites - $('a.collapse-all-link').on("click", function() { - var contents = $('.navigator-suite-content'); - if (contents.css('display') == 'none') { - contents.show(); - } else { - contents.hide(); - } - }); -}); - -// The handlers that take care of showing/hiding the methods -function installMethodHandlers(name, hide) { - function getContent(t) { - return $('.method-list-content.' + name + "." + t.attr('panel-name')); - } - - function getHideLink(t, name) { - var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); - return $(s); - } - - function getShowLink(t, name) { - return $('a.show-methods.' + name + "." + t.attr('panel-name')); - } - - function getMethodPanelClassSel(element, name) { - var panelName = getPanelName(element); - var sel = '.' + panelName + "-class-" + name; - return $(sel); - } - - $('a.hide-methods.' + name).on("click", function() { - var w = getContent($(this)); - w.hide(); - getHideLink($(this), name).hide(); - getShowLink($(this), name).show(); - getMethodPanelClassSel($(this), name).hide(); - }); - - $('a.show-methods.' + name).on("click", function() { - var w = getContent($(this)); - w.show(); - getHideLink($(this), name).show(); - getShowLink($(this), name).hide(); - showPanel(getPanelName($(this))); - getMethodPanelClassSel($(this), name).show(); - }); - - if (hide) { - $('a.hide-methods.' + name).trigger("click"); - } else { - $('a.show-methods.' + name).trigger("click"); - } -} - -function getHashForMethod(element) { - return element.attr('hash-for-method'); -} - -function getPanelName(element) { - return element.attr('panel-name'); -} - -function showPanel(panelName) { - $('.panel').hide(); - var panel = $('.panel[panel-name="' + panelName + '"]'); - panel.show(); -} - -function showMethod(element) { - var hashTag = getHashForMethod(element); - var panelName = getPanelName(element); - showPanel(panelName); - var current = document.location.href; - var base = current.substring(0, current.indexOf('#')) - document.location.href = base + '#' + hashTag; - var newPosition = $(document).scrollTop() - 65; - $(document).scrollTop(newPosition); -} - -function drawTable() { - for (var i = 0; i < suiteTableInitFunctions.length; i++) { - window[suiteTableInitFunctions[i]](); - } - - for (var k in window.suiteTableData) { - var v = window.suiteTableData[k]; - var div = v.tableDiv; - var data = v.tableData - var table = new google.visualization.Table(document.getElementById(div)); - table.draw(data, { - showRowNumber : false - }); - } -} diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css deleted file mode 100644 index 570323ffb8fe..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css +++ /dev/null @@ -1,344 +0,0 @@ -body { - background-color: whitesmoke; - margin: 0 0 5px 5px; -} -ul { - margin-top: 10px; - margin-left:-10px; -} - li { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding:5px 5px; - } - a { - text-decoration: none; - color: black; - font-size: 14px; - } - - a:hover { - color:black ; - text-decoration: underline; - } - - .navigator-selected { - /* #ffa500; Mouse hover color after click Orange.*/ - background:#027368 - } - - .wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - margin-right:9px; - overflow: auto;/*imortant*/ - } - - .navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto;/*important*/ - } - - .suite { - margin: -5px 10px 10px 5px; - background-color: whitesmoke ;/*Colour of the left bside box*/ - } - - .suite-name { - font-size: 24px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/ - color: white; - } - - .main-panel-header { - padding: 5px; - background-color: #027368; /*afeeee*/; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color:white; - font-size: 18px; - } - - .main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/ - } - - .rounded-window { - border-style: dotted; - border-width: 1px;/*Border of left Side box*/ - background-color: whitesmoke; - border-radius: 10px; - } - - .rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto;/*Top of RightSide box*/ - } - - .light-rounded-window-top { - background-color: #027368; - padding-left:120px; - border-radius: 10px; - - } - - .rounded-window-bottom { - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto;/*Bottom of rightSide box*/ - } - - .method-name { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: bold; - } - - .method-content { - border-style: solid; - border-width: 0 0 1px 0; - margin-bottom: 10px; - padding-bottom: 5px; - width: 100%; - } - - .parameters { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .stack-trace { - white-space: pre; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: bold; - margin-top: 0; - margin-left: 20px; /*Error Stack Trace Message*/ - } - - .testng-xml { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .method-list-content { - margin-left: 10px; - } - - .navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; - } - - .suite-section-title { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-weight:bold; - background-color: #8C8887; - margin-left: -10px; - margin-top:10px; - padding:6px; - } - - .suite-section-content { - list-style-image: url(bullet_point.png); - background-color: whitesmoke; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - overflow: hidden; - } - - .top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0 0 5px 0; - background-color: #027368; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - color: #fff; - text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/ - } - - .top-banner-title-font { - font-size: 25px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 3px; - float: right; - } - - .test-name { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 16px; - } - - .suite-icon { - padding: 5px; - float: right; - height: 20px; - } - - .test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0 0 1px 0; - border-style: solid; - padding: 5px; - } - - .test-group-name { - font-weight: bold; - } - - .method-in-group { - font-size: 16px; - margin-left: 80px; - } - - table.google-visualization-table-table { - width: 100%; - } - - .reporter-method-name { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .reporter-method-output-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - border-width: 0 0 0 1px; - border-style: solid; - } - - .ignored-class-div { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .ignored-methods-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - border-width: 0 0 0 1px; - border-style: solid; - } - - .border-failed { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #F20505; - } - - .border-skipped { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #F2BE22; - } - - .border-passed { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #038C73; - } - - .times-div { - text-align: center; - padding: 5px; - } - - .suite-total-time { - font: 16px 'Lucida Grande'; - } - - .configuration-suite { - margin-left: 20px; - } - - .configuration-test { - margin-left: 40px; - } - - .configuration-class { - margin-left: 60px; - } - - .configuration-method { - margin-left: 80px; - } - - .test-method { - margin-left: 100px; - } - - .chronological-class { - background-color: #CCD0D1; - border-width: 0 0 1px 1px;/*Chronological*/ - } - - .method-start { - float: right; - } - - .chronological-class-name { - padding: 0 0 0 5px; - margin-top:5px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #008; - } - - .after, .before, .test-method { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - margin-top:5px; - } - - .navigator-suite-header { - font-size: 18px; - margin: 0px 10px 10px 5px; - padding: 5px; - border-radius: 10px; - background-color: #027368; - color: white; - font-weight:bold; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - text-align: center; /*All Suites on top of left box*//*Status: -Completed*/ - } - - .collapse-all-icon { - padding: 3px; - float: right; - } - .button{ - position: absolute; - margin-left:500px; - margin-top:8px; - background-color: white; - color:#027368; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight:bold; - border-color:#027368; - border-radius:25px; - cursor: pointer; - height:30px; - width:150px; - outline: none; -} -/*Author: - Akhil Gullapalli*/ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js deleted file mode 100644 index 5342859fa4df..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js +++ /dev/null @@ -1,76 +0,0 @@ -window.onload = function () { - let cookies = document.cookie; - let cookieValue = cookies.split('='); - if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') { - document.getElementById('retro').setAttribute('disabled', 'false'); - } else if (cookieValue[1] === 'Switch Ultra Theme' || - localStorage.getItem('Theme') === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('retro').setAttribute('disabled', 'false'); - - } else if (cookieValue[1] === 'Switch Retro Theme' || - localStorage.getItem('Theme') === 'Switch Retro Theme') { - if (cookieValue[1] === 'Switch Ultra Theme' || - localStorage.getItem('Theme') === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('retro').setAttribute('disabled', 'false'); - - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('retro').removeAttribute('disabled'); - document.getElementById('ultra').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - - } else if (select === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('ultra').removeAttribute('disabled'); - document.getElementById('retro').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - } - } else if (cookieValue[1] === 'Switch Retro Theme' || - localStorage.getItem('Theme') === 'Switch Retro Theme') { - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('ultra').setAttribute('disabled', 'false'); - } -} -document.getElementById('button').onclick = function () { - let select = document.getElementById('button').innerText; - if (select === 'Switch Retro Theme') { - let d = new Date(); - days = 365; - d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 - document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('retro').removeAttribute('disabled'); - document.getElementById('ultra').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - - } else if (select === 'Switch Ultra Theme') { - let d = new Date(); - days = 365; - d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 - document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('ultra').removeAttribute('disabled'); - document.getElementById('retro').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - } -} -//Function to mouse hovering affect. -document.getElementById('button').onmouseover = function () { - document.getElementById('button').style.borderRadius = "25px"; - document.getElementById('button').style.width = "180px"; - document.getElementById('button').style.height = "45px"; - document.getElementById('button').style.marginTop = "1px"; - -} -//Function to mouse out affect -document.getElementById('button').onmouseout = function () { - document.getElementById('button').style.borderRadius = "25px"; - document.getElementById('button').style.width = "150px"; - document.getElementById('button').style.height = "30px"; - document.getElementById('button').style.marginTop = "8px"; - -} - -//This is the file where we handle the switching of the Themes. -/*Author:- Akhil Gullapalli*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml deleted file mode 100644 index 6ed30a81cada..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css deleted file mode 100644 index 5124ba863b37..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css +++ /dev/null @@ -1,9 +0,0 @@ -.invocation-failed, .test-failed { background-color: #DD0000; } -.invocation-percent, .test-percent { background-color: #006600; } -.invocation-passed, .test-passed { background-color: #00AA00; } -.invocation-skipped, .test-skipped { background-color: #CCCC00; } - -.main-page { - font-size: x-large; -} - From 9c91ec3b6def1f2c6a68d92456844b6ccf47021b Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 15:14:53 -0700 Subject: [PATCH 14/35] Deprecate getResponseHeaderNames/Values, fix toArray garbage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The new toArray(new String[0]) calls in getResponseHeaderNames() and getResponseHeaderValues() created garbage arrays on every call. These methods have zero production callers — only test validators used them. Changes: - Mark getResponseHeaderNames/Values as @Deprecated - Update StoreResponseValidator to use getResponseHeaders() map directly instead of converting to arrays and doing indexOf lookups Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Command line suite/Command line test.html | 161 ++++++++ .../Command line suite/Command line test.xml | 47 +++ .../Command line suite/testng-failed.xml | 13 + .../test-output/bullet_point.png | Bin 0 -> 356 bytes .../test-output/collapseall.gif | Bin 0 -> 157 bytes .../test-output/emailable-report.html | 56 +++ .../test-output/failed.png | Bin 0 -> 977 bytes .../test-output/index.html | 284 +++++++++++++++ .../test-output/jquery.min.js | 2 + ...ark.TenantWorkloadConfigApplyFieldTest.xml | 48 +++ .../test-output/navigator-bullet.png | Bin 0 -> 352 bytes .../Command line test.properties | 1 + .../old/Command line suite/classes.html | 29 ++ .../old/Command line suite/groups.html | 3 + .../old/Command line suite/index.html | 6 + .../old/Command line suite/main.html | 2 + .../methods-alphabetical.html | 6 + .../Command line suite/methods-not-run.html | 2 + .../old/Command line suite/methods.html | 6 + .../Command line suite/reporter-output.html | 1 + .../old/Command line suite/testng.xml.html | 1 + .../old/Command line suite/toc.html | 30 ++ .../test-output/old/index.html | 9 + .../test-output/passed.png | Bin 0 -> 1019 bytes .../test-output/skipped.png | Bin 0 -> 967 bytes .../test-output/testng-failed.xml | 13 + .../test-output/testng-reports.css | 326 +++++++++++++++++ .../test-output/testng-reports.js | 122 +++++++ .../test-output/testng-reports1.css | 344 ++++++++++++++++++ .../test-output/testng-reports2.js | 76 ++++ .../test-output/testng-results.xml | 66 ++++ .../test-output/testng.css | 9 + .../StoreResponseValidator.java | 13 +- .../directconnectivity/StoreResponse.java | 8 + 34 files changed, 1676 insertions(+), 8 deletions(-) create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/collapseall.gif create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/junitreports/TEST-com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/Command line test.properties create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/classes.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/skipped.png create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml create mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html new file mode 100644 index 000000000000..fe7b28114b7b --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html @@ -0,0 +1,161 @@ + + +TestNG: Command line test + + + + + + + + +

Command line test

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:0/1/0
Started on:Thu Mar 12 13:25:41 PDT 2026
Total time:0 seconds (13 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + +
FAILED TESTS
Test methodExceptionTime (seconds)Instance
allJsonPropertiesShouldHaveApplyFieldCase
Test class: com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
+	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
+	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
+	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
+	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
+	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
+	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:808)
+	at org.testng.TestRunner.run(TestRunner.java:603)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.runSuites(TestNG.java:1092)
+	at org.testng.TestNG.run(TestNG.java:1060)
+	at org.testng.TestNG.privateMain(TestNG.java:1403)
+	at org.testng.TestNG.main(TestNG.java:1367)
+
Click to show all stack frames +
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
+	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
+	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
+	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
+	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
+	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
+	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:808)
+	at org.testng.TestRunner.run(TestRunner.java:603)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.runSuites(TestNG.java:1092)
+	at org.testng.TestNG.run(TestNG.java:1060)
+	at org.testng.TestNG.privateMain(TestNG.java:1403)
+	at org.testng.TestNG.main(TestNG.java:1367)
+
0com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df

+ + \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml new file mode 100644 index 000000000000..fb074125d325 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml new file mode 100644 index 000000000000..f11054d19b32 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png new file mode 100644 index 0000000000000000000000000000000000000000..176e6d5b3d64d032e76c493e5811a1cf839220b5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html new file mode 100644 index 000000000000..e3a1912ee694 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html @@ -0,0 +1,56 @@ + + + + +TestNG Report + + + + + + + +
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
Command line suite
Command line test000113
+ +
ClassMethodStartTime (ms)
Command line suite
Command line test — failed
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTestallJsonPropertiesShouldHaveApplyFieldCase17733471411692
+

Command line test

com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest#allJsonPropertiesShouldHaveApplyFieldCase

Exception
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 + at java.base/java.lang.ClassLoader.defineClass1(Native Method) + at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) + at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) + at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) + at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) + at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) + at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) + at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) + at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) + at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) + at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) + at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.testng.TestRunner.privateRun(TestRunner.java:808) + at org.testng.TestRunner.run(TestRunner.java:603) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) + at org.testng.SuiteRunner.run(SuiteRunner.java:326) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) + at org.testng.TestNG.runSuites(TestNG.java:1092) + at org.testng.TestNG.run(TestNG.java:1060) + at org.testng.TestNG.privateMain(TestNG.java:1403) + at org.testng.TestNG.main(TestNG.java:1367) +

back to summary

+ + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png new file mode 100644 index 0000000000000000000000000000000000000000..c117be59a9ecd1da15ebf48f6b7f53496302a7cd GIT binary patch literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html new file mode 100644 index 000000000000..e7cc45f775e0 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html @@ -0,0 +1,284 @@ + + + + + + TestNG reports + + + + + + + + + + + +
+ Test results + +
+ 1 suite, 1 failed test +
+ +
+
+
+
+
+ + com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest +
+
+
+
+ + + allJsonPropertiesShouldHaveApplyFieldCase +
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 + at java.base/java.lang.ClassLoader.defineClass1(Native Method) + at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) + at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) + at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) + at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) + at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) + at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) + at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) + at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) + at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) + at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) + at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.testng.TestRunner.privateRun(TestRunner.java:808) + at org.testng.TestRunner.run(TestRunner.java:603) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) + at org.testng.SuiteRunner.run(SuiteRunner.java:326) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) + at org.testng.TestNG.runSuites(TestNG.java:1092) + at org.testng.TestNG.run(TestNG.java:1060) + at org.testng.TestNG.privateMain(TestNG.java:1403) + at org.testng.TestNG.main(TestNG.java:1367) + +
+
+
+
+
+
+
+
+
+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
+<suite name="Command line suite" verbose="2">
+  <test thread-count="5" name="Command line test" verbose="2">
+    <classes>
+      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
+    </classes>
+  </test> <!-- Command line test -->
+</suite> <!-- Command line suite -->
+            
+
+
+
+
+ Tests for Command line suite +
+
+
    +
  • + Command line test (1 class) +
  • +
+
+
+
+
+ Groups for Command line suite +
+
+
+ unit +
+
+ allJsonPropertiesShouldHaveApplyFieldCase +
+
+
+
+
+
+
+ Times for Command line suite +
+
+
+ + Total running time: 2 ms +
+
+
+
+
+
+
+ Reporter output for Command line suite +
+
+
+
+
+
+ 0 ignored methods +
+
+
+
+
+
+ Methods in chronological order +
+
+
+
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
+
+ + + allJsonPropertiesShouldHaveApplyFieldCase + 0 ms +
+
+
+
+
+ + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js new file mode 100644 index 000000000000..b0614034ad3a --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..36d90d395c51912e718b89dd88b4a3fb53aa1d85 GIT binary patch literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 + +Class name +Method name +Groups + +com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest +   + +@Test + + +  +allJsonPropertiesShouldHaveApplyFieldCase +unit + + +@BeforeClass + + +@BeforeMethod + + +@AfterMethod + + +@AfterClass + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html new file mode 100644 index 000000000000..027f83fca723 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html @@ -0,0 +1,3 @@ +

Groups used for this test run

+ +
Group nameMethods
unitTenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase()[pri:0, instance:com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df]
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html new file mode 100644 index 000000000000..3577bd28a9f6 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html @@ -0,0 +1,6 @@ +Results for Command line suite + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html new file mode 100644 index 000000000000..0ee4b5b499ac --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html @@ -0,0 +1,2 @@ +Results for Command line suite +Select a result on the left-hand pane. diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html new file mode 100644 index 000000000000..872d1d4a0de8 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html @@ -0,0 +1,6 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html new file mode 100644 index 000000000000..54b14cb854b6 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html @@ -0,0 +1,2 @@ +

Methods that were not run

+
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html new file mode 100644 index 000000000000..872d1d4a0de8 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html @@ -0,0 +1,6 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html new file mode 100644 index 000000000000..063bc2e96fd0 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html @@ -0,0 +1 @@ +

Reporter output

\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html new file mode 100644 index 000000000000..fcf1c50c6537 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html @@ -0,0 +1 @@ +testng.xml for Command line suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command line suite" verbose="2">
  <test thread-count="5" name="Command line test" verbose="2">
    <classes>
      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
    </classes>
  </test> <!-- Command line test -->
</suite> <!-- Command line suite -->
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html new file mode 100644 index 000000000000..1dde178e49ee --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html @@ -0,0 +1,30 @@ + + +Results for Command line suite + + + + +

Results for
Command line suite

+ + + + + + + + + + +
1 test1 class1 method:
+  chronological
+  alphabetical
+  not run (0)
1 groupreporter outputtestng.xml
+ +

+

+
Command line test (0/1/0) + Results +
+
+ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html new file mode 100644 index 000000000000..f0ca6453a9b1 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html @@ -0,0 +1,9 @@ + + + + +

Test results

+ + + +
SuitePassedFailedSkippedtestng.xml
Total010 
Command line suite010Link
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png new file mode 100644 index 0000000000000000000000000000000000000000..45e85bbfd0f5e85def14b896cfd4331675be2759 GIT binary patch literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 literal 0 HcmV?d00001 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml new file mode 100644 index 000000000000..f11054d19b32 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css new file mode 100644 index 000000000000..d7b75c404782 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css @@ -0,0 +1,326 @@ +body { + margin: 0 0 5px 5px; +} + +ul { + margin: 0; +} + +li { + list-style-type: none; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.navigator-selected { + background: #ffa500; +} + +.wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + overflow: auto; +} + +.navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto; +} + +.suite { + margin: 0 10px 10px 0; + background-color: #fff8dc; +} + +.suite-name { + padding-left: 10px; + font-size: 25px; + font-family: Times, sans-serif; +} + +.main-panel-header { + padding: 5px; + background-color: #9FB4D9; /*afeeee*/; + font-family: monospace; + font-size: 18px; +} + +.main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #DEE8FC; /*d0ffff*/; +} + +.rounded-window { + border-radius: 10px; + border-style: solid; + border-width: 1px; +} + +.rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto; +} + +.light-rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; +} + +.rounded-window-bottom { + border-style: solid; + border-width: 0 1px 1px 1px; + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto; +} + +.method-name { + font-size: 12px; + font-family: monospace; +} + +.method-content { + border-style: solid; + border-width: 0 0 1px 0; + margin-bottom: 10px; + padding-bottom: 5px; + width: 80%; +} + +.parameters { + font-size: 14px; + font-family: monospace; +} + +.stack-trace { + white-space: pre; + font-family: monospace; + font-size: 12px; + font-weight: bold; + margin-top: 0; + margin-left: 20px; +} + +.testng-xml { + font-family: monospace; +} + +.method-list-content { + margin-left: 10px; +} + +.navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; +} + +.suite-section-title { + margin-top: 10px; + width: 80%; + border-style: solid; + border-width: 1px 0 0 0; + font-family: Times, sans-serif; + font-size: 18px; + font-weight: bold; +} + +.suite-section-content { + list-style-image: url(bullet_point.png); +} + +.top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0 0 5px 0; + background-color: #0066ff; + font-family: Times, sans-serif; + color: #fff; + text-align: center; +} +.button{ + position: absolute; + margin-left:500px; + margin-top:8px; + background-color: white; + color:#0066ff; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight:bold; + border-color:#0066ff ; + border-radius:25px; + cursor: pointer; + height:30px; + width:150px; + outline:none; + +} + +.top-banner-title-font { + font-size: 25px; +} + +.test-name { + font-family: 'Lucida Grande', sans-serif; + font-size: 16px; +} + +.suite-icon { + padding: 5px; + float: right; + height: 20px; +} + +.test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0 0 1px 0; + border-style: solid; + padding: 5px; +} + +.test-group-name { + font-weight: bold; +} + +.method-in-group { + font-size: 16px; + margin-left: 80px; +} + +table.google-visualization-table-table { + width: 100%; +} + +.reporter-method-name { + font-size: 14px; + font-family: monospace; +} + +.reporter-method-output-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0 0 0 1px; + border-style: solid; +} + +.ignored-class-div { + font-size: 14px; + font-family: monospace; +} + +.ignored-methods-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0 0 0 1px; + border-style: solid; +} + +.border-failed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #f00; +} + +.border-skipped { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #edc600; +} + +.border-passed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #19f52d; +} + +.times-div { + text-align: center; + padding: 5px; +} + +.suite-total-time { + font: 16px 'Lucida Grande'; +} + +.configuration-suite { + margin-left: 20px; +} + +.configuration-test { + margin-left: 40px; +} + +.configuration-class { + margin-left: 60px; +} + +.configuration-method { + margin-left: 80px; +} + +.test-method { + margin-left: 100px; +} + +.chronological-class { + background-color: skyblue; + border-style: solid; + border-width: 0 0 1px 1px; +} + +.method-start { + float: right; +} + +.chronological-class-name { + padding: 0 0 0 5px; + color: #008; +} + +.after, .before, .test-method { + font-family: monospace; + font-size: 14px; +} + +.navigator-suite-header { + font-size: 22px; + margin: 0 10px 5px 0; + background-color: #deb887; + text-align: center; +} + +.collapse-all-icon { + padding: 5px; + float: right; +} +/*retro Theme*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js new file mode 100644 index 000000000000..c1a84a35d453 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js @@ -0,0 +1,122 @@ +$(document).ready(function() { + $('a.navigator-link').on("click", function() { + // Extract the panel for this link + var panel = getPanelName($(this)); + + // Mark this link as currently selected + $('.navigator-link').parent().removeClass('navigator-selected'); + $(this).parent().addClass('navigator-selected'); + + showPanel(panel); + }); + + installMethodHandlers('failed'); + installMethodHandlers('skipped'); + installMethodHandlers('passed', true); // hide passed methods by default + + $('a.method').on("click", function() { + showMethod($(this)); + return false; + }); + + // Hide all the panels and display the first one (do this last + // to make sure the click() will invoke the listeners) + $('.panel').hide(); + $('.navigator-link').first().trigger("click"); + + // Collapse/expand the suites + $('a.collapse-all-link').on("click", function() { + var contents = $('.navigator-suite-content'); + if (contents.css('display') == 'none') { + contents.show(); + } else { + contents.hide(); + } + }); +}); + +// The handlers that take care of showing/hiding the methods +function installMethodHandlers(name, hide) { + function getContent(t) { + return $('.method-list-content.' + name + "." + t.attr('panel-name')); + } + + function getHideLink(t, name) { + var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); + return $(s); + } + + function getShowLink(t, name) { + return $('a.show-methods.' + name + "." + t.attr('panel-name')); + } + + function getMethodPanelClassSel(element, name) { + var panelName = getPanelName(element); + var sel = '.' + panelName + "-class-" + name; + return $(sel); + } + + $('a.hide-methods.' + name).on("click", function() { + var w = getContent($(this)); + w.hide(); + getHideLink($(this), name).hide(); + getShowLink($(this), name).show(); + getMethodPanelClassSel($(this), name).hide(); + }); + + $('a.show-methods.' + name).on("click", function() { + var w = getContent($(this)); + w.show(); + getHideLink($(this), name).show(); + getShowLink($(this), name).hide(); + showPanel(getPanelName($(this))); + getMethodPanelClassSel($(this), name).show(); + }); + + if (hide) { + $('a.hide-methods.' + name).trigger("click"); + } else { + $('a.show-methods.' + name).trigger("click"); + } +} + +function getHashForMethod(element) { + return element.attr('hash-for-method'); +} + +function getPanelName(element) { + return element.attr('panel-name'); +} + +function showPanel(panelName) { + $('.panel').hide(); + var panel = $('.panel[panel-name="' + panelName + '"]'); + panel.show(); +} + +function showMethod(element) { + var hashTag = getHashForMethod(element); + var panelName = getPanelName(element); + showPanel(panelName); + var current = document.location.href; + var base = current.substring(0, current.indexOf('#')) + document.location.href = base + '#' + hashTag; + var newPosition = $(document).scrollTop() - 65; + $(document).scrollTop(newPosition); +} + +function drawTable() { + for (var i = 0; i < suiteTableInitFunctions.length; i++) { + window[suiteTableInitFunctions[i]](); + } + + for (var k in window.suiteTableData) { + var v = window.suiteTableData[k]; + var div = v.tableDiv; + var data = v.tableData + var table = new google.visualization.Table(document.getElementById(div)); + table.draw(data, { + showRowNumber : false + }); + } +} diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css new file mode 100644 index 000000000000..570323ffb8fe --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css @@ -0,0 +1,344 @@ +body { + background-color: whitesmoke; + margin: 0 0 5px 5px; +} +ul { + margin-top: 10px; + margin-left:-10px; +} + li { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding:5px 5px; + } + a { + text-decoration: none; + color: black; + font-size: 14px; + } + + a:hover { + color:black ; + text-decoration: underline; + } + + .navigator-selected { + /* #ffa500; Mouse hover color after click Orange.*/ + background:#027368 + } + + .wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + margin-right:9px; + overflow: auto;/*imortant*/ + } + + .navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto;/*important*/ + } + + .suite { + margin: -5px 10px 10px 5px; + background-color: whitesmoke ;/*Colour of the left bside box*/ + } + + .suite-name { + font-size: 24px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/ + color: white; + } + + .main-panel-header { + padding: 5px; + background-color: #027368; /*afeeee*/; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color:white; + font-size: 18px; + } + + .main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/ + } + + .rounded-window { + border-style: dotted; + border-width: 1px;/*Border of left Side box*/ + background-color: whitesmoke; + border-radius: 10px; + } + + .rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto;/*Top of RightSide box*/ + } + + .light-rounded-window-top { + background-color: #027368; + padding-left:120px; + border-radius: 10px; + + } + + .rounded-window-bottom { + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto;/*Bottom of rightSide box*/ + } + + .method-name { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold; + } + + .method-content { + border-style: solid; + border-width: 0 0 1px 0; + margin-bottom: 10px; + padding-bottom: 5px; + width: 100%; + } + + .parameters { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .stack-trace { + white-space: pre; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: bold; + margin-top: 0; + margin-left: 20px; /*Error Stack Trace Message*/ + } + + .testng-xml { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .method-list-content { + margin-left: 10px; + } + + .navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; + } + + .suite-section-title { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight:bold; + background-color: #8C8887; + margin-left: -10px; + margin-top:10px; + padding:6px; + } + + .suite-section-content { + list-style-image: url(bullet_point.png); + background-color: whitesmoke; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + overflow: hidden; + } + + .top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0 0 5px 0; + background-color: #027368; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 18px; + color: #fff; + text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/ + } + + .top-banner-title-font { + font-size: 25px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 3px; + float: right; + } + + .test-name { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + } + + .suite-icon { + padding: 5px; + float: right; + height: 20px; + } + + .test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0 0 1px 0; + border-style: solid; + padding: 5px; + } + + .test-group-name { + font-weight: bold; + } + + .method-in-group { + font-size: 16px; + margin-left: 80px; + } + + table.google-visualization-table-table { + width: 100%; + } + + .reporter-method-name { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .reporter-method-output-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + border-width: 0 0 0 1px; + border-style: solid; + } + + .ignored-class-div { + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .ignored-methods-div { + padding: 5px; + margin: 0 0 5px 20px; + font-size: 12px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + border-width: 0 0 0 1px; + border-style: solid; + } + + .border-failed { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #F20505; + } + + .border-skipped { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #F2BE22; + } + + .border-passed { + border-radius:2px; + border-style: solid; + border-width: 0 0 0 10px; + border-color: #038C73; + } + + .times-div { + text-align: center; + padding: 5px; + } + + .suite-total-time { + font: 16px 'Lucida Grande'; + } + + .configuration-suite { + margin-left: 20px; + } + + .configuration-test { + margin-left: 40px; + } + + .configuration-class { + margin-left: 60px; + } + + .configuration-method { + margin-left: 80px; + } + + .test-method { + margin-left: 100px; + } + + .chronological-class { + background-color: #CCD0D1; + border-width: 0 0 1px 1px;/*Chronological*/ + } + + .method-start { + float: right; + } + + .chronological-class-name { + padding: 0 0 0 5px; + margin-top:5px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #008; + } + + .after, .before, .test-method { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + margin-top:5px; + } + + .navigator-suite-header { + font-size: 18px; + margin: 0px 10px 10px 5px; + padding: 5px; + border-radius: 10px; + background-color: #027368; + color: white; + font-weight:bold; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + text-align: center; /*All Suites on top of left box*//*Status: -Completed*/ + } + + .collapse-all-icon { + padding: 3px; + float: right; + } + .button{ + position: absolute; + margin-left:500px; + margin-top:8px; + background-color: white; + color:#027368; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight:bold; + border-color:#027368; + border-radius:25px; + cursor: pointer; + height:30px; + width:150px; + outline: none; +} +/*Author: - Akhil Gullapalli*/ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js new file mode 100644 index 000000000000..5342859fa4df --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js @@ -0,0 +1,76 @@ +window.onload = function () { + let cookies = document.cookie; + let cookieValue = cookies.split('='); + if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') { + document.getElementById('retro').setAttribute('disabled', 'false'); + } else if (cookieValue[1] === 'Switch Ultra Theme' || + localStorage.getItem('Theme') === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('retro').setAttribute('disabled', 'false'); + + } else if (cookieValue[1] === 'Switch Retro Theme' || + localStorage.getItem('Theme') === 'Switch Retro Theme') { + if (cookieValue[1] === 'Switch Ultra Theme' || + localStorage.getItem('Theme') === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('retro').setAttribute('disabled', 'false'); + + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('retro').removeAttribute('disabled'); + document.getElementById('ultra').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + + } else if (select === 'Switch Ultra Theme') { + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('ultra').removeAttribute('disabled'); + document.getElementById('retro').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + } + } else if (cookieValue[1] === 'Switch Retro Theme' || + localStorage.getItem('Theme') === 'Switch Retro Theme') { + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('ultra').setAttribute('disabled', 'false'); + } +} +document.getElementById('button').onclick = function () { + let select = document.getElementById('button').innerText; + if (select === 'Switch Retro Theme') { + let d = new Date(); + days = 365; + d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 + document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; + document.getElementById('button').innerText = "Switch Ultra Theme"; + document.getElementById('retro').removeAttribute('disabled'); + document.getElementById('ultra').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + + } else if (select === 'Switch Ultra Theme') { + let d = new Date(); + days = 365; + d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 + document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; + document.getElementById('button').innerText = "Switch Retro Theme"; + document.getElementById('ultra').removeAttribute('disabled'); + document.getElementById('retro').setAttribute('disabled', 'false'); + localStorage.setItem('Theme', select); + } +} +//Function to mouse hovering affect. +document.getElementById('button').onmouseover = function () { + document.getElementById('button').style.borderRadius = "25px"; + document.getElementById('button').style.width = "180px"; + document.getElementById('button').style.height = "45px"; + document.getElementById('button').style.marginTop = "1px"; + +} +//Function to mouse out affect +document.getElementById('button').onmouseout = function () { + document.getElementById('button').style.borderRadius = "25px"; + document.getElementById('button').style.width = "150px"; + document.getElementById('button').style.height = "30px"; + document.getElementById('button').style.marginTop = "8px"; + +} + +//This is the file where we handle the switching of the Themes. +/*Author:- Akhil Gullapalli*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml new file mode 100644 index 000000000000..6ed30a81cada --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css new file mode 100644 index 000000000000..5124ba863b37 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css @@ -0,0 +1,9 @@ +.invocation-failed, .test-failed { background-color: #DD0000; } +.invocation-percent, .test-percent { background-color: #006600; } +.invocation-passed, .test-passed { background-color: #00AA00; } +.invocation-skipped, .test-skipped { background-color: #CCCC00; } + +.main-page { + font-size: x-large; +} + diff --git a/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java b/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java index 7d71d812905f..a7325bd47f61 100644 --- a/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java +++ b/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java @@ -7,7 +7,6 @@ import org.assertj.core.api.Condition; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -39,7 +38,7 @@ public Builder hasHeader(String headerKey) { validators.add(new StoreResponseValidator() { @Override public void validate(StoreResponse resp) { - assertThat(Arrays.asList(resp.getResponseHeaderNames()).contains(headerKey)).isTrue(); + assertThat(resp.getResponseHeaders()).containsKey(headerKey); } }); return this; @@ -49,9 +48,8 @@ public Builder withHeader(String headerKey, String headerValue) { validators.add(new StoreResponseValidator() { @Override public void validate(StoreResponse resp) { - assertThat(Arrays.asList(resp.getResponseHeaderNames())).asList().contains(headerKey); - int index = Arrays.asList(resp.getResponseHeaderNames()).indexOf(headerKey); - assertThat(resp.getResponseHeaderValues()[index]).isEqualTo(headerValue); + assertThat(resp.getResponseHeaders()).containsKey(headerKey); + assertThat(resp.getResponseHeaders().get(headerKey)).isEqualTo(headerValue); } }); return this; @@ -62,9 +60,8 @@ public Builder withHeaderValueCondition(String headerKey, Condition cond validators.add(new StoreResponseValidator() { @Override public void validate(StoreResponse resp) { - assertThat(Arrays.asList(resp.getResponseHeaderNames())).asList().contains(headerKey); - int index = Arrays.asList(resp.getResponseHeaderNames()).indexOf(headerKey); - String value = resp.getResponseHeaderValues()[index]; + assertThat(resp.getResponseHeaders()).containsKey(headerKey); + String value = resp.getResponseHeaders().get(headerKey); condition.matches(value); } }); diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java index f57d9aff7c1f..cae9e145b281 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java @@ -103,10 +103,18 @@ public Map getResponseHeaders() { return responseHeaders; } + /** + * @deprecated Use {@link #getResponseHeaders()} instead. This method creates a new array on every call. + */ + @Deprecated public String[] getResponseHeaderNames() { return responseHeaders.keySet().toArray(new String[0]); } + /** + * @deprecated Use {@link #getResponseHeaders()} instead. This method creates a new array on every call. + */ + @Deprecated public String[] getResponseHeaderValues() { return responseHeaders.values().toArray(new String[0]); } From f7a841d3af3f0d922e255d8494b561f5641ec201 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 15:15:27 -0700 Subject: [PATCH 15/35] Add test-output/ to gitignore Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- sdk/cosmos/azure-cosmos-benchmark/.gitignore | 1 + .../Command line suite/Command line test.html | 161 -------- .../Command line suite/Command line test.xml | 47 --- .../Command line suite/testng-failed.xml | 13 - .../test-output/bullet_point.png | Bin 356 -> 0 bytes .../test-output/collapseall.gif | Bin 157 -> 0 bytes .../test-output/emailable-report.html | 56 --- .../test-output/failed.png | Bin 977 -> 0 bytes .../test-output/index.html | 284 --------------- .../test-output/jquery.min.js | 2 - ...ark.TenantWorkloadConfigApplyFieldTest.xml | 48 --- .../test-output/navigator-bullet.png | Bin 352 -> 0 bytes .../Command line test.properties | 1 - .../old/Command line suite/classes.html | 29 -- .../old/Command line suite/groups.html | 3 - .../old/Command line suite/index.html | 6 - .../old/Command line suite/main.html | 2 - .../methods-alphabetical.html | 6 - .../Command line suite/methods-not-run.html | 2 - .../old/Command line suite/methods.html | 6 - .../Command line suite/reporter-output.html | 1 - .../old/Command line suite/testng.xml.html | 1 - .../old/Command line suite/toc.html | 30 -- .../test-output/old/index.html | 9 - .../test-output/passed.png | Bin 1019 -> 0 bytes .../test-output/skipped.png | Bin 967 -> 0 bytes .../test-output/testng-failed.xml | 13 - .../test-output/testng-reports.css | 326 ----------------- .../test-output/testng-reports.js | 122 ------- .../test-output/testng-reports1.css | 344 ------------------ .../test-output/testng-reports2.js | 76 ---- .../test-output/testng-results.xml | 66 ---- .../test-output/testng.css | 9 - 33 files changed, 1 insertion(+), 1663 deletions(-) delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/collapseall.gif delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/junitreports/TEST-com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/Command line test.properties delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/classes.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/skipped.png delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css diff --git a/sdk/cosmos/azure-cosmos-benchmark/.gitignore b/sdk/cosmos/azure-cosmos-benchmark/.gitignore index 3510f1ce1f3b..65691d4fa248 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/.gitignore +++ b/sdk/cosmos/azure-cosmos-benchmark/.gitignore @@ -1 +1,2 @@ sdk/cosmos/azure-cosmos-benchmark/test-output/ +test-output/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html deleted file mode 100644 index fe7b28114b7b..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.html +++ /dev/null @@ -1,161 +0,0 @@ - - -TestNG: Command line test - - - - - - - - -

Command line test

- - - - - - - - - - - -
Tests passed/Failed/Skipped:0/1/0
Started on:Thu Mar 12 13:25:41 PDT 2026
Total time:0 seconds (13 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - -
FAILED TESTS
Test methodExceptionTime (seconds)Instance
allJsonPropertiesShouldHaveApplyFieldCase
Test class: com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
-	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
-	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
-	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
-	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
-	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
-	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
-	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
-	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
-	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
-	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
-	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
-	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
-	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-	at org.testng.TestRunner.privateRun(TestRunner.java:808)
-	at org.testng.TestRunner.run(TestRunner.java:603)
-	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
-	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
-	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
-	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
-	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
-	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
-	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
-	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
-	at org.testng.TestNG.runSuites(TestNG.java:1092)
-	at org.testng.TestNG.run(TestNG.java:1060)
-	at org.testng.TestNG.privateMain(TestNG.java:1403)
-	at org.testng.TestNG.main(TestNG.java:1367)
-
Click to show all stack frames -
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0
-	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
-	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
-	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
-	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
-	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
-	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
-	at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
-	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
-	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
-	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
-	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
-	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
-	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
-	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
-	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-	at org.testng.TestRunner.privateRun(TestRunner.java:808)
-	at org.testng.TestRunner.run(TestRunner.java:603)
-	at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
-	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
-	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
-	at org.testng.SuiteRunner.run(SuiteRunner.java:326)
-	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
-	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
-	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
-	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
-	at org.testng.TestNG.runSuites(TestNG.java:1092)
-	at org.testng.TestNG.run(TestNG.java:1060)
-	at org.testng.TestNG.privateMain(TestNG.java:1403)
-	at org.testng.TestNG.main(TestNG.java:1367)
-
0com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df

- - \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml deleted file mode 100644 index fb074125d325..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/Command line test.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml deleted file mode 100644 index f11054d19b32..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/Command line suite/testng-failed.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/bullet_point.png deleted file mode 100644 index 176e6d5b3d64d032e76c493e5811a1cf839220b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html deleted file mode 100644 index e3a1912ee694..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/emailable-report.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - -TestNG Report - - - - - - - -
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
Command line suite
Command line test000113
- -
ClassMethodStartTime (ms)
Command line suite
Command line test — failed
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTestallJsonPropertiesShouldHaveApplyFieldCase17733471411692
-

Command line test

com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest#allJsonPropertiesShouldHaveApplyFieldCase

Exception
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) - at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) - at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) - at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) - at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) - at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) - at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) - at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) - at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) - at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) - at org.testng.TestRunner.privateRun(TestRunner.java:808) - at org.testng.TestRunner.run(TestRunner.java:603) - at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) - at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) - at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) - at org.testng.SuiteRunner.run(SuiteRunner.java:326) - at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) - at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) - at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) - at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) - at org.testng.TestNG.runSuites(TestNG.java:1092) - at org.testng.TestNG.run(TestNG.java:1060) - at org.testng.TestNG.privateMain(TestNG.java:1403) - at org.testng.TestNG.main(TestNG.java:1367) -

back to summary

- - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/failed.png deleted file mode 100644 index c117be59a9ecd1da15ebf48f6b7f53496302a7cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html deleted file mode 100644 index e7cc45f775e0..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/index.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - TestNG reports - - - - - - - - - - - -
- Test results - -
- 1 suite, 1 failed test -
- -
-
-
-
-
- - com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest -
-
-
-
- - - allJsonPropertiesShouldHaveApplyFieldCase -
java.lang.UnsupportedClassVersionError: com/azure/cosmos/benchmark/TenantWorkloadConfig has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 61.0 - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) - at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) - at com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase(TenantWorkloadConfigApplyFieldTest.java:37) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136) - at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658) - at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219) - at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) - at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923) - at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192) - at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) - at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) - at org.testng.TestRunner.privateRun(TestRunner.java:808) - at org.testng.TestRunner.run(TestRunner.java:603) - at org.testng.SuiteRunner.runTest(SuiteRunner.java:429) - at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423) - at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383) - at org.testng.SuiteRunner.run(SuiteRunner.java:326) - at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) - at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) - at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249) - at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) - at org.testng.TestNG.runSuites(TestNG.java:1092) - at org.testng.TestNG.run(TestNG.java:1060) - at org.testng.TestNG.privateMain(TestNG.java:1403) - at org.testng.TestNG.main(TestNG.java:1367) - -
-
-
-
-
-
-
-
-
-
-
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
-<suite name="Command line suite" verbose="2">
-  <test thread-count="5" name="Command line test" verbose="2">
-    <classes>
-      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
-    </classes>
-  </test> <!-- Command line test -->
-</suite> <!-- Command line suite -->
-            
-
-
-
-
- Tests for Command line suite -
-
-
    -
  • - Command line test (1 class) -
  • -
-
-
-
-
- Groups for Command line suite -
-
-
- unit -
-
- allJsonPropertiesShouldHaveApplyFieldCase -
-
-
-
-
-
-
- Times for Command line suite -
-
-
- - Total running time: 2 ms -
-
-
-
-
-
-
- Reporter output for Command line suite -
-
-
-
-
-
- 0 ignored methods -
-
-
-
-
-
- Methods in chronological order -
-
-
-
com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest
-
- - - allJsonPropertiesShouldHaveApplyFieldCase - 0 ms -
-
-
-
-
- - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js deleted file mode 100644 index b0614034ad3a..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/navigator-bullet.png deleted file mode 100644 index 36d90d395c51912e718b89dd88b4a3fb53aa1d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 - -Class name -Method name -Groups - -com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest -   - -@Test - - -  -allJsonPropertiesShouldHaveApplyFieldCase -unit - - -@BeforeClass - - -@BeforeMethod - - -@AfterMethod - - -@AfterClass - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html deleted file mode 100644 index 027f83fca723..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/groups.html +++ /dev/null @@ -1,3 +0,0 @@ -

Groups used for this test run

- -
Group nameMethods
unitTenantWorkloadConfigApplyFieldTest.allJsonPropertiesShouldHaveApplyFieldCase()[pri:0, instance:com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest@17d677df]
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html deleted file mode 100644 index 3577bd28a9f6..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Results for Command line suite - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html deleted file mode 100644 index 0ee4b5b499ac..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/main.html +++ /dev/null @@ -1,2 +0,0 @@ -Results for Command line suite -Select a result on the left-hand pane. diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html deleted file mode 100644 index 872d1d4a0de8..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-alphabetical.html +++ /dev/null @@ -1,6 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

- - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html deleted file mode 100644 index 54b14cb854b6..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods-not-run.html +++ /dev/null @@ -1,2 +0,0 @@ -

Methods that were not run

-
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html deleted file mode 100644 index 872d1d4a0de8..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/methods.html +++ /dev/null @@ -1,6 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

- - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
26/03/12 13:25:41 0      allJsonPropertiesShouldHaveApplyFieldCasemain@1075738627
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html deleted file mode 100644 index 063bc2e96fd0..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/reporter-output.html +++ /dev/null @@ -1 +0,0 @@ -

Reporter output

\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html deleted file mode 100644 index fcf1c50c6537..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/testng.xml.html +++ /dev/null @@ -1 +0,0 @@ -testng.xml for Command line suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Command line suite" verbose="2">
  <test thread-count="5" name="Command line test" verbose="2">
    <classes>
      <class name="com.azure.cosmos.benchmark.TenantWorkloadConfigApplyFieldTest"/>
    </classes>
  </test> <!-- Command line test -->
</suite> <!-- Command line suite -->
\ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html deleted file mode 100644 index 1dde178e49ee..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/Command line suite/toc.html +++ /dev/null @@ -1,30 +0,0 @@ - - -Results for Command line suite - - - - -

Results for
Command line suite

- - - - - - - - - - -
1 test1 class1 method:
-  chronological
-  alphabetical
-  not run (0)
1 groupreporter outputtestng.xml
- -

-

-
Command line test (0/1/0) - Results -
-
- \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html b/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html deleted file mode 100644 index f0ca6453a9b1..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/old/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - -

Test results

- - - -
SuitePassedFailedSkippedtestng.xml
Total010 
Command line suite010Link
diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png b/sdk/cosmos/azure-cosmos-benchmark/test-output/passed.png deleted file mode 100644 index 45e85bbfd0f5e85def14b896cfd4331675be2759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml deleted file mode 100644 index f11054d19b32..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-failed.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css deleted file mode 100644 index d7b75c404782..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.css +++ /dev/null @@ -1,326 +0,0 @@ -body { - margin: 0 0 5px 5px; -} - -ul { - margin: 0; -} - -li { - list-style-type: none; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.navigator-selected { - background: #ffa500; -} - -.wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - overflow: auto; -} - -.navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto; -} - -.suite { - margin: 0 10px 10px 0; - background-color: #fff8dc; -} - -.suite-name { - padding-left: 10px; - font-size: 25px; - font-family: Times, sans-serif; -} - -.main-panel-header { - padding: 5px; - background-color: #9FB4D9; /*afeeee*/; - font-family: monospace; - font-size: 18px; -} - -.main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #DEE8FC; /*d0ffff*/; -} - -.rounded-window { - border-radius: 10px; - border-style: solid; - border-width: 1px; -} - -.rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto; -} - -.light-rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; -} - -.rounded-window-bottom { - border-style: solid; - border-width: 0 1px 1px 1px; - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto; -} - -.method-name { - font-size: 12px; - font-family: monospace; -} - -.method-content { - border-style: solid; - border-width: 0 0 1px 0; - margin-bottom: 10px; - padding-bottom: 5px; - width: 80%; -} - -.parameters { - font-size: 14px; - font-family: monospace; -} - -.stack-trace { - white-space: pre; - font-family: monospace; - font-size: 12px; - font-weight: bold; - margin-top: 0; - margin-left: 20px; -} - -.testng-xml { - font-family: monospace; -} - -.method-list-content { - margin-left: 10px; -} - -.navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; -} - -.suite-section-title { - margin-top: 10px; - width: 80%; - border-style: solid; - border-width: 1px 0 0 0; - font-family: Times, sans-serif; - font-size: 18px; - font-weight: bold; -} - -.suite-section-content { - list-style-image: url(bullet_point.png); -} - -.top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0 0 5px 0; - background-color: #0066ff; - font-family: Times, sans-serif; - color: #fff; - text-align: center; -} -.button{ - position: absolute; - margin-left:500px; - margin-top:8px; - background-color: white; - color:#0066ff; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight:bold; - border-color:#0066ff ; - border-radius:25px; - cursor: pointer; - height:30px; - width:150px; - outline:none; - -} - -.top-banner-title-font { - font-size: 25px; -} - -.test-name { - font-family: 'Lucida Grande', sans-serif; - font-size: 16px; -} - -.suite-icon { - padding: 5px; - float: right; - height: 20px; -} - -.test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0 0 1px 0; - border-style: solid; - padding: 5px; -} - -.test-group-name { - font-weight: bold; -} - -.method-in-group { - font-size: 16px; - margin-left: 80px; -} - -table.google-visualization-table-table { - width: 100%; -} - -.reporter-method-name { - font-size: 14px; - font-family: monospace; -} - -.reporter-method-output-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.ignored-class-div { - font-size: 14px; - font-family: monospace; -} - -.ignored-methods-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.border-failed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #f00; -} - -.border-skipped { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #edc600; -} - -.border-passed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #19f52d; -} - -.times-div { - text-align: center; - padding: 5px; -} - -.suite-total-time { - font: 16px 'Lucida Grande'; -} - -.configuration-suite { - margin-left: 20px; -} - -.configuration-test { - margin-left: 40px; -} - -.configuration-class { - margin-left: 60px; -} - -.configuration-method { - margin-left: 80px; -} - -.test-method { - margin-left: 100px; -} - -.chronological-class { - background-color: skyblue; - border-style: solid; - border-width: 0 0 1px 1px; -} - -.method-start { - float: right; -} - -.chronological-class-name { - padding: 0 0 0 5px; - color: #008; -} - -.after, .before, .test-method { - font-family: monospace; - font-size: 14px; -} - -.navigator-suite-header { - font-size: 22px; - margin: 0 10px 5px 0; - background-color: #deb887; - text-align: center; -} - -.collapse-all-icon { - padding: 5px; - float: right; -} -/*retro Theme*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js deleted file mode 100644 index c1a84a35d453..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports.js +++ /dev/null @@ -1,122 +0,0 @@ -$(document).ready(function() { - $('a.navigator-link').on("click", function() { - // Extract the panel for this link - var panel = getPanelName($(this)); - - // Mark this link as currently selected - $('.navigator-link').parent().removeClass('navigator-selected'); - $(this).parent().addClass('navigator-selected'); - - showPanel(panel); - }); - - installMethodHandlers('failed'); - installMethodHandlers('skipped'); - installMethodHandlers('passed', true); // hide passed methods by default - - $('a.method').on("click", function() { - showMethod($(this)); - return false; - }); - - // Hide all the panels and display the first one (do this last - // to make sure the click() will invoke the listeners) - $('.panel').hide(); - $('.navigator-link').first().trigger("click"); - - // Collapse/expand the suites - $('a.collapse-all-link').on("click", function() { - var contents = $('.navigator-suite-content'); - if (contents.css('display') == 'none') { - contents.show(); - } else { - contents.hide(); - } - }); -}); - -// The handlers that take care of showing/hiding the methods -function installMethodHandlers(name, hide) { - function getContent(t) { - return $('.method-list-content.' + name + "." + t.attr('panel-name')); - } - - function getHideLink(t, name) { - var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); - return $(s); - } - - function getShowLink(t, name) { - return $('a.show-methods.' + name + "." + t.attr('panel-name')); - } - - function getMethodPanelClassSel(element, name) { - var panelName = getPanelName(element); - var sel = '.' + panelName + "-class-" + name; - return $(sel); - } - - $('a.hide-methods.' + name).on("click", function() { - var w = getContent($(this)); - w.hide(); - getHideLink($(this), name).hide(); - getShowLink($(this), name).show(); - getMethodPanelClassSel($(this), name).hide(); - }); - - $('a.show-methods.' + name).on("click", function() { - var w = getContent($(this)); - w.show(); - getHideLink($(this), name).show(); - getShowLink($(this), name).hide(); - showPanel(getPanelName($(this))); - getMethodPanelClassSel($(this), name).show(); - }); - - if (hide) { - $('a.hide-methods.' + name).trigger("click"); - } else { - $('a.show-methods.' + name).trigger("click"); - } -} - -function getHashForMethod(element) { - return element.attr('hash-for-method'); -} - -function getPanelName(element) { - return element.attr('panel-name'); -} - -function showPanel(panelName) { - $('.panel').hide(); - var panel = $('.panel[panel-name="' + panelName + '"]'); - panel.show(); -} - -function showMethod(element) { - var hashTag = getHashForMethod(element); - var panelName = getPanelName(element); - showPanel(panelName); - var current = document.location.href; - var base = current.substring(0, current.indexOf('#')) - document.location.href = base + '#' + hashTag; - var newPosition = $(document).scrollTop() - 65; - $(document).scrollTop(newPosition); -} - -function drawTable() { - for (var i = 0; i < suiteTableInitFunctions.length; i++) { - window[suiteTableInitFunctions[i]](); - } - - for (var k in window.suiteTableData) { - var v = window.suiteTableData[k]; - var div = v.tableDiv; - var data = v.tableData - var table = new google.visualization.Table(document.getElementById(div)); - table.draw(data, { - showRowNumber : false - }); - } -} diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css deleted file mode 100644 index 570323ffb8fe..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports1.css +++ /dev/null @@ -1,344 +0,0 @@ -body { - background-color: whitesmoke; - margin: 0 0 5px 5px; -} -ul { - margin-top: 10px; - margin-left:-10px; -} - li { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding:5px 5px; - } - a { - text-decoration: none; - color: black; - font-size: 14px; - } - - a:hover { - color:black ; - text-decoration: underline; - } - - .navigator-selected { - /* #ffa500; Mouse hover color after click Orange.*/ - background:#027368 - } - - .wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - margin-right:9px; - overflow: auto;/*imortant*/ - } - - .navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto;/*important*/ - } - - .suite { - margin: -5px 10px 10px 5px; - background-color: whitesmoke ;/*Colour of the left bside box*/ - } - - .suite-name { - font-size: 24px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/ - color: white; - } - - .main-panel-header { - padding: 5px; - background-color: #027368; /*afeeee*/; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color:white; - font-size: 18px; - } - - .main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/ - } - - .rounded-window { - border-style: dotted; - border-width: 1px;/*Border of left Side box*/ - background-color: whitesmoke; - border-radius: 10px; - } - - .rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto;/*Top of RightSide box*/ - } - - .light-rounded-window-top { - background-color: #027368; - padding-left:120px; - border-radius: 10px; - - } - - .rounded-window-bottom { - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto;/*Bottom of rightSide box*/ - } - - .method-name { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: bold; - } - - .method-content { - border-style: solid; - border-width: 0 0 1px 0; - margin-bottom: 10px; - padding-bottom: 5px; - width: 100%; - } - - .parameters { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .stack-trace { - white-space: pre; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: bold; - margin-top: 0; - margin-left: 20px; /*Error Stack Trace Message*/ - } - - .testng-xml { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .method-list-content { - margin-left: 10px; - } - - .navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; - } - - .suite-section-title { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-weight:bold; - background-color: #8C8887; - margin-left: -10px; - margin-top:10px; - padding:6px; - } - - .suite-section-content { - list-style-image: url(bullet_point.png); - background-color: whitesmoke; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - overflow: hidden; - } - - .top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0 0 5px 0; - background-color: #027368; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 18px; - color: #fff; - text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/ - } - - .top-banner-title-font { - font-size: 25px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 3px; - float: right; - } - - .test-name { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 16px; - } - - .suite-icon { - padding: 5px; - float: right; - height: 20px; - } - - .test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0 0 1px 0; - border-style: solid; - padding: 5px; - } - - .test-group-name { - font-weight: bold; - } - - .method-in-group { - font-size: 16px; - margin-left: 80px; - } - - table.google-visualization-table-table { - width: 100%; - } - - .reporter-method-name { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .reporter-method-output-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - border-width: 0 0 0 1px; - border-style: solid; - } - - .ignored-class-div { - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .ignored-methods-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - border-width: 0 0 0 1px; - border-style: solid; - } - - .border-failed { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #F20505; - } - - .border-skipped { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #F2BE22; - } - - .border-passed { - border-radius:2px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #038C73; - } - - .times-div { - text-align: center; - padding: 5px; - } - - .suite-total-time { - font: 16px 'Lucida Grande'; - } - - .configuration-suite { - margin-left: 20px; - } - - .configuration-test { - margin-left: 40px; - } - - .configuration-class { - margin-left: 60px; - } - - .configuration-method { - margin-left: 80px; - } - - .test-method { - margin-left: 100px; - } - - .chronological-class { - background-color: #CCD0D1; - border-width: 0 0 1px 1px;/*Chronological*/ - } - - .method-start { - float: right; - } - - .chronological-class-name { - padding: 0 0 0 5px; - margin-top:5px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #008; - } - - .after, .before, .test-method { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - margin-top:5px; - } - - .navigator-suite-header { - font-size: 18px; - margin: 0px 10px 10px 5px; - padding: 5px; - border-radius: 10px; - background-color: #027368; - color: white; - font-weight:bold; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - text-align: center; /*All Suites on top of left box*//*Status: -Completed*/ - } - - .collapse-all-icon { - padding: 3px; - float: right; - } - .button{ - position: absolute; - margin-left:500px; - margin-top:8px; - background-color: white; - color:#027368; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight:bold; - border-color:#027368; - border-radius:25px; - cursor: pointer; - height:30px; - width:150px; - outline: none; -} -/*Author: - Akhil Gullapalli*/ \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js deleted file mode 100644 index 5342859fa4df..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-reports2.js +++ /dev/null @@ -1,76 +0,0 @@ -window.onload = function () { - let cookies = document.cookie; - let cookieValue = cookies.split('='); - if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') { - document.getElementById('retro').setAttribute('disabled', 'false'); - } else if (cookieValue[1] === 'Switch Ultra Theme' || - localStorage.getItem('Theme') === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('retro').setAttribute('disabled', 'false'); - - } else if (cookieValue[1] === 'Switch Retro Theme' || - localStorage.getItem('Theme') === 'Switch Retro Theme') { - if (cookieValue[1] === 'Switch Ultra Theme' || - localStorage.getItem('Theme') === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('retro').setAttribute('disabled', 'false'); - - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('retro').removeAttribute('disabled'); - document.getElementById('ultra').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - - } else if (select === 'Switch Ultra Theme') { - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('ultra').removeAttribute('disabled'); - document.getElementById('retro').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - } - } else if (cookieValue[1] === 'Switch Retro Theme' || - localStorage.getItem('Theme') === 'Switch Retro Theme') { - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('ultra').setAttribute('disabled', 'false'); - } -} -document.getElementById('button').onclick = function () { - let select = document.getElementById('button').innerText; - if (select === 'Switch Retro Theme') { - let d = new Date(); - days = 365; - d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 - document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; - document.getElementById('button').innerText = "Switch Ultra Theme"; - document.getElementById('retro').removeAttribute('disabled'); - document.getElementById('ultra').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - - } else if (select === 'Switch Ultra Theme') { - let d = new Date(); - days = 365; - d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000 - document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";"; - document.getElementById('button').innerText = "Switch Retro Theme"; - document.getElementById('ultra').removeAttribute('disabled'); - document.getElementById('retro').setAttribute('disabled', 'false'); - localStorage.setItem('Theme', select); - } -} -//Function to mouse hovering affect. -document.getElementById('button').onmouseover = function () { - document.getElementById('button').style.borderRadius = "25px"; - document.getElementById('button').style.width = "180px"; - document.getElementById('button').style.height = "45px"; - document.getElementById('button').style.marginTop = "1px"; - -} -//Function to mouse out affect -document.getElementById('button').onmouseout = function () { - document.getElementById('button').style.borderRadius = "25px"; - document.getElementById('button').style.width = "150px"; - document.getElementById('button').style.height = "30px"; - document.getElementById('button').style.marginTop = "8px"; - -} - -//This is the file where we handle the switching of the Themes. -/*Author:- Akhil Gullapalli*/ diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml deleted file mode 100644 index 6ed30a81cada..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng-results.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css b/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css deleted file mode 100644 index 5124ba863b37..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/test-output/testng.css +++ /dev/null @@ -1,9 +0,0 @@ -.invocation-failed, .test-failed { background-color: #DD0000; } -.invocation-percent, .test-percent { background-color: #006600; } -.invocation-passed, .test-passed { background-color: #00AA00; } -.invocation-skipped, .test-skipped { background-color: #CCCC00; } - -.main-page { - font-size: x-large; -} - From a36bc1419d97e3586e797dedcf557ba13bfa28b6 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 19:24:36 -0700 Subject: [PATCH 16/35] =?UTF-8?q?Revert=20headerMap()=20=E2=80=94=20keep?= =?UTF-8?q?=20HttpHeaders=20copy,=20retain=20StoreResponse=20Map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert the headerMap() direct-from-Netty path because the per-header toLowerCase() calls caused a throughput regression vs v4. The JIT optimizes the existing HttpHeaders.set() + toLowerCaseMap() path better. Kept improvements: - StoreResponse stores Map directly (no String[] arrays) - RxDocumentServiceResponse shares the Map reference (no extra copy) - StoreClient uses getResponseHeaders() directly (no Map reconstruction) - StoreResponse.getHeaderValue() uses HashMap.get() instead of O(n) scan - unwrapToStoreResponse calls toLowerCaseMap() once, reuses the Map for both validateOrThrow and StoreResponse construction Net effect vs v4: eliminates the Map→String[]→Map round-trip while preserving the JIT-optimized HttpHeaders copy path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../implementation/RxGatewayStoreModel.java | 15 ++++++++------- .../implementation/ThinClientStoreModel.java | 4 ++-- .../http/HttpTransportSerializer.java | 3 +-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java index 360321c1703d..d5c68cd0c454 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java @@ -215,7 +215,7 @@ public StoreResponse unwrapToStoreResponse( String endpoint, RxDocumentServiceRequest request, int statusCode, - Map headers, + HttpHeaders headers, ByteBuf retainedContent) { checkNotNull(headers, "Argument 'headers' must not be null."); @@ -229,8 +229,10 @@ public StoreResponse unwrapToStoreResponse( logger.debug("RxGatewayStoreModel.unwrapToStoreResponse before validate - refCnt: {}", retainedContent.refCnt()); } + Map headerMap = HttpUtils.unescape(headers.toLowerCaseMap()); + // If there is any error in the header response this throws exception - validateOrThrow(request, HttpResponseStatus.valueOf(statusCode), headers, retainedContent); + validateOrThrow(request, HttpResponseStatus.valueOf(statusCode), headerMap, retainedContent); int size; if ((size = retainedContent.readableBytes()) > 0) { @@ -242,7 +244,7 @@ public StoreResponse unwrapToStoreResponse( return new StoreResponse( endpoint, statusCode, - HttpUtils.unescape(headers), + headerMap, new ByteBufInputStream(retainedContent, true), size); } else { @@ -252,7 +254,7 @@ public StoreResponse unwrapToStoreResponse( return new StoreResponse( endpoint, statusCode, - HttpUtils.unescape(headers), + headerMap, null, 0); } @@ -471,9 +473,8 @@ private Mono toDocumentServiceResponse(Mono { - // header key/value pairs — get as lowercase map directly from Netty, - // skipping the intermediate HttpHeaders copy - Map httpResponseHeaders = httpResponse.headerMap(); + // header key/value pairs + HttpHeaders httpResponseHeaders = httpResponse.headers(); int httpResponseStatus = httpResponse.statusCode(); // Track the retained ByteBuf so we can release it as a safety net in doFinally diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java index a50d01028118..92d1c197525e 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ThinClientStoreModel.java @@ -99,7 +99,7 @@ public StoreResponse unwrapToStoreResponse( String endpoint, RxDocumentServiceRequest request, int statusCode, - Map headers, + HttpHeaders headers, ByteBuf content) { if (content == null) { @@ -141,7 +141,7 @@ public StoreResponse unwrapToStoreResponse( endpoint, request, response.getStatus().code(), - response.getHeaders().asMap(request.getActivityId()), + new HttpHeaders(response.getHeaders().asMap(request.getActivityId())), payloadBuf ); diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java index 6438173c5903..58a2dc95cf8d 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpTransportSerializer.java @@ -5,7 +5,6 @@ import io.netty.buffer.ByteBuf; import java.net.URI; -import java.util.Map; public interface HttpTransportSerializer { HttpRequest wrapInHttpRequest(RxDocumentServiceRequest request, URI requestUri) throws Exception; @@ -14,6 +13,6 @@ StoreResponse unwrapToStoreResponse( String endpoint, RxDocumentServiceRequest request, int statusCode, - Map headers, + HttpHeaders headers, ByteBuf retainedContent); } From 0e28165d73aff2e00e7d68db545277dcedf77728 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 19:50:10 -0700 Subject: [PATCH 17/35] R2: Set initialBufferSize(16384) for HTTP response decoder Netty's HttpObjectDecoder starts with a 256-byte buffer for header parsing and resizes via ensureCapacityInternal() as headers grow. Cosmos responses have ~2-4KB of headers, triggering multiple resizes. Pre-sizing to 16KB (16384 bytes) avoids the resize overhead at the cost of ~16KB per connection (negligible vs connection pool size). JFR v6 showed AbstractStringBuilder.ensureCapacityInternal at 248 samples (1.6% CPU). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../com/azure/cosmos/implementation/http/ReactorNettyClient.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java index 4be56554cd46..952d2662e8b1 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java @@ -137,6 +137,7 @@ private void configureChannelPipelineHandlers() { httpResponseDecoderSpec.maxInitialLineLength(this.httpClientConfig.getMaxInitialLineLength()) .maxHeaderSize(this.httpClientConfig.getMaxHeaderSize()) .maxChunkSize(this.httpClientConfig.getMaxChunkSize()) + .initialBufferSize(16384) .validateHeaders(true)); ImplementationBridgeHelpers.Http2ConnectionConfigHelper.Http2ConnectionConfigAccessor http2CfgAccessor = From e12678a46f3b728f5b195c5f4a2bff917731c089 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 20:09:47 -0700 Subject: [PATCH 18/35] Revert to v4 (URI elim) + add initialBufferSize(16384) Revert all header copy chain changes (R3/v5/v6/v7) back to the v4 state which had the best throughput. Only addition on top of v4 is initialBufferSize(16384) to pre-size Netty's header parsing buffer and reduce ensureCapacityInternal() resize overhead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../StoreResponseValidator.java | 13 +-- .../RxDocumentServiceResponse.java | 10 ++- .../implementation/RxGatewayStoreModel.java | 12 ++- .../directconnectivity/StoreClient.java | 14 +++- .../directconnectivity/StoreResponse.java | 84 +++++++++---------- .../directconnectivity/StoreResult.java | 9 +- .../implementation/http/HttpResponse.java | 12 --- .../http/ReactorNettyClient.java | 16 ---- 8 files changed, 79 insertions(+), 91 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java b/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java index a7325bd47f61..7d71d812905f 100644 --- a/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java +++ b/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/StoreResponseValidator.java @@ -7,6 +7,7 @@ import org.assertj.core.api.Condition; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -38,7 +39,7 @@ public Builder hasHeader(String headerKey) { validators.add(new StoreResponseValidator() { @Override public void validate(StoreResponse resp) { - assertThat(resp.getResponseHeaders()).containsKey(headerKey); + assertThat(Arrays.asList(resp.getResponseHeaderNames()).contains(headerKey)).isTrue(); } }); return this; @@ -48,8 +49,9 @@ public Builder withHeader(String headerKey, String headerValue) { validators.add(new StoreResponseValidator() { @Override public void validate(StoreResponse resp) { - assertThat(resp.getResponseHeaders()).containsKey(headerKey); - assertThat(resp.getResponseHeaders().get(headerKey)).isEqualTo(headerValue); + assertThat(Arrays.asList(resp.getResponseHeaderNames())).asList().contains(headerKey); + int index = Arrays.asList(resp.getResponseHeaderNames()).indexOf(headerKey); + assertThat(resp.getResponseHeaderValues()[index]).isEqualTo(headerValue); } }); return this; @@ -60,8 +62,9 @@ public Builder withHeaderValueCondition(String headerKey, Condition cond validators.add(new StoreResponseValidator() { @Override public void validate(StoreResponse resp) { - assertThat(resp.getResponseHeaders()).containsKey(headerKey); - String value = resp.getResponseHeaders().get(headerKey); + assertThat(Arrays.asList(resp.getResponseHeaderNames())).asList().contains(headerKey); + int index = Arrays.asList(resp.getResponseHeaderNames()).indexOf(headerKey); + String value = resp.getResponseHeaderValues()[index]; condition.matches(value); } }); diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java index 6c6a753ed80c..f9866f565957 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceResponse.java @@ -32,11 +32,19 @@ public class RxDocumentServiceResponse { private CosmosDiagnostics cosmosDiagnostics; public RxDocumentServiceResponse(DiagnosticsClientContext diagnosticsClientContext, StoreResponse response) { - this.headersMap = response.getResponseHeaders(); + String[] headerNames = response.getResponseHeaderNames(); + String[] headerValues = response.getResponseHeaderValues(); + + this.headersMap = new HashMap<>(headerNames.length); // Gets status code. this.statusCode = response.getStatus(); + // Extracts headers. + for (int i = 0; i < headerNames.length; i++) { + this.headersMap.put(headerNames[i], headerValues[i]); + } + this.storeResponse = response; this.diagnosticsClientContext = diagnosticsClientContext; } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java index d5c68cd0c454..cd4f77465cfd 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java @@ -229,10 +229,8 @@ public StoreResponse unwrapToStoreResponse( logger.debug("RxGatewayStoreModel.unwrapToStoreResponse before validate - refCnt: {}", retainedContent.refCnt()); } - Map headerMap = HttpUtils.unescape(headers.toLowerCaseMap()); - // If there is any error in the header response this throws exception - validateOrThrow(request, HttpResponseStatus.valueOf(statusCode), headerMap, retainedContent); + validateOrThrow(request, HttpResponseStatus.valueOf(statusCode), headers, retainedContent); int size; if ((size = retainedContent.readableBytes()) > 0) { @@ -244,7 +242,7 @@ public StoreResponse unwrapToStoreResponse( return new StoreResponse( endpoint, statusCode, - headerMap, + HttpUtils.unescape(headers.toLowerCaseMap()), new ByteBufInputStream(retainedContent, true), size); } else { @@ -254,7 +252,7 @@ public StoreResponse unwrapToStoreResponse( return new StoreResponse( endpoint, statusCode, - headerMap, + HttpUtils.unescape(headers.toLowerCaseMap()), null, 0); } @@ -743,7 +741,7 @@ private Mono toDocumentServiceResponse(Mono headers, + HttpHeaders headers, ByteBuf retainedBodyAsByteBuf) { int statusCode = status.code(); @@ -765,7 +763,7 @@ private void validateOrThrow(RxDocumentServiceRequest request, String.format("%s, StatusCode: %s", cosmosError.getMessage(), statusCodeString), cosmosError.getPartitionedQueryExecutionInfo()); - CosmosException dce = BridgeInternal.createCosmosException(request.requestContext.resourcePhysicalAddress, statusCode, cosmosError, headers); + CosmosException dce = BridgeInternal.createCosmosException(request.requestContext.resourcePhysicalAddress, statusCode, cosmosError, headers.toLowerCaseMap()); BridgeInternal.setRequestHeaders(dce, request.getHeaders()); throw dce; } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java index ad799137bf8f..8c1c270bf5cd 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreClient.java @@ -174,7 +174,19 @@ private RxDocumentServiceResponse completeResponse( StoreResponse storeResponse, RxDocumentServiceRequest request) throws InternalServerErrorException { - Map headers = storeResponse.getResponseHeaders(); + if (storeResponse.getResponseHeaderNames().length != storeResponse.getResponseHeaderValues().length) { + throw new InternalServerErrorException( + Exceptions.getInternalServerErrorMessage(RMResources.InvalidBackendResponse), + HttpConstants.SubStatusCodes.INVALID_BACKEND_RESPONSE); + } + + Map headers = new HashMap<>(storeResponse.getResponseHeaderNames().length); + for (int idx = 0; idx < storeResponse.getResponseHeaderNames().length; idx++) { + String name = storeResponse.getResponseHeaderNames()[idx]; + String value = storeResponse.getResponseHeaderValues()[idx]; + + headers.put(name, value); + } this.updateResponseHeader(request, headers); this.captureSessionToken(request, headers); diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java index cae9e145b281..10c7f40e9ae3 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResponse.java @@ -30,7 +30,8 @@ public class StoreResponse { private static final Logger logger = LoggerFactory.getLogger(StoreResponse.class.getSimpleName()); final private int status; - final private Map responseHeaders; + final private String[] responseHeaderNames; + final private String[] responseHeaderValues; private int requestPayloadLength; private RequestTimeline requestTimeline; private RntbdChannelAcquisitionTimeline channelAcquisitionTimeline; @@ -55,9 +56,17 @@ public StoreResponse( checkArgument((contentStream == null) == (responsePayloadLength == 0), "Parameter 'contentStream' must be consistent with 'responsePayloadLength'."); requestTimeline = RequestTimeline.empty(); - this.responseHeaders = headerMap; + responseHeaderNames = new String[headerMap.size()]; + responseHeaderValues = new String[headerMap.size()]; this.endpoint = endpoint != null ? endpoint : ""; + int i = 0; + for (Map.Entry headerEntry : headerMap.entrySet()) { + responseHeaderNames[i] = headerEntry.getKey(); + responseHeaderValues[i] = headerEntry.getValue(); + i++; + } + this.status = status; replicaStatusList = new HashMap<>(); if (contentStream != null) { @@ -87,9 +96,17 @@ private StoreResponse( checkNotNull(endpoint, "Parameter 'endpoint' must not be null."); requestTimeline = RequestTimeline.empty(); - this.responseHeaders = headerMap; + responseHeaderNames = new String[headerMap.size()]; + responseHeaderValues = new String[headerMap.size()]; this.endpoint = endpoint; + int i = 0; + for (Map.Entry headerEntry : headerMap.entrySet()) { + responseHeaderNames[i] = headerEntry.getKey(); + responseHeaderValues[i] = headerEntry.getValue(); + i++; + } + this.status = status; replicaStatusList = new HashMap<>(); this.responsePayload = responsePayload; @@ -99,24 +116,12 @@ public int getStatus() { return status; } - public Map getResponseHeaders() { - return responseHeaders; - } - - /** - * @deprecated Use {@link #getResponseHeaders()} instead. This method creates a new array on every call. - */ - @Deprecated public String[] getResponseHeaderNames() { - return responseHeaders.keySet().toArray(new String[0]); + return responseHeaderNames; } - /** - * @deprecated Use {@link #getResponseHeaders()} instead. This method creates a new array on every call. - */ - @Deprecated public String[] getResponseHeaderValues() { - return responseHeaders.values().toArray(new String[0]); + return responseHeaderValues; } public void setRntbdRequestLength(int rntbdRequestLength) { @@ -186,39 +191,29 @@ public String getCorrelatedActivityId() { } public String getHeaderValue(String attribute) { - if (this.responseHeaders == null) { + if (this.responseHeaderValues == null || this.responseHeaderNames.length != this.responseHeaderValues.length) { return null; } - // Headers are stored with lowercase keys - String value = responseHeaders.get(attribute); - if (value != null) { - return value; - } - // Fallback to case-insensitive scan for backward compatibility - for (Map.Entry entry : responseHeaders.entrySet()) { - if (entry.getKey().equalsIgnoreCase(attribute)) { - return entry.getValue(); + for (int i = 0; i < responseHeaderNames.length; i++) { + if (responseHeaderNames[i].equalsIgnoreCase(attribute)) { + return responseHeaderValues[i]; } } + return null; } + //NOTE: only used for testing purpose to change the response header value void setHeaderValue(String headerName, String value) { - if (this.responseHeaders == null) { + if (this.responseHeaderValues == null || this.responseHeaderNames.length != this.responseHeaderValues.length) { return; } - // Try exact match first (lowercase keys) - if (responseHeaders.containsKey(headerName)) { - responseHeaders.put(headerName, value); - return; - } - // Fallback to case-insensitive scan - for (String key : responseHeaders.keySet()) { - if (key.equalsIgnoreCase(headerName)) { - responseHeaders.put(key, value); - return; + for (int i = 0; i < responseHeaderNames.length; i++) { + if (responseHeaderNames[i].equalsIgnoreCase(headerName)) { + responseHeaderValues[i] = value; + break; } } } @@ -315,14 +310,15 @@ public void setFaultInjectionRuleEvaluationResults(List results) { public StoreResponse withRemappedStatusCode(int newStatusCode, double additionalRequestCharge) { - Map headers = new HashMap<>(this.responseHeaders); - // Update request charge - for (String key : headers.keySet()) { - if (key.equalsIgnoreCase(HttpConstants.HttpHeaders.REQUEST_CHARGE)) { + Map headers = new HashMap<>(); + for (int i = 0; i < this.responseHeaderNames.length; i++) { + String headerName = this.responseHeaderNames[i]; + if (headerName.equalsIgnoreCase(HttpConstants.HttpHeaders.REQUEST_CHARGE)) { double currentRequestCharge = this.getRequestCharge(); double newRequestCharge = currentRequestCharge + additionalRequestCharge; - headers.put(key, String.valueOf(newRequestCharge)); - break; + headers.put(headerName, String.valueOf(newRequestCharge)); + } else { + headers.put(headerName, this.responseHeaderValues[i]); } } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java index 8cb99c4271a8..c7817cd3b101 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/StoreResult.java @@ -141,11 +141,10 @@ private static void setRequestCharge(StoreResponse response, CosmosException cos Double.toString(totalRequestCharge)); } // Set total charge as final charge for the response. - else if (response.getResponseHeaders() != null) { - // Update the request charge in the response headers map - for (String key : response.getResponseHeaders().keySet()) { - if (Strings.areEqualIgnoreCase(key, HttpConstants.HttpHeaders.REQUEST_CHARGE)) { - response.getResponseHeaders().put(key, Double.toString(totalRequestCharge)); + else if (response.getResponseHeaderNames() != null) { + for (int i = 0; i < response.getResponseHeaderNames().length; ++i) { + if (Strings.areEqualIgnoreCase(response.getResponseHeaderNames()[i], HttpConstants.HttpHeaders.REQUEST_CHARGE)) { + response.getResponseHeaderValues()[i] = Double.toString(totalRequestCharge); break; } } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java index 3a57d4e08ad5..29d871d8663f 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/HttpResponse.java @@ -7,8 +7,6 @@ import reactor.core.publisher.Mono; import reactor.netty.Connection; -import java.util.Map; - /** * The type representing response of {@link HttpRequest}. */ @@ -37,16 +35,6 @@ public abstract class HttpResponse implements AutoCloseable { */ public abstract HttpHeaders headers(); - /** - * Get all response headers as a lowercase-keyed map, avoiding intermediate copies. - * Subclasses may override for a more efficient implementation. - * - * @return the response headers as a map with lowercase keys - */ - public Map headerMap() { - return headers().toLowerCaseMap(); - } - /** * Get the publisher emitting response content chunks. * diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java index 952d2662e8b1..5a20415e8ccc 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java @@ -35,9 +35,6 @@ import java.lang.invoke.WrongMethodTypeException; import java.time.Duration; import java.time.Instant; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiFunction; @@ -418,19 +415,6 @@ public HttpHeaders headers() { return headers; } - @Override - public Map headerMap() { - io.netty.handler.codec.http.HttpHeaders nettyHeaders = reactorNettyResponse.responseHeaders(); - Map map = new HashMap<>(nettyHeaders.size()); - for (Map.Entry e : nettyHeaders) { - String value = e.getValue(); - if (value != null) { - map.put(e.getKey().toLowerCase(Locale.ROOT), value); - } - } - return map; - } - @Override public Mono body() { return ByteBufFlux From 5a9e0ea9f2669a54f0c3b26b12a66fe0c0604d92 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Thu, 12 Mar 2026 21:01:33 -0700 Subject: [PATCH 19/35] =?UTF-8?q?Revert=20to=20v4=20=E2=80=94=20remove=20i?= =?UTF-8?q?nitialBufferSize(16384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Benchmark showed initialBufferSize change also produced regression. Reverting to pure v4 state (URI elimination + collection name cache) which had the best throughput at 2,421 ops/s. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../com/azure/cosmos/implementation/http/ReactorNettyClient.java | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java index 5a20415e8ccc..a720fe803b7e 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java @@ -134,7 +134,6 @@ private void configureChannelPipelineHandlers() { httpResponseDecoderSpec.maxInitialLineLength(this.httpClientConfig.getMaxInitialLineLength()) .maxHeaderSize(this.httpClientConfig.getMaxHeaderSize()) .maxChunkSize(this.httpClientConfig.getMaxChunkSize()) - .initialBufferSize(16384) .validateHeaders(true)); ImplementationBridgeHelpers.Http2ConnectionConfigHelper.Http2ConnectionConfigAccessor http2CfgAccessor = From d4ce34540e2650e7f35df7a200185d58cc0a7666 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Mon, 16 Mar 2026 22:32:38 -0700 Subject: [PATCH 20/35] revert URI elimiation change --- sdk/cosmos/azure-cosmos-benchmark/.gitignore | 2 - .../RxDocumentServiceRequest.java | 17 ----- .../implementation/RxGatewayStoreModel.java | 76 +++++-------------- .../implementation/http/HttpRequest.java | 46 +---------- .../http/ReactorNettyClient.java | 4 +- 5 files changed, 25 insertions(+), 120 deletions(-) delete mode 100644 sdk/cosmos/azure-cosmos-benchmark/.gitignore diff --git a/sdk/cosmos/azure-cosmos-benchmark/.gitignore b/sdk/cosmos/azure-cosmos-benchmark/.gitignore deleted file mode 100644 index 65691d4fa248..000000000000 --- a/sdk/cosmos/azure-cosmos-benchmark/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -sdk/cosmos/azure-cosmos-benchmark/test-output/ -test-output/ diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java index 4873fa695be4..e2b18537c7ac 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxDocumentServiceRequest.java @@ -48,7 +48,6 @@ public class RxDocumentServiceRequest implements Cloneable { private final boolean isNameBased; private final OperationType operationType; private String resourceAddress; - private volatile String cachedCollectionName; public volatile boolean forceNameCacheRefresh; private volatile URI endpointOverride = null; private final UUID activityId; @@ -103,22 +102,6 @@ public boolean isReadOnlyRequest() { public void setResourceAddress(String newAddress) { this.resourceAddress = newAddress; - this.cachedCollectionName = null; - } - - /** - * Gets the collection name extracted from the resource address. - * The result is cached to avoid repeated O(n) slash-scanning in Utils.getCollectionName(). - * - * @return the collection name path segment - */ - public String getCollectionName() { - String result = this.cachedCollectionName; - if (result == null) { - result = Utils.getCollectionName(this.resourceAddress); - this.cachedCollectionName = result; - } - return result; } public boolean isReadOnlyScript() { diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java index cd4f77465cfd..42172026ad5b 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/RxGatewayStoreModel.java @@ -195,17 +195,13 @@ public void setCollectionCache(RxClientCollectionCache collectionCache) { @Override public HttpRequest wrapInHttpRequest(RxDocumentServiceRequest request, URI requestUri) throws Exception { - return wrapInHttpRequest(request, requestUri.toString(), requestUri.getPort()); - } - - private HttpRequest wrapInHttpRequest(RxDocumentServiceRequest request, String requestUriString, int port) throws Exception { HttpMethod method = getHttpMethod(request); HttpHeaders httpHeaders = this.getHttpRequestHeaders(request.getHeaders()); Flux contentAsByteArray = request.getContentAsByteArrayFlux(); return new HttpRequest(method, - requestUriString, - port, + requestUri, + requestUri.getPort(), httpHeaders, contentAsByteArray); } @@ -283,8 +279,8 @@ public Mono performRequest(RxDocumentServiceRequest r request.requestContext.cosmosDiagnostics = clientContext.createDiagnostics(); } - String uri = getUri(request); - request.requestContext.resourcePhysicalAddress = uri; + URI uri = getUri(request); + request.requestContext.resourcePhysicalAddress = uri.toString(); if (this.throughputControlStore != null) { return this.throughputControlStore.processRequest(request, Mono.defer(() -> this.performRequestInternal(request, uri))); @@ -307,7 +303,7 @@ protected boolean partitionKeyRangeResolutionNeeded(RxDocumentServiceRequest req * @param requestUri * @return Flux */ - public Mono performRequestInternal(RxDocumentServiceRequest request, String requestUri) { + public Mono performRequestInternal(RxDocumentServiceRequest request, URI requestUri) { if (!partitionKeyRangeResolutionNeeded(request)) { return this.performRequestInternalCore(request, requestUri); } @@ -320,23 +316,12 @@ public Mono performRequestInternal(RxDocumentServiceR }); } - // Overload for callers that still pass URI - public Mono performRequestInternal(RxDocumentServiceRequest request, URI requestUri) { - return performRequestInternal(request, requestUri.toString()); - } - - private Mono performRequestInternalCore(RxDocumentServiceRequest request, String requestUri) { + private Mono performRequestInternalCore(RxDocumentServiceRequest request, URI requestUri) { try { - HttpRequest httpRequest; - HttpTransportSerializer effectiveSerializer = request.getEffectiveHttpTransportSerializer(this); - if (effectiveSerializer == this) { - // Fast path: use the string-based overload to avoid URI parsing - httpRequest = this.wrapInHttpRequest(request, requestUri, this.resolvePort(request)); - } else { - // Fallback for custom serializers (e.g., ThinClientStoreModel) - httpRequest = effectiveSerializer.wrapInHttpRequest(request, new URI(requestUri)); - } + HttpRequest httpRequest = request + .getEffectiveHttpTransportSerializer(this) + .wrapInHttpRequest(request, requestUri); // Capture the request record early so it's available on both success and error paths. // Each retry creates a new HttpRequest with a new record, so this is per-attempt. @@ -393,7 +378,7 @@ public URI getRootUri(RxDocumentServiceRequest request) { return this.globalEndpointManager.resolveServiceEndpoint(request).getGatewayRegionalEndpoint(); } - private String getUri(RxDocumentServiceRequest request) { + private URI getUri(RxDocumentServiceRequest request) throws URISyntaxException { URI rootUri = request.getEndpointOverride(); if (rootUri == null) { if (request.getIsMedia()) { @@ -409,35 +394,16 @@ private String getUri(RxDocumentServiceRequest request) { path = StringUtils.EMPTY; } - // Build URI string directly — avoids java.net.URI parsing overhead entirely. - // The resulting string is passed to Reactor Netty which also accepts strings. + // allow using http connections if customer opt in to use http for vnext emulator String scheme = HTTP_CONNECTION_WITHOUT_TLS_ALLOWED ? rootUri.getScheme() : "https"; - String host = rootUri.getHost(); - int port = rootUri.getPort(); - String slashPath = ensureSlashPrefixed(path); - - StringBuilder sb = new StringBuilder(scheme.length() + host.length() + 16 + (slashPath != null ? slashPath.length() : 0)); - sb.append(scheme).append("://").append(host); - if (port >= 0) { - sb.append(':').append(port); - } - if (slashPath != null) { - sb.append(slashPath); - } - return sb.toString(); - } - - private int resolvePort(RxDocumentServiceRequest request) { - URI rootUri = request.getEndpointOverride(); - if (rootUri == null) { - if (request.getIsMedia()) { - rootUri = this.globalEndpointManager.getWriteEndpoints().get(0).getGatewayRegionalEndpoint(); - } else { - rootUri = getRootUri(request); - } - } - return rootUri.getPort(); + return new URI(scheme, + null, + rootUri.getHost(), + rootUri.getPort(), + ensureSlashPrefixed(path), + null, // Query string not used. + null); } private String ensureSlashPrefixed(String path) { @@ -537,7 +503,7 @@ private Mono toDocumentServiceResponse(Mono toDocumentServiceResponse(Mono toDocumentServiceResponse(Mono body; @@ -32,7 +31,6 @@ public class HttpRequest { public HttpRequest(HttpMethod httpMethod, URI uri, int port, HttpHeaders httpHeaders) { this.httpMethod = httpMethod; this.uri = uri; - this.uriString = uri.toString(); this.port = port; this.headers = httpHeaders; this.reactorNettyRequestRecord = createReactorNettyRequestRecord(); @@ -46,8 +44,7 @@ public HttpRequest(HttpMethod httpMethod, URI uri, int port, HttpHeaders httpHea */ public HttpRequest(HttpMethod httpMethod, String uri, int port) throws URISyntaxException { this.httpMethod = httpMethod; - this.uriString = uri; - this.uri = null; + this.uri = new URI(uri); this.port = port; this.headers = new HttpHeaders(); this.reactorNettyRequestRecord = createReactorNettyRequestRecord(); @@ -64,26 +61,6 @@ public HttpRequest(HttpMethod httpMethod, String uri, int port) throws URISyntax public HttpRequest(HttpMethod httpMethod, URI uri, int port, HttpHeaders headers, Flux body) { this.httpMethod = httpMethod; this.uri = uri; - this.uriString = uri.toString(); - this.port = port; - this.headers = headers; - this.body = body; - this.reactorNettyRequestRecord = createReactorNettyRequestRecord(); - } - - /** - * Create a new HttpRequest instance from a URI string without parsing it. - * - * @param httpMethod the HTTP request method - * @param uriString the target address as a string (URI parsing is deferred) - * @param port the target port - * @param headers the HTTP headers to use with this request - * @param body the request content - */ - public HttpRequest(HttpMethod httpMethod, String uriString, int port, HttpHeaders headers, Flux body) { - this.httpMethod = httpMethod; - this.uriString = uriString; - this.uri = null; this.port = port; this.headers = headers; this.body = body; @@ -136,25 +113,7 @@ public HttpRequest withPort(int port) { * @return the target address */ public URI uri() { - URI result = this.uri; - if (result == null) { - try { - result = new URI(this.uriString); - this.uri = result; - } catch (URISyntaxException e) { - throw new IllegalArgumentException("Invalid URI: " + this.uriString, e); - } - } - return result; - } - - /** - * Get the target address as a string without triggering URI parsing. - * - * @return the target address string - */ - public String uriString() { - return this.uriString; + return uri; } /** @@ -165,7 +124,6 @@ public String uriString() { */ public HttpRequest withUri(URI uri) { this.uri = uri; - this.uriString = uri.toString(); return this; } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java index a720fe803b7e..3e7f763caeb8 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java @@ -176,7 +176,7 @@ public Mono send(HttpRequest request) { @Override public Mono send(final HttpRequest request, Duration responseTimeout) { Objects.requireNonNull(request.httpMethod()); - Objects.requireNonNull(request.uriString()); + Objects.requireNonNull(request.uri()); Objects.requireNonNull(this.httpClientConfig); if(request.reactorNettyRequestRecord() == null) { ReactorNettyRequestRecord reactorNettyRequestRecord = new ReactorNettyRequestRecord(); @@ -202,7 +202,7 @@ public Mono send(final HttpRequest request, Duration responseTimeo .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectTimeoutMs) .responseTimeout(responseTimeout) .request(HttpMethod.valueOf(request.httpMethod().toString())) - .uri(request.uriString()) + .uri(request.uri().toASCIIString()) .send(bodySendDelegate(request)) .responseConnection((reactorNettyResponse, reactorNettyConnection) -> { HttpResponse httpResponse = new ReactorNettyHttpResponse(reactorNettyResponse, From c61bef372f0e6aa9cf6aee6136d15eeb079962d5 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 10:33:16 -0700 Subject: [PATCH 21/35] Add CPU cool-down after data ingestion in benchmark orchestrator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After bulk document pre-population, the CPU spike can pollute workload metrics. Add CpuMonitor utility that captures baseline CPU before ingestion and waits for it to settle (baseline + 10%, max 5 minutes) before starting the workload. Cool-down is internal default behavior — not user-configurable. Benchmark duration is unaffected since each benchmark measures its own start time inside run(). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../benchmark/BenchmarkOrchestrator.java | 10 +- .../azure/cosmos/benchmark/CpuMonitor.java | 123 ++++++++++++++++++ 2 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java index a12309c11ada..a0997ecdbea7 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java @@ -205,12 +205,18 @@ private void runLifecycleLoop(BenchmarkConfig config) throws Exception { for (int cycle = 1; cycle <= totalCycles; cycle++) { logger.info("[LIFECYCLE] CYCLE_START cycle={} timestamp={}", cycle, Instant.now()); - // 1. Create clients + // 1. Capture baseline CPU before benchmark creation (which includes data ingestion) + double baselineCpu = CpuMonitor.captureProcessCpuLoad(); + + // 2. Create clients (constructors perform data ingestion) List benchmarks = createBenchmarks(config, benchmarkScheduler); logger.info("[LIFECYCLE] POST_CREATE cycle={} clients={} timestamp={}", cycle, benchmarks.size(), Instant.now()); - // 2. Run workload in parallel + // 3. Cool-down: wait for CPU to settle after data ingestion before measuring workload + CpuMonitor.awaitCoolDown(baselineCpu); + + // 4. Run workload in parallel runWorkload(benchmarks, cycle, executor); logger.info("[LIFECYCLE] POST_WORKLOAD cycle={} timestamp={}", cycle, Instant.now()); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java new file mode 100644 index 000000000000..70ede8f99861 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java @@ -0,0 +1,123 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.cosmos.benchmark; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.management.ManagementFactory; +import java.lang.management.OperatingSystemMXBean; + +/** + * Monitors process CPU load and provides a cool-down mechanism to wait + * for CPU to settle after intensive operations (e.g., bulk data ingestion). + * + *

Uses the JVM-internal {@code getProcessCpuLoad()} method + * (available on HotSpot / OpenJDK) for per-process CPU readings. + * If not available, cool-down is skipped gracefully.

+ * + *

This is an internal utility — cool-down runs automatically with + * hardcoded defaults and is not user-configurable.

+ */ +final class CpuMonitor { + + private static final Logger logger = LoggerFactory.getLogger(CpuMonitor.class); + + // Cool-down defaults (internal, not user-configurable) + private static final long MAX_WAIT_MS = 5 * 60 * 1_000; // 5 minutes + private static final double CPU_THRESHOLD_DELTA = 0.10; // baseline + 10% + private static final long POLL_INTERVAL_MS = 1_000; // 1 second + + private CpuMonitor() { + } + + /** + * Captures the current process CPU load as a value between 0.0 and 1.0. + * Returns -1.0 if the metric is unavailable. + */ + static double captureProcessCpuLoad() { + OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean(); + if (osBean instanceof com.sun.management.OperatingSystemMXBean) { + double load = ((com.sun.management.OperatingSystemMXBean) osBean).getProcessCpuLoad(); + logger.info("[CpuMonitor] Current process CPU load: {}", String.format("%.2f%%", load * 100)); + return load; + } + logger.warn("[CpuMonitor] com.sun.management.OperatingSystemMXBean not available; CPU monitoring disabled"); + return -1.0; + } + + /** + * Waits until the process CPU load drops to within {@link #CPU_THRESHOLD_DELTA} + * of the given {@code baselineCpu}, or until {@link #MAX_WAIT_MS} elapses. + * + *

If the baseline is unavailable (negative), this method returns immediately.

+ * + * @param baselineCpu the CPU load captured before the intensive operation (0.0–1.0) + */ + static void awaitCoolDown(double baselineCpu) { + if (baselineCpu < 0) { + logger.info("[CpuMonitor] Baseline CPU unavailable; skipping cool-down"); + return; + } + + double target = baselineCpu + CPU_THRESHOLD_DELTA; + logger.info("[CpuMonitor] Cool-down started — baseline={}, target<={}", + String.format("%.2f%%", baselineCpu * 100), + String.format("%.2f%%", target * 100)); + + long startTime = System.currentTimeMillis(); + long deadline = startTime + MAX_WAIT_MS; + int sampleCount = 0; + + while (System.currentTimeMillis() < deadline) { + double current = captureCurrentCpuLoadQuietly(); + sampleCount++; + + if (current < 0) { + logger.info("[CpuMonitor] CPU metric unavailable during cool-down; aborting wait"); + return; + } + + if (current <= target) { + long elapsed = System.currentTimeMillis() - startTime; + logger.info("[CpuMonitor] CPU settled to {} after {}ms ({} samples)", + String.format("%.2f%%", current * 100), elapsed, sampleCount); + return; + } + + logger.debug("[CpuMonitor] CPU at {} (target<={}), waiting...", + String.format("%.2f%%", current * 100), + String.format("%.2f%%", target * 100)); + + try { + Thread.sleep(POLL_INTERVAL_MS); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + logger.warn("[CpuMonitor] Cool-down interrupted"); + return; + } + } + + // Timed out — log final CPU reading + double finalCpu = captureCurrentCpuLoadQuietly(); + long elapsed = System.currentTimeMillis() - startTime; + logger.warn("[CpuMonitor] Cool-down timed out after {}ms ({} samples). " + + "Final CPU={}, baseline={}, target<={}", + elapsed, sampleCount, + String.format("%.2f%%", finalCpu * 100), + String.format("%.2f%%", baselineCpu * 100), + String.format("%.2f%%", target * 100)); + } + + /** + * Internal helper — reads CPU without logging at INFO level to avoid log spam during polling. + */ + private static double captureCurrentCpuLoadQuietly() { + OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean(); + if (osBean instanceof com.sun.management.OperatingSystemMXBean) { + return ((com.sun.management.OperatingSystemMXBean) osBean).getProcessCpuLoad(); + } + return -1.0; + } +} From 4e8ecf1e817dbe5ca0dd8f4260a16068883b11d7 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 10:42:34 -0700 Subject: [PATCH 22/35] Remove redundant ReadLatency, WriteLatency, ReadManyLatency operation types These operation types were functionally identical to their Throughput counterparts after metrics capture was unified. Remove them to reduce confusion and dead code paths. Affected: Operation enum, AsyncBenchmark, SyncBenchmark, AsyncEncryptionBenchmark, BenchmarkOrchestrator, Main, tests, README, and workload-config-sample.json. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- sdk/cosmos/azure-cosmos-benchmark/README.md | 6 ++---- .../java/com/azure/cosmos/benchmark/AsyncBenchmark.java | 3 +-- .../com/azure/cosmos/benchmark/BenchmarkOrchestrator.java | 7 ------- .../src/main/java/com/azure/cosmos/benchmark/Main.java | 4 +--- .../main/java/com/azure/cosmos/benchmark/Operation.java | 3 --- .../java/com/azure/cosmos/benchmark/SyncBenchmark.java | 3 +-- .../benchmark/encryption/AsyncEncryptionBenchmark.java | 3 +-- .../java/com/azure/cosmos/benchmark/WorkflowTest.java | 8 ++++---- .../azure-cosmos-benchmark/workload-config-sample.json | 2 +- 9 files changed, 11 insertions(+), 28 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/README.md b/sdk/cosmos/azure-cosmos-benchmark/README.md index 67505e2aa189..f0338e115c64 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/README.md +++ b/sdk/cosmos/azure-cosmos-benchmark/README.md @@ -13,14 +13,14 @@ mvn clean package -f pom.xml -DskipTests -Dgpg.skip -Ppackage-assembly and then the package will be generated. -## Run the WriteLatency workload +## Run the WriteThroughput workload ```bash java -jar azure-cosmos-benchmark/target/azure-cosmos-benchmark-4.0.1-beta.1-jar-with-dependencies.jar \ -serviceEndpoint $endpoint -masterKey $masterkey \ -databaseId $dbname -collectionId $colname \ -consistencyLevel Eventual -concurrency 10 -numberOfOperations 1000000 \ - -operation WriteLatency -connectionMode Direct + -operation WriteThroughput -connectionMode Direct ``` ## Sample Report: @@ -63,8 +63,6 @@ Latency ## Other Currently Supported Workloads -* ReadLatency, -* WriteLatency, * ReadThroughput, * WriteThroughput, * QueryInClauseParallel diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index a1c79871832b..04b9ea80cdbb 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -196,8 +196,7 @@ abstract class AsyncBenchmark implements Benchmark { partitionKey = cosmosAsyncContainer.read().block().getProperties().getPartitionKeyDefinition() .getPaths().iterator().next().split("/")[1]; - if (cfg.getOperationType() != Operation.WriteLatency - && cfg.getOperationType() != Operation.WriteThroughput + if (cfg.getOperationType() != Operation.WriteThroughput && cfg.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", cfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(cfg.getDocumentDataFieldSize()); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java index a0997ecdbea7..acefe02df455 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java @@ -329,10 +329,8 @@ private Benchmark createBenchmarkForOperation(TenantWorkloadConfig cfg, Schedule if (cfg.isSync()) { switch (cfg.getOperationType()) { case ReadThroughput: - case ReadLatency: return new SyncReadBenchmark(cfg); case WriteThroughput: - case WriteLatency: return new SyncWriteBenchmark(cfg); default: throw new IllegalArgumentException( @@ -352,10 +350,8 @@ private Benchmark createBenchmarkForOperation(TenantWorkloadConfig cfg, Schedule if (cfg.isEncryptionEnabled()) { switch (cfg.getOperationType()) { case WriteThroughput: - case WriteLatency: return new AsyncEncryptionWriteBenchmark(cfg, scheduler); case ReadThroughput: - case ReadLatency: return new AsyncEncryptionReadBenchmark(cfg, scheduler); case QueryCross: case QuerySingle: @@ -375,10 +371,8 @@ private Benchmark createBenchmarkForOperation(TenantWorkloadConfig cfg, Schedule // Default: async benchmarks switch (cfg.getOperationType()) { case ReadThroughput: - case ReadLatency: return new AsyncReadBenchmark(cfg, scheduler); case WriteThroughput: - case WriteLatency: return new AsyncWriteBenchmark(cfg, scheduler); case QueryCross: case QuerySingle: @@ -390,7 +384,6 @@ private Benchmark createBenchmarkForOperation(TenantWorkloadConfig cfg, Schedule case QueryInClauseParallel: case ReadAllItemsOfLogicalPartition: return new AsyncQueryBenchmark(cfg, scheduler); - case ReadManyLatency: case ReadManyThroughput: return new AsyncReadManyBenchmark(cfg, scheduler); case Mixed: diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Main.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Main.java index fafd97fbc296..d28aca95a7c1 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Main.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Main.java @@ -48,18 +48,16 @@ public static void main(String[] args) throws Exception { private static void validateConfiguration(TenantWorkloadConfig workloadCfg) { switch (workloadCfg.getOperationType()) { - case WriteLatency: case WriteThroughput: break; default: if (!workloadCfg.isContentResponseOnWriteEnabled()) { throw new IllegalArgumentException("contentResponseOnWriteEnabled parameter can only be set to false " + - "for write latency and write throughput operations"); + "for write operations"); } } switch (workloadCfg.getOperationType()) { - case ReadLatency: case ReadThroughput: break; default: diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Operation.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Operation.java index 71a26e040942..4ca4253a0086 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Operation.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/Operation.java @@ -15,8 +15,6 @@ public enum Operation { ReadThroughput, WriteThroughput, - ReadLatency, - WriteLatency, QueryInClauseParallel, QueryCross, QuerySingle, @@ -31,7 +29,6 @@ public enum Operation { CtlWorkload, ReadAllItemsOfLogicalPartition, LinkedInCtlWorkload, - ReadManyLatency, ReadManyThroughput; /** diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java index 78d39675df52..a537194a2995 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java @@ -173,8 +173,7 @@ protected void init() { ArrayList> createDocumentFutureList = new ArrayList<>(); - if (workloadCfg.getOperationType() != Operation.WriteLatency - && workloadCfg.getOperationType() != Operation.WriteThroughput + if (workloadCfg.getOperationType() != Operation.WriteThroughput && workloadCfg.getOperationType() != Operation.ReadMyWrites) { String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); for (int i = 0; i < workloadCfg.getNumberOfPreCreatedDocuments(); i++) { diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index 50280a118590..5f87f8ead3d0 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -126,8 +126,7 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { createEncryptionDatabaseAndContainer(); partitionKey = cosmosAsyncContainer.read().block().getProperties().getPartitionKeyDefinition() .getPaths().iterator().next().split("/")[1]; - if (workloadConfig.getOperationType() != Operation.WriteLatency - && workloadConfig.getOperationType() != Operation.WriteThroughput + if (workloadConfig.getOperationType() != Operation.WriteThroughput && workloadConfig.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", workloadCfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java index fd93e01ae086..a7186f0416e0 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java @@ -84,11 +84,11 @@ protected void onSuccess() { } @Test(groups = "fast", timeOut = TIMEOUT) - public void writeLatencyCLI() throws Exception { + public void writeThroughputCLI() throws Exception { String cmdFormat = "-serviceEndpoint %s -masterKey %s" + " -databaseId %s -collectionId %s" + " -consistencyLevel SESSION -concurrency 2 -numberOfOperations 1000" + - " -operation WriteLatency -connectionMode DIRECT"; + " -operation WriteThroughput -connectionMode DIRECT"; String cmd = String.format(cmdFormat, TestConfigurations.HOST, @@ -110,7 +110,7 @@ public void writeLatency(boolean useNameLink) throws Exception { cfg.setConsistencyLevel("SESSION"); cfg.setConcurrency(2); cfg.setNumberOfOperations(numberOfOperations); - cfg.setOperation("WriteLatency"); + cfg.setOperation("WriteThroughput"); cfg.setConnectionMode("DIRECT"); AtomicInteger success = new AtomicInteger(); @@ -184,7 +184,7 @@ public void readLatency(boolean useNameLink) throws Exception { cfg.setConsistencyLevel("SESSION"); cfg.setConcurrency(2); cfg.setNumberOfOperations(numberOfOperations); - cfg.setOperation("ReadLatency"); + cfg.setOperation("ReadThroughput"); cfg.setConnectionMode("DIRECT"); AtomicInteger success = new AtomicInteger(); diff --git a/sdk/cosmos/azure-cosmos-benchmark/workload-config-sample.json b/sdk/cosmos/azure-cosmos-benchmark/workload-config-sample.json index 555622e09ce0..5e0ba66dcc3d 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/workload-config-sample.json +++ b/sdk/cosmos/azure-cosmos-benchmark/workload-config-sample.json @@ -24,7 +24,7 @@ "tenants": [ { - "operation": "ReadLatency", + "operation": "ReadThroughput", "numberOfOperations": 100000 } ] From 0a4c1e57c38a96af59ca5b1c05ea2588f8beebc7 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 12:43:49 -0700 Subject: [PATCH 23/35] Address PR review comments for benchmark optimization - Fix thread-unsafe ArrayList mutations: build docs/operations eagerly in loops instead of reactive map(), use Collections.synchronizedList() for failedResponses across AsyncBenchmark, AsyncCtlWorkload, ReadMyWriteWorkflow, and AsyncEncryptionBenchmark - Fix encryption retry bypass: refactor retryFailedBulkOperations to accept a BiFunction> so encryption benchmark retries through the encryption container - Re-throw errors after retries exhausted instead of silently swallowing (per reviewer direction) - Remove unused partitionKeyName parameter from retryFailedBulkOperations - Add NaN/negative handling for getProcessCpuLoad() in CpuMonitor - Cache OperatingSystemMXBean as static final in CpuMonitor - Log warning when HTTP/2 is enabled but connection mode is DIRECT - Add retry logic with transient error handling to SyncBenchmark pre-population (408, 410, 429, 500, 503) and 409 conflict handling - Rename writeLatency->writeThroughputWithDataProvider and readLatency->readThroughputWithDataProvider in WorkflowTest - Reduce per-item error logging to debug level in AsyncCtlWorkload, emit aggregated warn summary - Fix brittle test path: use basedir property, UTF-8 charset, and restrict regex to applyField method body Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/AsyncBenchmark.java | 32 ++++++----- .../cosmos/benchmark/BenchmarkHelper.java | 27 +++++++--- .../azure/cosmos/benchmark/CpuMonitor.java | 23 +++++--- .../cosmos/benchmark/ReadMyWriteWorkflow.java | 39 +++++++------- .../azure/cosmos/benchmark/SyncBenchmark.java | 39 +++++++++++--- .../benchmark/ctl/AsyncCtlWorkload.java | 45 +++++++++------- .../encryption/AsyncEncryptionBenchmark.java | 53 ++++++++++--------- .../TenantWorkloadConfigApplyFieldTest.java | 15 ++++-- .../azure/cosmos/benchmark/WorkflowTest.java | 4 +- 9 files changed, 176 insertions(+), 101 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index 04b9ea80cdbb..db3fb33c452d 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -36,6 +36,7 @@ import reactor.core.scheduler.Scheduler; import java.time.Duration; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.atomic.AtomicLong; @@ -122,6 +123,9 @@ abstract class AsyncBenchmark implements Benchmark { benchmarkSpecificClientBuilder.clientTelemetryConfig(telemetryConfig); if (cfg.getConnectionMode().equals(ConnectionMode.DIRECT)) { + if (cfg.isHttp2Enabled()) { + logger.warn("HTTP/2 is enabled but connection mode is DIRECT; HTTP/2 settings are only applied in GATEWAY mode and will be ignored"); + } benchmarkSpecificClientBuilder = benchmarkSpecificClientBuilder.directMode(DirectConnectionConfig.getDefaultConfig()); } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); @@ -201,22 +205,22 @@ abstract class AsyncBenchmark implements Benchmark { logger.info("PRE-populating {} documents ....", cfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(cfg.getDocumentDataFieldSize()); List generatedDocs = new ArrayList<>(); - - Flux bulkOperationFlux = Flux.range(0, cfg.getNumberOfPreCreatedDocuments()) - .map(i -> { - String uuid = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, - dataFieldValue, - partitionKey, - cfg.getDocumentDataFieldCount()); - generatedDocs.add(newDoc); - return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); - }); + List bulkOperations = new ArrayList<>(); + + for (int i = 0; i < cfg.getNumberOfPreCreatedDocuments(); i++) { + String uuid = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, + dataFieldValue, + partitionKey, + cfg.getDocumentDataFieldCount()); + generatedDocs.add(newDoc); + bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); + } CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); - List> failedResponses = new ArrayList<>(); + List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosAsyncContainer - .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) + .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); @@ -224,7 +228,7 @@ abstract class AsyncBenchmark implements Benchmark { }) .blockLast(Duration.ofMinutes(10)); - BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, partitionKey); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer); docsToRead = generatedDocs; } else { diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java index 1f8c2ee4ac5b..11cc823608b3 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java @@ -6,6 +6,7 @@ import java.time.Duration; import java.util.List; import java.util.Map; +import java.util.function.BiFunction; import com.azure.cosmos.CosmosAsyncContainer; import com.azure.cosmos.CosmosException; @@ -48,15 +49,30 @@ public static boolean shouldContinue(long startTimeMillis, long iterationCount, /** * Retries failed bulk operation responses by falling back to individual createItem calls. * Ignores 409 (Conflict) errors since the document already exists. + * Re-throws all other errors after retries are exhausted. * * @param failedResponses list of failed bulk operation responses * @param container the container to retry against - * @param partitionKeyName the partition key property name */ public static void retryFailedBulkOperations( List> failedResponses, - CosmosAsyncContainer container, - String partitionKeyName) { + CosmosAsyncContainer container) { + + retryFailedBulkOperations(failedResponses, + (item, pk) -> container.createItem(item, pk, null).then()); + } + + /** + * Retries failed bulk operation responses using a custom create function. + * Ignores 409 (Conflict) errors since the document already exists. + * Re-throws all other errors after retries are exhausted. + * + * @param failedResponses list of failed bulk operation responses + * @param createFunction a function that creates an item given the item and partition key + */ + public static void retryFailedBulkOperations( + List> failedResponses, + BiFunction> createFunction) { if (failedResponses.isEmpty()) { return; @@ -70,7 +86,7 @@ public static void retryFailedBulkOperations( PojoizedJson item = operation.getItem(); PartitionKey pk = operation.getPartitionKeyValue(); - return container.createItem(item, pk, null) + return createFunction.apply(item, pk) .retryWhen(Retry.max(5).filter(error -> { if (!(error instanceof CosmosException)) { return false; @@ -87,8 +103,7 @@ public static void retryFailedBulkOperations( && ((CosmosException) error).getStatusCode() == 409) { return Mono.empty(); } - logger.error("Failed to create item on retry: {}", error.getMessage()); - return Mono.empty(); + return Mono.error(error); }); }, 100) .blockLast(Duration.ofMinutes(10)); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java index 70ede8f99861..dbbb8697dfdb 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/CpuMonitor.java @@ -24,6 +24,9 @@ final class CpuMonitor { private static final Logger logger = LoggerFactory.getLogger(CpuMonitor.class); + // Cached MXBean instance to avoid repeated lookups during polling + private static final OperatingSystemMXBean OS_BEAN = ManagementFactory.getOperatingSystemMXBean(); + // Cool-down defaults (internal, not user-configurable) private static final long MAX_WAIT_MS = 5 * 60 * 1_000; // 5 minutes private static final double CPU_THRESHOLD_DELTA = 0.10; // baseline + 10% @@ -34,12 +37,15 @@ private CpuMonitor() { /** * Captures the current process CPU load as a value between 0.0 and 1.0. - * Returns -1.0 if the metric is unavailable. + * Returns -1.0 if the metric is unavailable or NaN. */ static double captureProcessCpuLoad() { - OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean(); - if (osBean instanceof com.sun.management.OperatingSystemMXBean) { - double load = ((com.sun.management.OperatingSystemMXBean) osBean).getProcessCpuLoad(); + if (OS_BEAN instanceof com.sun.management.OperatingSystemMXBean) { + double load = ((com.sun.management.OperatingSystemMXBean) OS_BEAN).getProcessCpuLoad(); + if (Double.isNaN(load) || load < 0) { + logger.warn("[CpuMonitor] Process CPU load unavailable (returned {})", load); + return -1.0; + } logger.info("[CpuMonitor] Current process CPU load: {}", String.format("%.2f%%", load * 100)); return load; } @@ -114,9 +120,12 @@ static void awaitCoolDown(double baselineCpu) { * Internal helper — reads CPU without logging at INFO level to avoid log spam during polling. */ private static double captureCurrentCpuLoadQuietly() { - OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean(); - if (osBean instanceof com.sun.management.OperatingSystemMXBean) { - return ((com.sun.management.OperatingSystemMXBean) osBean).getProcessCpuLoad(); + if (OS_BEAN instanceof com.sun.management.OperatingSystemMXBean) { + double load = ((com.sun.management.OperatingSystemMXBean) OS_BEAN).getProcessCpuLoad(); + if (Double.isNaN(load) || load < 0) { + return -1.0; + } + return load; } return -1.0; } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java index 1136eed9f9b9..62811a0b6082 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java @@ -21,6 +21,7 @@ import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -139,27 +140,27 @@ protected Mono performWorkload(long i) { private void populateCache() { logger.info("PRE-populating {} documents ....", cacheSize); List generatedDocs = new ArrayList<>(); - - Flux bulkOperationFlux = Flux.range(0, cacheSize) - .map(i -> { - String idString = UUID.randomUUID().toString(); - String randomVal = UUID.randomUUID().toString(); - PojoizedJson newDoc = new PojoizedJson(); - newDoc.setProperty("id", idString); - newDoc.setProperty(partitionKey, idString); - newDoc.setProperty(QUERY_FIELD_NAME, randomVal); - newDoc.setProperty("dataField1", randomVal); - newDoc.setProperty("dataField2", randomVal); - newDoc.setProperty("dataField3", randomVal); - newDoc.setProperty("dataField4", randomVal); - generatedDocs.add(newDoc); - return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(idString)); - }); + List bulkOperations = new ArrayList<>(); + + for (int i = 0; i < cacheSize; i++) { + String idString = UUID.randomUUID().toString(); + String randomVal = UUID.randomUUID().toString(); + PojoizedJson newDoc = new PojoizedJson(); + newDoc.setProperty("id", idString); + newDoc.setProperty(partitionKey, idString); + newDoc.setProperty(QUERY_FIELD_NAME, randomVal); + newDoc.setProperty("dataField1", randomVal); + newDoc.setProperty("dataField2", randomVal); + newDoc.setProperty("dataField3", randomVal); + newDoc.setProperty("dataField4", randomVal); + generatedDocs.add(newDoc); + bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(idString))); + } CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); - List> failedResponses = new ArrayList<>(); + List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosAsyncContainer - .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) + .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); @@ -167,7 +168,7 @@ private void populateCache() { }) .blockLast(Duration.ofMinutes(10)); - BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, partitionKey); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer); for (int i = 0; i < generatedDocs.size(); i++) { cache.put(i, generatedDocs.get(i)); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java index a537194a2995..b372b8e0af11 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java @@ -18,6 +18,7 @@ import com.azure.cosmos.implementation.ImplementationBridgeHelpers; import com.azure.cosmos.models.CosmosClientTelemetryConfig; import com.azure.cosmos.models.CosmosItemResponse; +import com.azure.cosmos.models.PartitionKey; import com.azure.cosmos.models.ThroughputProperties; import org.apache.commons.lang3.RandomStringUtils; import org.slf4j.Logger; @@ -184,13 +185,39 @@ protected void init() { workloadCfg.getDocumentDataFieldCount()); CompletableFuture futureResult = CompletableFuture.supplyAsync(() -> { - try { - CosmosItemResponse itemResponse = cosmosContainer.createItem(newDoc); - return toPojoizedJson(itemResponse); - - } catch (Exception e) { - throw propagate(e); + int maxRetries = 5; + for (int attempt = 0; attempt <= maxRetries; attempt++) { + try { + CosmosItemResponse itemResponse = cosmosContainer.createItem(newDoc); + return toPojoizedJson(itemResponse); + } catch (CosmosException ce) { + if (ce.getStatusCode() == 409) { + // conflict — document already exists, read it back + try { + return cosmosContainer.readItem( + uuid, new PartitionKey(uuid), PojoizedJson.class).getItem(); + } catch (Exception readEx) { + throw propagate(readEx); + } + } + int statusCode = ce.getStatusCode(); + boolean isTransient = statusCode == 408 || statusCode == 410 + || statusCode == 429 || statusCode == 500 || statusCode == 503; + if (isTransient && attempt < maxRetries) { + try { + Thread.sleep(1000L * (attempt + 1)); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + throw propagate(ce); + } + continue; + } + throw propagate(ce); + } catch (Exception e) { + throw propagate(e); + } } + throw new RuntimeException("Exhausted retries for createItem"); }, executorService); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index ee068d8b2fb4..97cd9eb82b42 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -35,6 +35,7 @@ import reactor.core.scheduler.Scheduler; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,6 +73,7 @@ public class AsyncCtlWorkload implements Benchmark { public AsyncCtlWorkload(TenantWorkloadConfig workloadCfg, Scheduler scheduler) { this.benchmarkScheduler = scheduler; + logger = LoggerFactory.getLogger(this.getClass()); final TokenCredential credential = workloadCfg.isManagedIdentityRequired() ? workloadCfg.buildTokenCredential() @@ -88,6 +90,9 @@ public AsyncCtlWorkload(TenantWorkloadConfig workloadCfg, Scheduler scheduler) { .contentResponseOnWriteEnabled(workloadCfg.isContentResponseOnWriteEnabled()); if (workloadCfg.getConnectionMode().equals(ConnectionMode.DIRECT)) { + if (workloadCfg.isHttp2Enabled()) { + logger.warn("HTTP/2 is enabled but connection mode is DIRECT; HTTP/2 settings are only applied in GATEWAY mode and will be ignored"); + } cosmosClientBuilder = cosmosClientBuilder.directMode(DirectConnectionConfig.getDefaultConfig()); } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); @@ -103,7 +108,6 @@ public AsyncCtlWorkload(TenantWorkloadConfig workloadCfg, Scheduler scheduler) { } cosmosClient = cosmosClientBuilder.buildAsyncClient(); workloadConfig = workloadCfg; - logger = LoggerFactory.getLogger(this.getClass()); parsedReadWriteQueryReadManyPct(workloadConfig.getReadWriteQueryReadManyPct()); @@ -257,44 +261,45 @@ private void parsedReadWriteQueryReadManyPct(String readWriteQueryReadManyPct) { private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { for (CosmosAsyncContainer container : containers) { List generatedDocs = new ArrayList<>(); - - Flux bulkOperationFlux = Flux.range(0, numberOfPreCreatedDocuments) - .map(i -> { - String uId = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uId, - dataFieldValue, - partitionKey, - workloadConfig.getDocumentDataFieldCount()); - generatedDocs.add(newDoc); - return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId)); - }); + List bulkOperations = new ArrayList<>(); + + for (int i = 0; i < numberOfPreCreatedDocuments; i++) { + String uId = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uId, + dataFieldValue, + partitionKey, + workloadConfig.getDocumentDataFieldCount()); + generatedDocs.add(newDoc); + bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId))); + } AtomicLong successCount = new AtomicLong(0); AtomicLong failureCount = new AtomicLong(0); - List> failedResponses = new ArrayList<>(); + List> failedResponses = Collections.synchronizedList(new ArrayList<>()); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); - container.executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) + container.executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() != null && response.getResponse().isSuccessStatusCode()) { successCount.incrementAndGet(); } else { failureCount.incrementAndGet(); failedResponses.add(response); - logger.error("Error during pre populating item {}", + logger.debug("Error during pre populating item {}", response.getException() != null ? response.getException().getMessage() : "unknown error"); } }) .blockLast(Duration.ofMinutes(10)); - BenchmarkHelper.retryFailedBulkOperations(failedResponses, container, partitionKey); + if (failureCount.get() > 0) { + logger.warn("Bulk pre-population encountered {} failures out of {} items for container {}", + failureCount.get(), numberOfPreCreatedDocuments, container.getId()); + } + + BenchmarkHelper.retryFailedBulkOperations(failedResponses, container); docsToRead.put(container.getId(), generatedDocs); logger.info("Finished pre-populating {} documents for container {}", successCount.get(), container.getId()); - if (failureCount.get() > 0) { - logger.info("Failed pre-populating {} documents for container {}", - failureCount.get(), container.getId()); - } } } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index 5f87f8ead3d0..f1b1747953f0 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -53,6 +53,7 @@ import java.io.InputStream; import java.time.Duration; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Properties; import java.util.UUID; @@ -91,6 +92,7 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { workloadConfig = workloadCfg; this.benchmarkScheduler = scheduler; + logger = LoggerFactory.getLogger(this.getClass()); final TokenCredential credential = workloadCfg.isManagedIdentityRequired() ? workloadCfg.buildTokenCredential() @@ -107,6 +109,9 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { .contentResponseOnWriteEnabled(workloadCfg.isContentResponseOnWriteEnabled()); if (workloadCfg.getConnectionMode().equals(ConnectionMode.DIRECT)) { + if (workloadCfg.isHttp2Enabled()) { + logger.warn("HTTP/2 is enabled but connection mode is DIRECT; HTTP/2 settings are only applied in GATEWAY mode and will be ignored"); + } cosmosClientBuilder = cosmosClientBuilder.directMode(DirectConnectionConfig.getDefaultConfig()); } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); @@ -122,7 +127,6 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { } cosmosClient = cosmosClientBuilder.buildAsyncClient(); cosmosEncryptionAsyncClient = createEncryptionClientInstance(cosmosClient); - logger = LoggerFactory.getLogger(this.getClass()); createEncryptionDatabaseAndContainer(); partitionKey = cosmosAsyncContainer.read().block().getProperties().getPartitionKeyDefinition() .getPaths().iterator().next().split("/")[1]; @@ -131,31 +135,31 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { logger.info("PRE-populating {} documents ....", workloadCfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); List generatedDocs = new ArrayList<>(); - - Flux bulkOperationFlux = Flux.range(0, workloadCfg.getNumberOfPreCreatedDocuments()) - .map(i -> { - String uuid = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, - dataFieldValue, - partitionKey, - workloadConfig.getDocumentDataFieldCount()); - for (int j = 1; j <= workloadCfg.getEncryptedStringFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_STRING_FIELD + j, uuid); - } - for (int j = 1; j <= workloadCfg.getEncryptedLongFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_LONG_FIELD + j, 1234l); - } - for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); - } - generatedDocs.add(newDoc); - return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); - }); + List bulkOperations = new ArrayList<>(); + + for (int i = 0; i < workloadCfg.getNumberOfPreCreatedDocuments(); i++) { + String uuid = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, + dataFieldValue, + partitionKey, + workloadConfig.getDocumentDataFieldCount()); + for (int j = 1; j <= workloadCfg.getEncryptedStringFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_STRING_FIELD + j, uuid); + } + for (int j = 1; j <= workloadCfg.getEncryptedLongFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_LONG_FIELD + j, 1234L); + } + for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); + } + generatedDocs.add(newDoc); + bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); + } CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); - List> failedResponses = new ArrayList<>(); + List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosEncryptionAsyncContainer - .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) + .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); @@ -163,7 +167,8 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { }) .blockLast(Duration.ofMinutes(10)); - BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, partitionKey); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, + (item, pk) -> cosmosEncryptionAsyncContainer.createItem(item, pk, null).then()); docsToRead = generatedDocs; } else { diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java index 62143c20997e..a88d8581ec0b 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java @@ -13,6 +13,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -42,10 +43,18 @@ public void allJsonPropertiesShouldHaveApplyFieldCase() throws IOException { } // Parse the source file to find all case "..." entries in applyField - Path sourceFile = Paths.get("src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java"); - String source = new String(Files.readAllBytes(sourceFile)); + String basedir = System.getProperty("basedir", System.getProperty("user.dir")); + Path sourceFile = Paths.get(basedir, "src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java"); + String source = new String(Files.readAllBytes(sourceFile), StandardCharsets.UTF_8); + // Extract the applyField method body to avoid matching case statements from other switches + int applyFieldStart = source.indexOf("void applyField("); + if (applyFieldStart < 0) { + applyFieldStart = source.indexOf("applyField(String"); + } + String applyFieldSource = applyFieldStart >= 0 ? source.substring(applyFieldStart) : source; + Set caseNames = new HashSet<>(); - Matcher matcher = Pattern.compile("case\\s+\"([^\"]+)\"").matcher(source); + Matcher matcher = Pattern.compile("case\\s+\"([^\"]+)\"").matcher(applyFieldSource); while (matcher.find()) { caseNames.add(matcher.group(1)); } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java index a7186f0416e0..374f67ef1c09 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java @@ -99,7 +99,7 @@ public void writeThroughputCLI() throws Exception { } @Test(dataProvider = "collectionLinkTypeArgProvider", groups = "fast", timeOut = TIMEOUT) - public void writeLatency(boolean useNameLink) throws Exception { + public void writeThroughputWithDataProvider(boolean useNameLink) throws Exception { int numberOfOperations = 123; TenantWorkloadConfig cfg = new TenantWorkloadConfig(); @@ -173,7 +173,7 @@ protected void onSuccess() { } @Test(dataProvider = "collectionLinkTypeArgProvider", groups = "fast", timeOut = TIMEOUT) - public void readLatency(boolean useNameLink) throws Exception { + public void readThroughputWithDataProvider(boolean useNameLink) throws Exception { int numberOfOperations = 123; TenantWorkloadConfig cfg = new TenantWorkloadConfig(); From 5e820c97551d5183206c8b77cf1f7ee692f9514b Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 13:01:00 -0700 Subject: [PATCH 24/35] Address follow-up review comments - Remove HTTP/2 Direct mode warnings: Direct mode also uses gateway connections for metadata, so HTTP/2 settings can still be relevant - Optimize memory: build docs eagerly into list but create CosmosItemOperations lazily via Flux.fromIterable().map(), avoiding storing both lists simultaneously - Rewrite TenantWorkloadConfigApplyFieldTest to use pure reflection: invokes private applyField() via reflection for each @JsonProperty and verifies the field was set, eliminating brittle source file parsing Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/AsyncBenchmark.java | 10 ++- .../cosmos/benchmark/ReadMyWriteWorkflow.java | 7 +- .../benchmark/ctl/AsyncCtlWorkload.java | 10 ++- .../encryption/AsyncEncryptionBenchmark.java | 10 ++- .../TenantWorkloadConfigApplyFieldTest.java | 68 +++++++++++-------- 5 files changed, 57 insertions(+), 48 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index db3fb33c452d..447704d1b251 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -123,9 +123,6 @@ abstract class AsyncBenchmark implements Benchmark { benchmarkSpecificClientBuilder.clientTelemetryConfig(telemetryConfig); if (cfg.getConnectionMode().equals(ConnectionMode.DIRECT)) { - if (cfg.isHttp2Enabled()) { - logger.warn("HTTP/2 is enabled but connection mode is DIRECT; HTTP/2 settings are only applied in GATEWAY mode and will be ignored"); - } benchmarkSpecificClientBuilder = benchmarkSpecificClientBuilder.directMode(DirectConnectionConfig.getDefaultConfig()); } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); @@ -205,7 +202,6 @@ abstract class AsyncBenchmark implements Benchmark { logger.info("PRE-populating {} documents ....", cfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(cfg.getDocumentDataFieldSize()); List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); for (int i = 0; i < cfg.getNumberOfPreCreatedDocuments(); i++) { String uuid = UUID.randomUUID().toString(); @@ -214,13 +210,15 @@ abstract class AsyncBenchmark implements Benchmark { partitionKey, cfg.getDocumentDataFieldCount()); generatedDocs.add(newDoc); - bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); } CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosAsyncContainer - .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .executeBulkOperations( + Flux.fromIterable(generatedDocs) + .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), + bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java index 62811a0b6082..d6730ea1b3b2 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java @@ -140,7 +140,6 @@ protected Mono performWorkload(long i) { private void populateCache() { logger.info("PRE-populating {} documents ....", cacheSize); List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); for (int i = 0; i < cacheSize; i++) { String idString = UUID.randomUUID().toString(); @@ -154,13 +153,15 @@ private void populateCache() { newDoc.setProperty("dataField3", randomVal); newDoc.setProperty("dataField4", randomVal); generatedDocs.add(newDoc); - bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(idString))); } CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosAsyncContainer - .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .executeBulkOperations( + Flux.fromIterable(generatedDocs) + .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), + bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 97cd9eb82b42..393a403b49d1 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -90,9 +90,6 @@ public AsyncCtlWorkload(TenantWorkloadConfig workloadCfg, Scheduler scheduler) { .contentResponseOnWriteEnabled(workloadCfg.isContentResponseOnWriteEnabled()); if (workloadCfg.getConnectionMode().equals(ConnectionMode.DIRECT)) { - if (workloadCfg.isHttp2Enabled()) { - logger.warn("HTTP/2 is enabled but connection mode is DIRECT; HTTP/2 settings are only applied in GATEWAY mode and will be ignored"); - } cosmosClientBuilder = cosmosClientBuilder.directMode(DirectConnectionConfig.getDefaultConfig()); } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); @@ -261,7 +258,6 @@ private void parsedReadWriteQueryReadManyPct(String readWriteQueryReadManyPct) { private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { for (CosmosAsyncContainer container : containers) { List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); for (int i = 0; i < numberOfPreCreatedDocuments; i++) { String uId = UUID.randomUUID().toString(); @@ -270,14 +266,16 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { partitionKey, workloadConfig.getDocumentDataFieldCount()); generatedDocs.add(newDoc); - bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId))); } AtomicLong successCount = new AtomicLong(0); AtomicLong failureCount = new AtomicLong(0); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); - container.executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + container.executeBulkOperations( + Flux.fromIterable(generatedDocs) + .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), + bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() != null && response.getResponse().isSuccessStatusCode()) { successCount.incrementAndGet(); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index f1b1747953f0..b0679139f408 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -109,9 +109,6 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { .contentResponseOnWriteEnabled(workloadCfg.isContentResponseOnWriteEnabled()); if (workloadCfg.getConnectionMode().equals(ConnectionMode.DIRECT)) { - if (workloadCfg.isHttp2Enabled()) { - logger.warn("HTTP/2 is enabled but connection mode is DIRECT; HTTP/2 settings are only applied in GATEWAY mode and will be ignored"); - } cosmosClientBuilder = cosmosClientBuilder.directMode(DirectConnectionConfig.getDefaultConfig()); } else { GatewayConnectionConfig gatewayConnectionConfig = new GatewayConnectionConfig(); @@ -135,7 +132,6 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { logger.info("PRE-populating {} documents ....", workloadCfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); List generatedDocs = new ArrayList<>(); - List bulkOperations = new ArrayList<>(); for (int i = 0; i < workloadCfg.getNumberOfPreCreatedDocuments(); i++) { String uuid = UUID.randomUUID().toString(); @@ -153,13 +149,15 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); } generatedDocs.add(newDoc); - bulkOperations.add(CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid))); } CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosEncryptionAsyncContainer - .executeBulkOperations(Flux.fromIterable(bulkOperations), bulkExecutionOptions) + .executeBulkOperations( + Flux.fromIterable(generatedDocs) + .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), + bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java index a88d8581ec0b..2f1edc37585f 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java @@ -7,22 +7,19 @@ import org.testng.annotations.Test; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashSet; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import static org.assertj.core.api.Assertions.assertThat; /** * Ensures every @JsonProperty field in TenantWorkloadConfig has a corresponding * case in the applyField() switch statement, so that tenantDefaults inheritance works. + * + * Uses reflection to invoke the private applyField method for each property name + * and verifies the corresponding field was set, avoiding brittle source file parsing. */ public class TenantWorkloadConfigApplyFieldTest { @@ -32,8 +29,8 @@ public class TenantWorkloadConfigApplyFieldTest { )); @Test(groups = {"unit"}) - public void allJsonPropertiesShouldHaveApplyFieldCase() throws IOException { - // Collect all @JsonProperty names from the class + public void allJsonPropertiesShouldHaveApplyFieldCase() throws Exception { + // Collect all @JsonProperty names and their corresponding declared fields Set jsonPropertyNames = new HashSet<>(); for (Field field : TenantWorkloadConfig.class.getDeclaredFields()) { JsonProperty annotation = field.getAnnotation(JsonProperty.class); @@ -42,27 +39,44 @@ public void allJsonPropertiesShouldHaveApplyFieldCase() throws IOException { } } - // Parse the source file to find all case "..." entries in applyField - String basedir = System.getProperty("basedir", System.getProperty("user.dir")); - Path sourceFile = Paths.get(basedir, "src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java"); - String source = new String(Files.readAllBytes(sourceFile), StandardCharsets.UTF_8); - // Extract the applyField method body to avoid matching case statements from other switches - int applyFieldStart = source.indexOf("void applyField("); - if (applyFieldStart < 0) { - applyFieldStart = source.indexOf("applyField(String"); - } - String applyFieldSource = applyFieldStart >= 0 ? source.substring(applyFieldStart) : source; - - Set caseNames = new HashSet<>(); - Matcher matcher = Pattern.compile("case\\s+\"([^\"]+)\"").matcher(applyFieldSource); - while (matcher.find()) { - caseNames.add(matcher.group(1)); - } + // Get the private applyField method via reflection + Method applyField = TenantWorkloadConfig.class.getDeclaredMethod( + "applyField", String.class, String.class, boolean.class); + applyField.setAccessible(true); - // Every @JsonProperty (except excluded) should have a case in applyField + // For each @JsonProperty, invoke applyField and verify the field was handled Set missingCases = new HashSet<>(); for (String propName : jsonPropertyNames) { - if (!EXCLUDED_FIELDS.contains(propName) && !caseNames.contains(propName)) { + if (EXCLUDED_FIELDS.contains(propName)) { + continue; + } + + TenantWorkloadConfig config = new TenantWorkloadConfig(); + try { + applyField.invoke(config, propName, "test-sentinel-value", true); + } catch (Exception e) { + // If applyField throws (e.g., NumberFormatException for int fields), + // that means the case exists but the test value is wrong type — that's OK. + // A missing case would just be a no-op (fall through default). + continue; + } + + // Check if ANY field was modified from its default (null) state. + // If applyField silently ignored the key (no matching case), no field changes. + boolean fieldWasSet = false; + for (Field field : TenantWorkloadConfig.class.getDeclaredFields()) { + JsonProperty annotation = field.getAnnotation(JsonProperty.class); + if (annotation != null && annotation.value().equals(propName)) { + field.setAccessible(true); + Object value = field.get(config); + if (value != null) { + fieldWasSet = true; + } + break; + } + } + + if (!fieldWasSet) { missingCases.add(propName); } } From 91dc0abacc6ccdbe476d74114b36ad7d5c3166ae Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 13:38:01 -0700 Subject: [PATCH 25/35] Optimize pre-population: lazy creation + lightweight docsToRead MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Revert to lazy doc creation via Flux.range().map() — this is thread-safe because Reactive Streams guarantees serial onNext signals at the map stage (rule 1.3). The thread-safety fix for failedResponses (Collections.synchronizedList) is retained since doOnNext on executeBulkOperations can fire from executor threads. - Store only id + partitionKey in docsToRead instead of full documents. All docsToRead consumers only access getId() and getProperty(pk). This reduces memory from O(N * docSize) to O(N * idSize). - Add BenchmarkHelper.idsToLightweightDocs() utility for constructing minimal PojoizedJson objects from collected ids. - ReadMyWriteWorkflow retains full docs in its cache since queries need QUERY_FIELD_NAME, but still uses lazy creation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/AsyncBenchmark.java | 29 ++++++------ .../cosmos/benchmark/BenchmarkHelper.java | 16 +++++++ .../cosmos/benchmark/ReadMyWriteWorkflow.java | 33 +++++++------ .../benchmark/ctl/AsyncCtlWorkload.java | 29 ++++++------ .../encryption/AsyncEncryptionBenchmark.java | 47 +++++++++---------- 5 files changed, 83 insertions(+), 71 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index 447704d1b251..f63d4c755506 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -201,24 +201,23 @@ abstract class AsyncBenchmark implements Benchmark { && cfg.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", cfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(cfg.getDocumentDataFieldSize()); - List generatedDocs = new ArrayList<>(); - - for (int i = 0; i < cfg.getNumberOfPreCreatedDocuments(); i++) { - String uuid = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, - dataFieldValue, - partitionKey, - cfg.getDocumentDataFieldCount()); - generatedDocs.add(newDoc); - } + List generatedIds = new ArrayList<>(); + + Flux bulkOperationFlux = Flux.range(0, cfg.getNumberOfPreCreatedDocuments()) + .map(i -> { + String uuid = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, + dataFieldValue, + partitionKey, + cfg.getDocumentDataFieldCount()); + generatedIds.add(uuid); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); + }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosAsyncContainer - .executeBulkOperations( - Flux.fromIterable(generatedDocs) - .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), - bulkExecutionOptions) + .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); @@ -228,7 +227,7 @@ abstract class AsyncBenchmark implements Benchmark { BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer); - docsToRead = generatedDocs; + docsToRead = BenchmarkHelper.idsToLightweightDocs(generatedIds, partitionKey); } else { docsToRead = new ArrayList<>(); } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java index 11cc823608b3..4de16b3594af 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java @@ -4,6 +4,7 @@ package com.azure.cosmos.benchmark; import java.time.Duration; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.BiFunction; @@ -110,4 +111,19 @@ public static void retryFailedBulkOperations( logger.info("Finished retrying failed bulk operations"); } + + /** + * Creates lightweight PojoizedJson objects containing only id and partition key, + * suitable for use as docsToRead references without holding full document data. + */ + public static List idsToLightweightDocs(List ids, String partitionKeyName) { + List docs = new ArrayList<>(ids.size()); + for (String id : ids) { + PojoizedJson doc = new PojoizedJson(); + doc.setProperty("id", id); + doc.setProperty(partitionKeyName, id); + docs.add(doc); + } + return docs; + } } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java index d6730ea1b3b2..1ba59ebed03a 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java @@ -141,27 +141,26 @@ private void populateCache() { logger.info("PRE-populating {} documents ....", cacheSize); List generatedDocs = new ArrayList<>(); - for (int i = 0; i < cacheSize; i++) { - String idString = UUID.randomUUID().toString(); - String randomVal = UUID.randomUUID().toString(); - PojoizedJson newDoc = new PojoizedJson(); - newDoc.setProperty("id", idString); - newDoc.setProperty(partitionKey, idString); - newDoc.setProperty(QUERY_FIELD_NAME, randomVal); - newDoc.setProperty("dataField1", randomVal); - newDoc.setProperty("dataField2", randomVal); - newDoc.setProperty("dataField3", randomVal); - newDoc.setProperty("dataField4", randomVal); - generatedDocs.add(newDoc); - } + Flux bulkOperationFlux = Flux.range(0, cacheSize) + .map(i -> { + String idString = UUID.randomUUID().toString(); + String randomVal = UUID.randomUUID().toString(); + PojoizedJson newDoc = new PojoizedJson(); + newDoc.setProperty("id", idString); + newDoc.setProperty(partitionKey, idString); + newDoc.setProperty(QUERY_FIELD_NAME, randomVal); + newDoc.setProperty("dataField1", randomVal); + newDoc.setProperty("dataField2", randomVal); + newDoc.setProperty("dataField3", randomVal); + newDoc.setProperty("dataField4", randomVal); + generatedDocs.add(newDoc); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(idString)); + }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosAsyncContainer - .executeBulkOperations( - Flux.fromIterable(generatedDocs) - .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), - bulkExecutionOptions) + .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 393a403b49d1..ac15003fd574 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -257,25 +257,24 @@ private void parsedReadWriteQueryReadManyPct(String readWriteQueryReadManyPct) { private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { for (CosmosAsyncContainer container : containers) { - List generatedDocs = new ArrayList<>(); - - for (int i = 0; i < numberOfPreCreatedDocuments; i++) { - String uId = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uId, - dataFieldValue, - partitionKey, - workloadConfig.getDocumentDataFieldCount()); - generatedDocs.add(newDoc); - } + List generatedIds = new ArrayList<>(); + + Flux bulkOperationFlux = Flux.range(0, numberOfPreCreatedDocuments) + .map(i -> { + String uId = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uId, + dataFieldValue, + partitionKey, + workloadConfig.getDocumentDataFieldCount()); + generatedIds.add(uId); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId)); + }); AtomicLong successCount = new AtomicLong(0); AtomicLong failureCount = new AtomicLong(0); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); - container.executeBulkOperations( - Flux.fromIterable(generatedDocs) - .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), - bulkExecutionOptions) + container.executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() != null && response.getResponse().isSuccessStatusCode()) { successCount.incrementAndGet(); @@ -295,7 +294,7 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { BenchmarkHelper.retryFailedBulkOperations(failedResponses, container); - docsToRead.put(container.getId(), generatedDocs); + docsToRead.put(container.getId(), BenchmarkHelper.idsToLightweightDocs(generatedIds, partitionKey)); logger.info("Finished pre-populating {} documents for container {}", successCount.get(), container.getId()); } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index b0679139f408..f31e6371899b 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -131,33 +131,32 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { && workloadConfig.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", workloadCfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); - List generatedDocs = new ArrayList<>(); - - for (int i = 0; i < workloadCfg.getNumberOfPreCreatedDocuments(); i++) { - String uuid = UUID.randomUUID().toString(); - PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, - dataFieldValue, - partitionKey, - workloadConfig.getDocumentDataFieldCount()); - for (int j = 1; j <= workloadCfg.getEncryptedStringFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_STRING_FIELD + j, uuid); - } - for (int j = 1; j <= workloadCfg.getEncryptedLongFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_LONG_FIELD + j, 1234L); - } - for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { - newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); - } - generatedDocs.add(newDoc); - } + List generatedIds = new ArrayList<>(); + + Flux bulkOperationFlux = Flux.range(0, workloadCfg.getNumberOfPreCreatedDocuments()) + .map(i -> { + String uuid = UUID.randomUUID().toString(); + PojoizedJson newDoc = BenchmarkHelper.generateDocument(uuid, + dataFieldValue, + partitionKey, + workloadConfig.getDocumentDataFieldCount()); + for (int j = 1; j <= workloadCfg.getEncryptedStringFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_STRING_FIELD + j, uuid); + } + for (int j = 1; j <= workloadCfg.getEncryptedLongFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_LONG_FIELD + j, 1234L); + } + for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { + newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); + } + generatedIds.add(uuid); + return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); + }); CosmosBulkExecutionOptions bulkExecutionOptions = new CosmosBulkExecutionOptions(); List> failedResponses = Collections.synchronizedList(new ArrayList<>()); cosmosEncryptionAsyncContainer - .executeBulkOperations( - Flux.fromIterable(generatedDocs) - .map(doc -> CosmosBulkOperations.getCreateItemOperation(doc, new PartitionKey(doc.getId()))), - bulkExecutionOptions) + .executeBulkOperations(bulkOperationFlux, bulkExecutionOptions) .doOnNext(response -> { if (response.getResponse() == null || !response.getResponse().isSuccessStatusCode()) { failedResponses.add(response); @@ -168,7 +167,7 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { BenchmarkHelper.retryFailedBulkOperations(failedResponses, (item, pk) -> cosmosEncryptionAsyncContainer.createItem(item, pk, null).then()); - docsToRead = generatedDocs; + docsToRead = BenchmarkHelper.idsToLightweightDocs(generatedIds, partitionKey); } else { docsToRead = new ArrayList<>(); } From 68bc0e62778976c1e1896336e31b37ef56ceb570 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 13:42:38 -0700 Subject: [PATCH 26/35] Revert lightweight docsToRead: keep full docs in memory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts the id-only optimization — docsToRead retains full PojoizedJson objects as before. Lazy creation via Flux.range().map() is kept since map() is serial per Reactive Streams spec. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../azure/cosmos/benchmark/AsyncBenchmark.java | 6 +++--- .../azure/cosmos/benchmark/BenchmarkHelper.java | 16 ---------------- .../cosmos/benchmark/ctl/AsyncCtlWorkload.java | 6 +++--- .../encryption/AsyncEncryptionBenchmark.java | 6 +++--- 4 files changed, 9 insertions(+), 25 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index f63d4c755506..8998c8deed00 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -201,7 +201,7 @@ abstract class AsyncBenchmark implements Benchmark { && cfg.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", cfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(cfg.getDocumentDataFieldSize()); - List generatedIds = new ArrayList<>(); + List generatedDocs = new ArrayList<>(); Flux bulkOperationFlux = Flux.range(0, cfg.getNumberOfPreCreatedDocuments()) .map(i -> { @@ -210,7 +210,7 @@ abstract class AsyncBenchmark implements Benchmark { dataFieldValue, partitionKey, cfg.getDocumentDataFieldCount()); - generatedIds.add(uuid); + generatedDocs.add(newDoc); return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); }); @@ -227,7 +227,7 @@ abstract class AsyncBenchmark implements Benchmark { BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer); - docsToRead = BenchmarkHelper.idsToLightweightDocs(generatedIds, partitionKey); + docsToRead = generatedDocs; } else { docsToRead = new ArrayList<>(); } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java index 4de16b3594af..11cc823608b3 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java @@ -4,7 +4,6 @@ package com.azure.cosmos.benchmark; import java.time.Duration; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.BiFunction; @@ -111,19 +110,4 @@ public static void retryFailedBulkOperations( logger.info("Finished retrying failed bulk operations"); } - - /** - * Creates lightweight PojoizedJson objects containing only id and partition key, - * suitable for use as docsToRead references without holding full document data. - */ - public static List idsToLightweightDocs(List ids, String partitionKeyName) { - List docs = new ArrayList<>(ids.size()); - for (String id : ids) { - PojoizedJson doc = new PojoizedJson(); - doc.setProperty("id", id); - doc.setProperty(partitionKeyName, id); - docs.add(doc); - } - return docs; - } } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index ac15003fd574..89850d3f5469 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -257,7 +257,7 @@ private void parsedReadWriteQueryReadManyPct(String readWriteQueryReadManyPct) { private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { for (CosmosAsyncContainer container : containers) { - List generatedIds = new ArrayList<>(); + List generatedDocs = new ArrayList<>(); Flux bulkOperationFlux = Flux.range(0, numberOfPreCreatedDocuments) .map(i -> { @@ -266,7 +266,7 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { dataFieldValue, partitionKey, workloadConfig.getDocumentDataFieldCount()); - generatedIds.add(uId); + generatedDocs.add(newDoc); return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uId)); }); @@ -294,7 +294,7 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { BenchmarkHelper.retryFailedBulkOperations(failedResponses, container); - docsToRead.put(container.getId(), BenchmarkHelper.idsToLightweightDocs(generatedIds, partitionKey)); + docsToRead.put(container.getId(), generatedDocs); logger.info("Finished pre-populating {} documents for container {}", successCount.get(), container.getId()); } diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index f31e6371899b..7a8defcaf49f 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -131,7 +131,7 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { && workloadConfig.getOperationType() != Operation.ReadMyWrites) { logger.info("PRE-populating {} documents ....", workloadCfg.getNumberOfPreCreatedDocuments()); String dataFieldValue = RandomStringUtils.randomAlphabetic(workloadCfg.getDocumentDataFieldSize()); - List generatedIds = new ArrayList<>(); + List generatedDocs = new ArrayList<>(); Flux bulkOperationFlux = Flux.range(0, workloadCfg.getNumberOfPreCreatedDocuments()) .map(i -> { @@ -149,7 +149,7 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { for (int j = 1; j <= workloadCfg.getEncryptedDoubleFieldCount(); j++) { newDoc.setProperty(ENCRYPTED_DOUBLE_FIELD + j, 1234.01d); } - generatedIds.add(uuid); + generatedDocs.add(newDoc); return CosmosBulkOperations.getCreateItemOperation(newDoc, new PartitionKey(uuid)); }); @@ -167,7 +167,7 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { BenchmarkHelper.retryFailedBulkOperations(failedResponses, (item, pk) -> cosmosEncryptionAsyncContainer.createItem(item, pk, null).then()); - docsToRead = BenchmarkHelper.idsToLightweightDocs(generatedIds, partitionKey); + docsToRead = generatedDocs; } else { docsToRead = new ArrayList<>(); } From 4edeef9cb777b64f69e26213f2ab9b9df53f0686 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 14:06:55 -0700 Subject: [PATCH 27/35] Improve retry logic: backoff, status code 449, concurrency 20 - Switch from Retry.max(5) to Retry.backoff(5, 100ms) with max 5s backoff and 0.5 jitter, aligned with BulkWriter reference pattern - Add status code 449 (RetryWith) to retryable set, matching BulkWriter - Reduce retry concurrency from 100 to 20 per reviewer request - Add 449 to SyncBenchmark transient retry set Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/BenchmarkHelper.java | 34 ++++++++++++------- .../azure/cosmos/benchmark/SyncBenchmark.java | 3 +- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java index 11cc823608b3..2f4a892f95cb 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java @@ -65,7 +65,11 @@ public static void retryFailedBulkOperations( /** * Retries failed bulk operation responses using a custom create function. * Ignores 409 (Conflict) errors since the document already exists. - * Re-throws all other errors after retries are exhausted. + * Re-throws all other non-transient errors after retries are exhausted. + * + *

Retryable status codes (aligned with + * BulkWriter): + * 408, 410, 429, 449, 500, 503.

* * @param failedResponses list of failed bulk operation responses * @param createFunction a function that creates an item given the item and partition key @@ -87,17 +91,21 @@ public static void retryFailedBulkOperations( PartitionKey pk = operation.getPartitionKeyValue(); return createFunction.apply(item, pk) - .retryWhen(Retry.max(5).filter(error -> { - if (!(error instanceof CosmosException)) { - return false; - } - int statusCode = ((CosmosException) error).getStatusCode(); - return statusCode == 410 - || statusCode == 408 - || statusCode == 429 - || statusCode == 500 - || statusCode == 503; - })) + .retryWhen(Retry.backoff(5, Duration.ofMillis(100)) + .maxBackoff(Duration.ofSeconds(5)) + .jitter(0.5) + .filter(error -> { + if (!(error instanceof CosmosException)) { + return false; + } + int statusCode = ((CosmosException) error).getStatusCode(); + return statusCode == 408 + || statusCode == 410 + || statusCode == 429 + || statusCode == 449 + || statusCode == 500 + || statusCode == 503; + })) .onErrorResume(error -> { if (error instanceof CosmosException && ((CosmosException) error).getStatusCode() == 409) { @@ -105,7 +113,7 @@ public static void retryFailedBulkOperations( } return Mono.error(error); }); - }, 100) + }, 20) .blockLast(Duration.ofMinutes(10)); logger.info("Finished retrying failed bulk operations"); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java index b372b8e0af11..2c4d4d76e2d2 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java @@ -202,7 +202,8 @@ protected void init() { } int statusCode = ce.getStatusCode(); boolean isTransient = statusCode == 408 || statusCode == 410 - || statusCode == 429 || statusCode == 500 || statusCode == 503; + || statusCode == 429 || statusCode == 449 + || statusCode == 500 || statusCode == 503; if (isTransient && attempt < maxRetries) { try { Thread.sleep(1000L * (attempt + 1)); From c446d59f33facfda744ae532ac95a1a8c4324e8b Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 14:15:20 -0700 Subject: [PATCH 28/35] Make logger static final in AsyncEncryptionBenchmark Changed from instance field initialized in constructor to static final field, following the standard Logger pattern. Uses package-visible access since subclasses in the same package reference it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index 7a8defcaf49f..527841976247 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -72,7 +72,7 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { private CosmosAsyncDatabase cosmosAsyncDatabase; private Properties keyVaultProperties; - final Logger logger; + static final Logger logger = LoggerFactory.getLogger(AsyncEncryptionBenchmark.class); final CosmosAsyncClient cosmosClient; final String partitionKey; @@ -92,7 +92,6 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { workloadConfig = workloadCfg; this.benchmarkScheduler = scheduler; - logger = LoggerFactory.getLogger(this.getClass()); final TokenCredential credential = workloadCfg.isManagedIdentityRequired() ? workloadCfg.buildTokenCredential() From d4a990d7fc609e456f4884cdd849024b86fa52f5 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 14:19:05 -0700 Subject: [PATCH 29/35] Make logger static final across all benchmark classes - AsyncBenchmark: static final (package-visible for subclasses) - SyncBenchmark: static final (package-visible for consistency) - AsyncCtlWorkload: private static final (no subclasses) - Removed constructor logger assignments in all three classes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java | 3 +-- .../main/java/com/azure/cosmos/benchmark/SyncBenchmark.java | 3 +-- .../java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index 8998c8deed00..0ad2720d9bc3 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -53,7 +53,7 @@ abstract class AsyncBenchmark implements Benchmark { private boolean databaseCreated; private boolean collectionCreated; - final Logger logger; + static final Logger logger = LoggerFactory.getLogger(AsyncBenchmark.class); final CosmosAsyncClient benchmarkWorkloadClient; CosmosAsyncContainer cosmosAsyncContainer; CosmosAsyncDatabase cosmosAsyncDatabase; @@ -63,7 +63,6 @@ abstract class AsyncBenchmark implements Benchmark { AsyncBenchmark(TenantWorkloadConfig cfg, Scheduler scheduler) { - logger = LoggerFactory.getLogger(this.getClass()); workloadConfig = cfg; this.benchmarkScheduler = scheduler; diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java index 2c4d4d76e2d2..24b7b04cfe2b 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java @@ -47,7 +47,7 @@ abstract class SyncBenchmark implements Benchmark { private boolean databaseCreated; private boolean collectionCreated; - final Logger logger; + static final Logger logger = LoggerFactory.getLogger(SyncBenchmark.class); final CosmosClient benchmarkWorkloadClient; CosmosContainer cosmosContainer; CosmosDatabase cosmosDatabase; @@ -71,7 +71,6 @@ protected void init() { SyncBenchmark(TenantWorkloadConfig workloadCfg) throws Exception { executorService = Executors.newFixedThreadPool(workloadCfg.getConcurrency()); workloadConfig = workloadCfg; - logger = LoggerFactory.getLogger(this.getClass()); boolean isManagedIdentityRequired = workloadCfg.isManagedIdentityRequired(); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 89850d3f5469..321d2acf8fab 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -55,7 +55,7 @@ public class AsyncCtlWorkload implements Benchmark { private final String prefixUuidForCreate; private final String dataFieldValue; private final String partitionKey; - private final Logger logger; + private static final Logger logger = LoggerFactory.getLogger(AsyncCtlWorkload.class); private final CosmosAsyncClient cosmosClient; private final TenantWorkloadConfig workloadConfig; private final Map> docsToRead = new HashMap<>(); @@ -73,7 +73,6 @@ public class AsyncCtlWorkload implements Benchmark { public AsyncCtlWorkload(TenantWorkloadConfig workloadCfg, Scheduler scheduler) { this.benchmarkScheduler = scheduler; - logger = LoggerFactory.getLogger(this.getClass()); final TokenCredential credential = workloadCfg.isManagedIdentityRequired() ? workloadCfg.buildTokenCredential() From 8cb463e4d379b5cce8c4b35df7ae8b2f5bcf792d Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 14:28:00 -0700 Subject: [PATCH 30/35] Use Math.min(workloadConcurrency, 20) for retry concurrency Pass workload concurrency to retryFailedBulkOperations and cap at 20, so retry parallelism adapts to the configured workload concurrency. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../com/azure/cosmos/benchmark/AsyncBenchmark.java | 3 ++- .../com/azure/cosmos/benchmark/BenchmarkHelper.java | 13 +++++++++---- .../azure/cosmos/benchmark/ReadMyWriteWorkflow.java | 3 ++- .../cosmos/benchmark/ctl/AsyncCtlWorkload.java | 3 ++- .../encryption/AsyncEncryptionBenchmark.java | 3 ++- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java index 0ad2720d9bc3..bbf9b10a14f3 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/AsyncBenchmark.java @@ -224,7 +224,8 @@ abstract class AsyncBenchmark implements Benchmark { }) .blockLast(Duration.ofMinutes(10)); - BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, + cfg.getConcurrency()); docsToRead = generatedDocs; } else { diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java index 2f4a892f95cb..8175ec0abf91 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkHelper.java @@ -53,13 +53,16 @@ public static boolean shouldContinue(long startTimeMillis, long iterationCount, * * @param failedResponses list of failed bulk operation responses * @param container the container to retry against + * @param retryConcurrency max concurrent retry operations */ public static void retryFailedBulkOperations( List> failedResponses, - CosmosAsyncContainer container) { + CosmosAsyncContainer container, + int retryConcurrency) { retryFailedBulkOperations(failedResponses, - (item, pk) -> container.createItem(item, pk, null).then()); + (item, pk) -> container.createItem(item, pk, null).then(), + retryConcurrency); } /** @@ -73,10 +76,12 @@ public static void retryFailedBulkOperations( * * @param failedResponses list of failed bulk operation responses * @param createFunction a function that creates an item given the item and partition key + * @param retryConcurrency max concurrent retry operations */ public static void retryFailedBulkOperations( List> failedResponses, - BiFunction> createFunction) { + BiFunction> createFunction, + int retryConcurrency) { if (failedResponses.isEmpty()) { return; @@ -113,7 +118,7 @@ public static void retryFailedBulkOperations( } return Mono.error(error); }); - }, 20) + }, Math.min(retryConcurrency, 20)) .blockLast(Duration.ofMinutes(10)); logger.info("Finished retrying failed bulk operations"); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java index 1ba59ebed03a..eb689b097ec6 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ReadMyWriteWorkflow.java @@ -168,7 +168,8 @@ private void populateCache() { }) .blockLast(Duration.ofMinutes(10)); - BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, cosmosAsyncContainer, + workloadConfig.getConcurrency()); for (int i = 0; i < generatedDocs.size(); i++) { cache.put(i, generatedDocs.get(i)); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index 321d2acf8fab..d13c5ee778da 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -291,7 +291,8 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { failureCount.get(), numberOfPreCreatedDocuments, container.getId()); } - BenchmarkHelper.retryFailedBulkOperations(failedResponses, container); + BenchmarkHelper.retryFailedBulkOperations(failedResponses, container, + workloadConfig.getConcurrency()); docsToRead.put(container.getId(), generatedDocs); logger.info("Finished pre-populating {} documents for container {}", diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java index 527841976247..6ff79329841f 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/encryption/AsyncEncryptionBenchmark.java @@ -164,7 +164,8 @@ public abstract class AsyncEncryptionBenchmark implements Benchmark { .blockLast(Duration.ofMinutes(10)); BenchmarkHelper.retryFailedBulkOperations(failedResponses, - (item, pk) -> cosmosEncryptionAsyncContainer.createItem(item, pk, null).then()); + (item, pk) -> cosmosEncryptionAsyncContainer.createItem(item, pk, null).then(), + workloadConfig.getConcurrency()); docsToRead = generatedDocs; } else { From f42ce50784cd4a8f949efa237d4660a7e67d4ce3 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 14:48:33 -0700 Subject: [PATCH 31/35] perf(cosmos): use O(1) header lookup in Http2ResponseHeaderCleanerHandler Replace O(n) forEach iteration over all HTTP/2 response headers with a direct O(1) hash lookup via Http2Headers.get(). This handler runs on the IO event loop thread and was consuming ~9.1% of total CPU by scanning all 15-25 headers on every response just to find x-ms-serviceversion. Changes: - Use headers.get(SERVER_VERSION_KEY) instead of headers.forEach() - Cache the header key as a static AsciiString constant - Remove unused StringUtils import Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Http2ResponseHeaderCleanerHandler.java | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java index ce3204954783..965ab8cf7888 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java @@ -4,13 +4,13 @@ package com.azure.cosmos.implementation.http; import com.azure.cosmos.implementation.HttpConstants; -import com.azure.cosmos.implementation.apachecommons.lang.StringUtils; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.handler.codec.http2.Http2Headers; import io.netty.handler.codec.http2.Http2HeadersFrame; import io.netty.handler.codec.http2.Http2SettingsAckFrame; import io.netty.handler.codec.http2.Http2SettingsFrame; +import io.netty.util.AsciiString; import io.netty.util.ReferenceCountUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,29 +18,21 @@ public class Http2ResponseHeaderCleanerHandler extends ChannelInboundHandlerAdapter { private static final Logger logger = LoggerFactory.getLogger(Http2ResponseHeaderCleanerHandler.class); + private static final AsciiString SERVER_VERSION_KEY = AsciiString.of(HttpConstants.HttpHeaders.SERVER_VERSION); + @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Http2HeadersFrame) { Http2HeadersFrame headersFrame = (Http2HeadersFrame) msg; Http2Headers headers = headersFrame.headers(); - headers.forEach(entry -> { - CharSequence key = entry.getKey(); - CharSequence value = entry.getValue(); - - // Based on the tests, only 'x-ms-serviceversion' header has extra value, - // so only check this specific header here - if (StringUtils.equalsIgnoreCase(key, HttpConstants.HttpHeaders.SERVER_VERSION)) { - // Check for leading whitespace or other prohibited characters - if (StringUtils.isNotEmpty(value) && (value.charAt(0) == ' ' || value.charAt(value.length() - 1) == ' ')) { - // Clean up the header value by trimming or handling as needed - logger.trace("There are extra white space for key {} with value {}", key, value); - - // TODO[Http2]: for now just trim the spaces, explore other options for example escape the whitespace - headers.set(key, value.toString().trim()); - } - } - }); + // Direct O(1) hash lookup instead of O(n) forEach iteration over all headers + CharSequence serverVersion = headers.get(SERVER_VERSION_KEY); + if (serverVersion != null && serverVersion.length() > 0 + && (serverVersion.charAt(0) == ' ' || serverVersion.charAt(serverVersion.length() - 1) == ' ')) { + logger.trace("There are extra white space for key {} with value {}", SERVER_VERSION_KEY, serverVersion); + headers.set(SERVER_VERSION_KEY, serverVersion.toString().trim()); + } super.channelRead(ctx, msg); } else if (msg instanceof Http2SettingsAckFrame) { From 2680b62b649a0da6f46e76e604b90fddc7f47a7c Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 18:30:37 -0700 Subject: [PATCH 32/35] fix(benchmark): use parseable sentinel value in TenantWorkloadConfigApplyFieldTest The test was using 'test-sentinel-value' which fails Integer.parseInt() inside applyField(). Since applyField() catches exceptions internally and does not rethrow, the test could not detect the NumberFormatException and incorrectly reported Integer fields as missing from the switch. Changed sentinel to '42' which is valid for String, Integer, and Boolean (via Boolean.parseBoolean) field types. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../TenantWorkloadConfigApplyFieldTest.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java index 2f1edc37585f..de3eb5b7da56 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/TenantWorkloadConfigApplyFieldTest.java @@ -52,14 +52,11 @@ public void allJsonPropertiesShouldHaveApplyFieldCase() throws Exception { } TenantWorkloadConfig config = new TenantWorkloadConfig(); - try { - applyField.invoke(config, propName, "test-sentinel-value", true); - } catch (Exception e) { - // If applyField throws (e.g., NumberFormatException for int fields), - // that means the case exists but the test value is wrong type — that's OK. - // A missing case would just be a no-op (fall through default). - continue; - } + // Use "42" as the sentinel: it's valid for String, Integer (42), and + // Boolean (false) fields. Note that applyField() catches parse exceptions + // internally and does not rethrow, so we cannot rely on catching exceptions + // here to detect Integer/Boolean case existence. + applyField.invoke(config, propName, "42", true); // Check if ANY field was modified from its default (null) state. // If applyField silently ignored the key (no matching case), no field changes. From bb9f148045b475e752d0b8d62ad7c81ef2531da7 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 20:44:11 -0700 Subject: [PATCH 33/35] Address PR review comments: fix grammar, log messages, step numbering, and exception cause - Fix log grammar in Http2ResponseHeaderCleanerHandler: 'There is extra whitespace' - Track lastException in SyncBenchmark retry loop for proper cause chaining - Renumber lifecycle steps 3/4 to 5/6 in BenchmarkOrchestrator - Fix misleading log message in AsyncCtlWorkload pre-population error Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../com/azure/cosmos/benchmark/BenchmarkOrchestrator.java | 4 ++-- .../main/java/com/azure/cosmos/benchmark/SyncBenchmark.java | 5 ++++- .../com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java | 2 +- .../http/Http2ResponseHeaderCleanerHandler.java | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java index acefe02df455..08c95bfe3ff2 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/BenchmarkOrchestrator.java @@ -220,11 +220,11 @@ private void runLifecycleLoop(BenchmarkConfig config) throws Exception { runWorkload(benchmarks, cycle, executor); logger.info("[LIFECYCLE] POST_WORKLOAD cycle={} timestamp={}", cycle, Instant.now()); - // 3. Close all clients + // 5. Close all clients shutdownBenchmarks(benchmarks, cycle); logger.info("[LIFECYCLE] POST_CLOSE cycle={} timestamp={}", cycle, Instant.now()); - // 4. Settle + // 6. Settle if (config.getSettleTimeMs() > 0) { logger.info(" Settling for {}ms...", config.getSettleTimeMs()); long halfSettle = config.getSettleTimeMs() / 2; diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java index 24b7b04cfe2b..545bc515a9fc 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/SyncBenchmark.java @@ -185,11 +185,13 @@ protected void init() { CompletableFuture futureResult = CompletableFuture.supplyAsync(() -> { int maxRetries = 5; + Exception lastException = null; for (int attempt = 0; attempt <= maxRetries; attempt++) { try { CosmosItemResponse itemResponse = cosmosContainer.createItem(newDoc); return toPojoizedJson(itemResponse); } catch (CosmosException ce) { + lastException = ce; if (ce.getStatusCode() == 409) { // conflict — document already exists, read it back try { @@ -214,10 +216,11 @@ protected void init() { } throw propagate(ce); } catch (Exception e) { + lastException = e; throw propagate(e); } } - throw new RuntimeException("Exhausted retries for createItem"); + throw new RuntimeException("Exhausted retries for createItem", lastException); }, executorService); diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java index d13c5ee778da..3de648c28374 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/ctl/AsyncCtlWorkload.java @@ -280,7 +280,7 @@ private void createPrePopulatedDocs(int numberOfPreCreatedDocuments) { } else { failureCount.incrementAndGet(); failedResponses.add(response); - logger.debug("Error during pre populating item {}", + logger.debug("Error during pre-populating: {}", response.getException() != null ? response.getException().getMessage() : "unknown error"); } }) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java index 965ab8cf7888..d13192c7caed 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/Http2ResponseHeaderCleanerHandler.java @@ -30,7 +30,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception CharSequence serverVersion = headers.get(SERVER_VERSION_KEY); if (serverVersion != null && serverVersion.length() > 0 && (serverVersion.charAt(0) == ' ' || serverVersion.charAt(serverVersion.length() - 1) == ' ')) { - logger.trace("There are extra white space for key {} with value {}", SERVER_VERSION_KEY, serverVersion); + logger.trace("There is extra whitespace for key {} with value {}", SERVER_VERSION_KEY, serverVersion); headers.set(SERVER_VERSION_KEY, serverVersion.toString().trim()); } From aa0fd254132a77a8f3d65cc3774e8e597f69981b Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 23:00:48 -0700 Subject: [PATCH 34/35] Fix WorkflowTest CLI tests to use JSON workload config The Configuration class was refactored to remove CLI parameters in favor of JSON-based workload config. Update readMyWritesCLI and writeThroughputCLI tests to create a temp JSON config file and pass -workloadConfig to Main.main(). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../azure/cosmos/benchmark/WorkflowTest.java | 93 ++++++++++++++----- 1 file changed, 70 insertions(+), 23 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java index 374f67ef1c09..7a824b84d258 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/WorkflowTest.java @@ -11,13 +11,14 @@ import com.azure.cosmos.models.IncludedPath; import com.azure.cosmos.models.IndexingPolicy; import com.azure.cosmos.models.PartitionKeyDefinition; -import org.apache.commons.lang3.StringUtils; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import reactor.core.scheduler.Schedulers; +import java.io.File; +import java.io.FileWriter; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -32,17 +33,22 @@ public class WorkflowTest { @Test(groups = "fast", timeOut = TIMEOUT) public void readMyWritesCLI() throws Exception { - String cmdFormat = "-serviceEndpoint %s -masterKey %s" + - " -databaseId %s -collectionId %s" + - " -consistencyLevel SESSION -concurrency 2 -numberOfOperations 123" + - " -operation ReadMyWrites -connectionMode DIRECT -numberOfPreCreatedDocuments 100"; - - String cmd = String.format(cmdFormat, - TestConfigurations.HOST, - TestConfigurations.MASTER_KEY, - database.getId(), - collection.getId()); - Main.main(StringUtils.split(cmd)); + File configFile = createWorkloadConfigFile( + TestConfigurations.HOST, + TestConfigurations.MASTER_KEY, + database.getId(), + collection.getId(), + "ReadMyWrites", + "DIRECT", + "SESSION", + 2, + 123, + 100); + try { + Main.main(new String[]{"-workloadConfig", configFile.getAbsolutePath()}); + } finally { + configFile.delete(); + } } @Test(dataProvider = "collectionLinkTypeArgProvider", groups = "fast", timeOut = TIMEOUT) @@ -85,17 +91,22 @@ protected void onSuccess() { @Test(groups = "fast", timeOut = TIMEOUT) public void writeThroughputCLI() throws Exception { - String cmdFormat = "-serviceEndpoint %s -masterKey %s" + - " -databaseId %s -collectionId %s" + - " -consistencyLevel SESSION -concurrency 2 -numberOfOperations 1000" + - " -operation WriteThroughput -connectionMode DIRECT"; - - String cmd = String.format(cmdFormat, - TestConfigurations.HOST, - TestConfigurations.MASTER_KEY, - database.getId(), - collection.getId()); - Main.main(StringUtils.split(cmd)); + File configFile = createWorkloadConfigFile( + TestConfigurations.HOST, + TestConfigurations.MASTER_KEY, + database.getId(), + collection.getId(), + "WriteThroughput", + "DIRECT", + "SESSION", + 2, + 1000, + 0); + try { + Main.main(new String[]{"-workloadConfig", configFile.getAbsolutePath()}); + } finally { + configFile.delete(); + } } @Test(dataProvider = "collectionLinkTypeArgProvider", groups = "fast", timeOut = TIMEOUT) @@ -292,6 +303,42 @@ public void afterClass() { Utils.safeClose(housekeepingClient); } + private File createWorkloadConfigFile( + String serviceEndpoint, + String masterKey, + String databaseId, + String containerId, + String operation, + String connectionMode, + String consistencyLevel, + int concurrency, + int numberOfOperations, + int numberOfPreCreatedDocuments) throws Exception { + + String json = String.format( + "{ \"tenants\": [{ " + + "\"serviceEndpoint\": \"%s\", " + + "\"masterKey\": \"%s\", " + + "\"databaseId\": \"%s\", " + + "\"containerId\": \"%s\", " + + "\"operation\": \"%s\", " + + "\"connectionMode\": \"%s\", " + + "\"consistencyLevel\": \"%s\", " + + "\"concurrency\": %d, " + + "\"numberOfOperations\": %d, " + + "\"numberOfPreCreatedDocuments\": %d " + + "}] }", + serviceEndpoint, masterKey, databaseId, containerId, + operation, connectionMode, consistencyLevel, + concurrency, numberOfOperations, numberOfPreCreatedDocuments); + + File tempFile = File.createTempFile("workload-config-", ".json"); + try (FileWriter writer = new FileWriter(tempFile)) { + writer.write(json); + } + return tempFile; + } + DocumentCollection getCollectionDefinitionWithRangeRangeIndex() { PartitionKeyDefinition partitionKeyDef = new PartitionKeyDefinition(); ArrayList paths = new ArrayList<>(); From ff329868a375670b2dbb579ae483bc9a54a7b318 Mon Sep 17 00:00:00 2001 From: Annie Liang Date: Tue, 17 Mar 2026 23:03:04 -0700 Subject: [PATCH 35/35] Fix ConsistencyLevel parsing to handle display names like BoundedStaleness The ConsistencyLevel enum uses SCREAMING_SNAKE_CASE (BOUNDED_STALENESS) but config values use PascalCase display names (BoundedStaleness). Simple toUpperCase() + valueOf() fails for multi-word values. Match by both display name and enum name case-insensitively. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../com/azure/cosmos/benchmark/TenantWorkloadConfig.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java index 03f43408ff26..20d3838d3375 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/main/java/com/azure/cosmos/benchmark/TenantWorkloadConfig.java @@ -335,6 +335,12 @@ public ConnectionMode getConnectionMode() { public ConsistencyLevel getConsistencyLevel() { if (consistencyLevel == null) return ConsistencyLevel.SESSION; + for (ConsistencyLevel level : ConsistencyLevel.values()) { + if (level.toString().equalsIgnoreCase(consistencyLevel) + || level.name().equalsIgnoreCase(consistencyLevel)) { + return level; + } + } return ConsistencyLevel.valueOf(consistencyLevel.toUpperCase()); }