public async Task BatchResponseDeserializationAsync() { using CosmosClient cosmosClient = MockCosmosUtil.CreateMockCosmosClient(); ContainerInternal containerCore = (ContainerInlineCore)cosmosClient.GetDatabase("db").GetContainer("cont"); List <TransactionalBatchOperationResult> results = new List <TransactionalBatchOperationResult> { new TransactionalBatchOperationResult(HttpStatusCode.Conflict), new TransactionalBatchOperationResult(HttpStatusCode.OK) { ResourceStream = new MemoryStream(new byte[] { 0x41, 0x42 }, index: 0, count: 2, writable: false, publiclyVisible: true), RequestCharge = 2.5, ETag = "1234", RetryAfter = TimeSpan.FromMilliseconds(360) } }; MemoryStream responseContent = await new BatchResponsePayloadWriter(results).GeneratePayloadAsync(); CosmosSerializer serializer = new CosmosJsonDotNetSerializer(); SinglePartitionKeyServerBatchRequest batchRequest = await SinglePartitionKeyServerBatchRequest.CreateAsync( partitionKey : Cosmos.PartitionKey.None, operations : new ArraySegment <ItemBatchOperation>( new ItemBatchOperation[] { new ItemBatchOperation(OperationType.Read, operationIndex: 0, id: "someId", containerCore: containerCore), new ItemBatchOperation(OperationType.Read, operationIndex: 0, id: "someId", containerCore: containerCore) }), serializerCore : MockCosmosUtil.Serializer, trace : NoOpTrace.Singleton, cancellationToken : CancellationToken.None); ResponseMessage response = new ResponseMessage((HttpStatusCode)StatusCodes.MultiStatus) { Content = responseContent }; response.Headers.Session = Guid.NewGuid().ToString(); response.Headers.ActivityId = Guid.NewGuid().ToString(); TransactionalBatchResponse batchResponse = await TransactionalBatchResponse.FromResponseMessageAsync( response, batchRequest, MockCosmosUtil.Serializer, true, NoOpTrace.Singleton, CancellationToken.None); Assert.IsNotNull(batchRequest); Assert.AreEqual(HttpStatusCode.Conflict, batchResponse.StatusCode); Assert.AreEqual(2, batchResponse.Count); Assert.AreEqual(response.Headers.Session, batchResponse[0].SessionToken); Assert.AreEqual(response.Headers.Session, batchResponse[1].SessionToken); Assert.AreEqual(response.Headers.ActivityId, batchResponse[0].ActivityId); Assert.AreEqual(response.Headers.ActivityId, batchResponse[1].ActivityId); CosmosBatchOperationResultEqualityComparer comparer = new CosmosBatchOperationResultEqualityComparer(); Assert.IsTrue(comparer.Equals(results[0], batchResponse[0])); Assert.IsTrue(comparer.Equals(results[1], batchResponse[1])); }
public async Task BatchResponseDeserializationAsync() { List <BatchOperationResult> results = new List <BatchOperationResult>(); results.Add(new BatchOperationResult(HttpStatusCode.Conflict)); results.Add( new BatchOperationResult(HttpStatusCode.OK) { ResourceStream = new MemoryStream(new byte[] { 0x41, 0x42 }, index: 0, count: 2, writable: false, publiclyVisible: true), ETag = "1234" }); results.Add( new BatchOperationResult((HttpStatusCode)StatusCodes.TooManyRequests) { RetryAfter = TimeSpan.FromMilliseconds(360) }); MemoryStream responseContent = await new BatchResponsePayloadWriter(results).GeneratePayloadAsync(); CosmosSerializer serializer = new CosmosJsonDotNetSerializer(); SinglePartitionKeyServerBatchRequest batchResponse = await SinglePartitionKeyServerBatchRequest.CreateAsync( partitionKey : Cosmos.PartitionKey.None, operations : new ArraySegment <ItemBatchOperation>( new ItemBatchOperation[] { new ItemBatchOperation(OperationType.Read, operationIndex: 0, id: "someId") }), maxBodyLength : 100, maxOperationCount : 1, serializer : serializer, cancellationToken : CancellationToken.None); BatchResponse batchresponse = await BatchResponse.PopulateFromContentAsync( new ResponseMessage(HttpStatusCode.OK) { Content = responseContent }, batchResponse, serializer); Assert.IsNotNull(batchresponse); Assert.IsTrue(batchresponse.IsSuccessStatusCode); Assert.AreEqual(3, batchresponse.Count); CosmosBatchOperationResultEqualityComparer comparer = new CosmosBatchOperationResultEqualityComparer(); Assert.IsTrue(comparer.Equals(results[0], batchresponse[0])); Assert.IsTrue(comparer.Equals(results[1], batchresponse[1])); Assert.IsTrue(comparer.Equals(results[2], batchresponse[2])); }
public async Task BatchResponseDeserializationAsync() { List <TransactionalBatchOperationResult> results = new List <TransactionalBatchOperationResult>(); results.Add(new TransactionalBatchOperationResult(HttpStatusCode.Conflict)); results.Add( new TransactionalBatchOperationResult(HttpStatusCode.OK) { ResourceStream = new MemoryStream(new byte[] { 0x41, 0x42 }, index: 0, count: 2, writable: false, publiclyVisible: true), RequestCharge = 2.5, ETag = "1234", RetryAfter = TimeSpan.FromMilliseconds(360) }); MemoryStream responseContent = await new BatchResponsePayloadWriter(results).GeneratePayloadAsync(); CosmosSerializer serializer = new CosmosJsonDotNetSerializer(); SinglePartitionKeyServerBatchRequest batchRequest = await SinglePartitionKeyServerBatchRequest.CreateAsync( partitionKey : Cosmos.PartitionKey.None, operations : new ArraySegment <ItemBatchOperation>( new ItemBatchOperation[] { new ItemBatchOperation(OperationType.Read, operationIndex: 0, id: "someId"), new ItemBatchOperation(OperationType.Read, operationIndex: 0, id: "someId") }), serializerCore : MockCosmosUtil.Serializer, cancellationToken : CancellationToken.None); TransactionalBatchResponse batchResponse = await TransactionalBatchResponse.FromResponseMessageAsync( new ResponseMessage((HttpStatusCode)StatusCodes.MultiStatus) { Content = responseContent }, batchRequest, MockCosmosUtil.Serializer); Assert.IsNotNull(batchRequest); Assert.AreEqual(HttpStatusCode.Conflict, batchResponse.StatusCode); Assert.AreEqual(2, batchResponse.Count); CosmosBatchOperationResultEqualityComparer comparer = new CosmosBatchOperationResultEqualityComparer(); Assert.IsTrue(comparer.Equals(results[0], batchResponse[0])); Assert.IsTrue(comparer.Equals(results[1], batchResponse[1])); }