Ejemplo n.º 1
0
        public void RetrieveViaXStoreThenEnableRTableThenDeleteViaRTable()
        {
            // This issue happens when we transition such:
            // 1. we Retrieve using an XStore lib.
            // 2. switched to RTable lib.
            // 3. then Delete the entry using RTable lib.
            string jobType = "jobType-RetrieveXStoreEntity";
            string jobId   = "jobId-RetrieveXStoreEntity";

            //
            // Retrieve using XStore library
            //
            string partitionKey;
            string rowKey;

            SampleXStoreEntity.GenerateKeys(
                this.GenerateJobType(jobType, 0),
                this.GenerateJobId(jobId, 0, 0),
                out partitionKey,
                out rowKey);
            TableOperation retrieveOperation = TableOperation.Retrieve <SampleXStoreEntity>(partitionKey, rowKey);
            TableResult    retrieveResult    = this.xstoreCloudTable.Execute(retrieveOperation);

            Assert.IsNotNull(retrieveResult, "retrieveResult = null");
            SampleXStoreEntity retrievedEntity = (SampleXStoreEntity)retrieveResult.Result;

            Assert.AreEqual(
                this.GenerateMessage(this.message, 0, 0),
                retrievedEntity.Message,
                "Retrieve(): Message mismatch");


            //
            // we switch to RTable and convertXSToreTableMode = true
            //
            Assert.True(this.configurationWrapper.IsConvertToRTableMode(), "Convert flag should be True");

            //
            // Delete using RTable library
            //
            InitDynamicReplicatedTableEntity deleteTableEntity = SampleXStoreEntity.ToInitDynamicReplicatedTableEntity(retrievedEntity);

            TableOperation deleteOperation = TableOperation.Delete(deleteTableEntity);
            TableResult    deleteResult    = this.repTable.Execute(deleteOperation);

            Assert.IsNotNull(deleteResult, "deleteResult = null");

            retrieveOperation = TableOperation.Retrieve(partitionKey, rowKey);
            retrieveResult    = this.repTable.Execute(retrieveOperation);
            Assert.IsNotNull(retrieveResult, "retrieveResult = null");
            Assert.AreEqual(retrieveResult.HttpStatusCode, (int)HttpStatusCode.NotFound, "entry should not exist!");

            this.PerformInsertOperationAndValidate(jobType, jobId, this.message);
            this.PerformRetrieveOperationAndValidate(jobType, jobId, this.message, true); // check _rtable_ViewId
        }
Ejemplo n.º 2
0
        public static InitDynamicReplicatedTableEntity ToInitDynamicReplicatedTableEntity(SampleXStoreEntity xstoreEntity)
        {
            IDictionary <string, EntityProperty> properties = new Dictionary <string, EntityProperty>();

            // we could reflect, but keeping it simple.
            properties.Add("JobType", new EntityProperty(xstoreEntity.JobType));
            properties.Add("JobId", new EntityProperty(xstoreEntity.JobId));
            properties.Add("Message", new EntityProperty(xstoreEntity.Message));

            InitDynamicReplicatedTableEntity entity = new InitDynamicReplicatedTableEntity(
                xstoreEntity.PartitionKey,
                xstoreEntity.RowKey,
                xstoreEntity.ETag,
                properties);

            return(entity);
        }