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 }
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); }