public void FeedToken_PartitionKey_TryParse()
        {
            FeedTokenPartitionKey token = new FeedTokenPartitionKey(new PartitionKey("test"));

            Assert.IsTrue(FeedTokenPartitionKey.TryParseInstance(token.ToString(), out FeedToken parsed));
            Assert.IsFalse(FeedTokenPartitionKey.TryParseInstance("whatever", out FeedToken _));
        }
        public void FeedToken_PartitionKeyRange_TryParse()
        {
            FeedTokenPartitionKeyRange token = new FeedTokenPartitionKeyRange("0");

            Assert.IsTrue(FeedTokenPartitionKeyRange.TryParseInstance(token.ToString(), out FeedToken parsed));
            Assert.IsTrue(FeedTokenPartitionKeyRange.TryParseInstance("1", out FeedToken _));
            Assert.IsFalse(FeedTokenPartitionKey.TryParseInstance("whatever", out FeedToken _));
        }
예제 #3
0
        public void FeedToken_PartitionKey_IsDone()
        {
            PartitionKey          pk    = new PartitionKey("test");
            FeedTokenPartitionKey token = new FeedTokenPartitionKey(pk);

            token.UpdateContinuation(Guid.NewGuid().ToString());
            Assert.IsFalse(token.IsDone);
            token.UpdateContinuation(null);
            Assert.IsTrue(token.IsDone);
        }
        public void FeedToken_PartitionKey_EnrichRequest()
        {
            PartitionKey          pk             = new PartitionKey("test");
            FeedTokenPartitionKey token          = new FeedTokenPartitionKey(pk);
            RequestMessage        requestMessage = new RequestMessage();

            token.EnrichRequest(requestMessage);
            Assert.AreEqual(pk.ToJsonString(), requestMessage.Headers.PartitionKey);

            Assert.ThrowsException <ArgumentNullException>(() => token.EnrichRequest(null));
        }
        public void IsFeedOperation_ForFeedTokenPartitionKey()
        {
            RequestMessage request = new RequestMessage();

            request.OperationType = OperationType.ReadFeed;
            request.ResourceType  = ResourceType.Document;
            FeedTokenInternal feedTokenEPKRange = new FeedTokenPartitionKey(new Cosmos.PartitionKey("0"));

            feedTokenEPKRange.EnrichRequest(request);
            Assert.IsFalse(request.IsPartitionKeyRangeHandlerRequired);
        }
        private void FeedToken_PartitionKey_Validate(PartitionKey partitionKey)
        {
            string continuationToken = "TBD";
            FeedTokenPartitionKey feedTokenPartitionKey = new FeedTokenPartitionKey(partitionKey);

            feedTokenPartitionKey.UpdateContinuation(continuationToken);
            string                serialized            = feedTokenPartitionKey.ToString();
            FeedToken             deserialized          = FeedToken.FromString(serialized);
            FeedTokenPartitionKey deserializedFeedToken = deserialized as FeedTokenPartitionKey;

            Assert.IsNotNull(deserialized, "Error deserializing to FeedTokenPartitionKey");
            Assert.AreEqual(feedTokenPartitionKey.PartitionKey.ToJsonString(), deserializedFeedToken.PartitionKey.ToJsonString());
            Assert.AreEqual(continuationToken, deserializedFeedToken.GetContinuation());
        }
        public async Task GetPartitionKeyRangesAsync_WithPKToken()
        {
            DocumentFeedResponse <Documents.PartitionKeyRange> ranges = await this.Container.ClientContext.DocumentClient.ReadPartitionKeyRangeFeedAsync(this.Container.LinkUri);

            FeedToken     feedToken      = new FeedTokenPartitionKey(new PartitionKey("TBD"));
            List <string> resolvedRanges = (await this.Container.GetPartitionKeyRangesAsync(feedToken)).ToList();

            Assert.AreEqual(1, resolvedRanges.Count, "PK value should resolve to a single range");

            foreach (string id in resolvedRanges)
            {
                Assert.IsTrue(ranges.Any(range => range.Id == id));
            }
        }