示例#1
0
        public void SumTest()
        {
            StorageRunnerContext.RunOnTable(storage,
                                            "jwtesttablea" + Guid.NewGuid().ToString().Substring(0, 8),
                                            (cloudTable) =>
            {
                var entity = new DemoTableEntity
                {
                    PartitionKey = "PartitionKey",
                    RowKey       = "RowKey",
                    Name         = "Tomcat",
                    Count        = 3,
                };
                TableOperation insertOperation = TableOperation.Insert(entity);
                cloudTable.Execute(insertOperation);

                entity = new DemoTableEntity
                {
                    PartitionKey = "PartitionKey",
                    RowKey       = "RowKey2",
                    Name         = "jerry",
                    Count        = 100,
                };
                insertOperation = TableOperation.Insert(entity);
                cloudTable.Execute(insertOperation);

                var query = cloudTable.CreateQuery <DemoTableEntity>()
                            .Where(p => p.PartitionKey == "PartitionKey").AsEnumerable();

                Console.WriteLine("Total count:" + query.Sum(p => p.Count));
            });
        }
示例#2
0
        public void InsertOrUpdate()
        {
            StorageRunnerContext.RunOnTable(storage,
                                            "jwtesttablea" + Guid.NewGuid().ToString().Substring(0, 8),
                                            (cloudTable) =>
            {
                TableOperation retrieveOperation = TableOperation.Retrieve <DemoTableEntity>("PartitionKey", "Tomcat");
                TableResult retrieveResult       = cloudTable.Execute(retrieveOperation);
                DemoTableEntity result           = (DemoTableEntity)retrieveResult.Result;
                if (result != null)
                {
                    Console.WriteLine("name=" + result.Name);
                }
                else
                {
                    Console.WriteLine("It's null.");
                }

                result = new DemoTableEntity()
                {
                    PartitionKey = "PartitionKey", RowKey = "Tomcat", Rate = 1.55
                };
                TableOperation insertOrUpdateOp = TableOperation.InsertOrReplace(result);
                cloudTable.Execute(insertOrUpdateOp);

                result = (DemoTableEntity)cloudTable.Execute(retrieveOperation).Result;
                Console.WriteLine(result.Timestamp.ToString());

                TableOperation mergeOp = TableOperation.Merge(result);
                cloudTable.Execute(mergeOp);

                result = (DemoTableEntity)cloudTable.Execute(retrieveOperation).Result;
                Console.WriteLine(result.Timestamp.ToString());
            });
        }
示例#3
0
        public void ClientEncryption4Queue()
        {
            var    kv       = new KeyVaultTester("624c0e2f-6122-4b26-a229-06431f82e6b3", "C35CBFF9FA6C51E51E1DE97B6D1E246F27661301", "https://kvsignalrdeva.vault.azure.net");
            var    name     = "AzSignalR-Storage-ClientEncryptionKey";
            var    rsaValue = kv.GetSecretAsync(name).Result;
            string kid      = "signalrkeyid";

            StorageRunnerContext.RunOnQueue(storage,
                                            "jwtestqueuea" + Guid.NewGuid().ToString().Substring(0, 8),
                                            (cloudQueue) =>
            {
                var csp1 = new RSACryptoServiceProvider();
                csp1.FromXmlString(rsaValue);
                var rsa1 = new RsaKey(kid, csp1);
                QueueEncryptionPolicy policy = new QueueEncryptionPolicy(rsa1, null);
                QueueRequestOptions options  = new QueueRequestOptions()
                {
                    EncryptionPolicy = policy
                };
                cloudQueue.AddMessage(new CloudQueueMessage("messageContentABC"), null, null, options, null);

                // Retrieve message
                var csp2 = new RSACryptoServiceProvider();
                csp2.FromXmlString(rsaValue);
                var rsa2 = new RsaKey(kid, csp2);
                QueueEncryptionPolicy policy2 = new QueueEncryptionPolicy(rsa2, null);
                QueueRequestOptions options2  = new QueueRequestOptions()
                {
                    EncryptionPolicy = policy2
                };
                CloudQueueMessage retrMessage = cloudQueue.GetMessage(null, options2, null);
                Console.WriteLine(retrMessage.AsString);
            });
        }
示例#4
0
        public void TableCaseQuery()
        {
            // The conclusion is that: `Equals()` using OrdinalIgnoreCase is that working at all.

            StorageRunnerContext.RunOnTable(storage,
                                            "jwtesttablea" + Guid.NewGuid().ToString().Substring(0, 8),
                                            (cloudTable) =>
            {
                var entity = new DemoTableEntity
                {
                    PartitionKey     = "PartitionKey",
                    RowKey           = "RowKey",
                    Name             = "Tomcat",
                    CloudEnvironment = CloudEnvironment.AzureChina.ToString()
                };
                TableOperation insertOperation = TableOperation.Insert(entity);
                cloudTable.Execute(insertOperation);

                var query = cloudTable.CreateQuery <DemoTableEntity>()
                            .Where(p => p.PartitionKey == "PartitionKey" &&
                                   p.Name.Equals("Tomcat", StringComparison.OrdinalIgnoreCase)).ToArray();

                Console.WriteLine("name=" + query.FirstOrDefault()?.Name);
            });
        }
示例#5
0
        public void ClientEncryption4Table()
        {
            StorageRunnerContext.RunOnTable(storage,
                                            "jwtesttablea" + Guid.NewGuid().ToString().Substring(0, 8),
                                            (cloudTable) =>
            {
                RsaKey key = new RsaKey(Guid.NewGuid().ToString());
                TableEncryptionPolicy policy = new TableEncryptionPolicy(key, null);
                TableRequestOptions options  = new TableRequestOptions()
                {
                    EncryptionPolicy   = policy,
                    EncryptionResolver = (pk, rk, propName) =>
                    {
                        if (propName == "Name")
                        {
                            return(true);
                        }
                        return(false);
                    }
                };

                TableOperation retrieveOperation = TableOperation.Retrieve <DemoTableEntity>("PartitionKey", "Tomcat");
                TableResult retrieveResult       = cloudTable.Execute(retrieveOperation, options);
                DemoTableEntity result           = (DemoTableEntity)retrieveResult.Result;
                if (result != null)
                {
                    Console.WriteLine("name=" + result.Name);
                }
                else
                {
                    Console.WriteLine("It's null.");
                }

                result = new DemoTableEntity()
                {
                    PartitionKey = "PartitionKey", RowKey = "Tomcat", Rate = 1.55, Name = "originalname"
                };
                TableOperation insertOrUpdateOp = TableOperation.Insert(result);
                cloudTable.Execute(insertOrUpdateOp, options);

                result = (DemoTableEntity)cloudTable.Execute(retrieveOperation, options).Result;
                Console.WriteLine(result.Timestamp.ToString());

                // https://github.com/Azure/azure-storage-net/blob/c1966e1cd64d5eb8e40733ebd6b07b6b8e8fb136/Lib/ClassLibraryCommon/Table/Protocol/TableOperationHttpRequestFactory.cs
                // Merge or InsertOrMerge are not supported.
                result.Max = 1000;
                TableOperation mergeOps = TableOperation.Merge(result);
                result = (DemoTableEntity)cloudTable.Execute(mergeOps).Result;

                result = (DemoTableEntity)cloudTable.Execute(retrieveOperation, options).Result;
                Console.WriteLine(result.Timestamp.ToString());

                var segment = cloudTable.ExecuteQuerySegmented(cloudTable.CreateQuery <DemoTableEntity>(), null, options);
                var list    = segment.Results;
                Console.WriteLine(list.Count);
            });
        }
示例#6
0
        public void QueueMessageVisibleTest()
        {
            StorageRunnerContext.RunOnQueue(storage,
                                            "jwtestqueue" + Guid.NewGuid().ToString().Substring(0, 8),
                                            (queue) =>
            {
                var msg = new CloudQueueMessage("any string");
                queue.AddMessage(msg);

                var gm = queue.GetMessage(TimeSpan.FromMinutes(3));
                queue.UpdateMessage(gm, TimeSpan.FromSeconds(5), MessageUpdateFields.Visibility);
                queue.UpdateMessage(gm, TimeSpan.FromMinutes(5), MessageUpdateFields.Visibility);
                queue.UpdateMessage(gm, TimeSpan.FromSeconds(5), MessageUpdateFields.Visibility);
            });
        }
示例#7
0
 public void EntityDoesntExistTest()
 {
     StorageRunnerContext.RunOnTable(storage,
                                     "jwtesttablea" + Guid.NewGuid().ToString().Substring(0, 8),
                                     (cloudTable) =>
     {
         TableOperation retrieveOperation = TableOperation.Retrieve <DemoTableEntity>("PartitionKey", "Tomcat");
         TableResult retrieveResult       = cloudTable.Execute(retrieveOperation);
         DemoTableEntity result           = (DemoTableEntity)retrieveResult.Result;
         if (result != null)
         {
             Console.WriteLine("name=" + result.Name);
         }
         else
         {
             Console.WriteLine("It's null.");
         }
     });
 }
示例#8
0
        public void IntricateQuery()
        {
            StorageRunnerContext.RunOnTable(storage,
                                            "jwtesttablea" + Guid.NewGuid().ToString().Substring(0, 8),
                                            (cloudTable) =>
            {
                var entity = new DemoTableEntity
                {
                    PartitionKey     = "PartitionKey",
                    RowKey           = "RowKey",
                    Name             = "Tomcat",
                    Count            = 0,
                    Max              = 0,
                    CloudEnvironment = CloudEnvironment.AzureChina.ToString()
                };
                TableOperation insertOperation = TableOperation.Insert(entity);
                cloudTable.Execute(insertOperation);

                var entity2 = new DemoTableEntity
                {
                    PartitionKey     = "PartitionKey",
                    RowKey           = "RowKey2",
                    Name             = "Tomcat2",
                    Count            = 10,
                    Max              = 5,
                    CloudEnvironment = CloudEnvironment.AzureChina.ToString()
                };
                TableOperation insertOperation2 = TableOperation.Insert(entity2);
                cloudTable.Execute(insertOperation2);

                // cannot compare columns in Azure table storage
                TableQuery <DemoTableEntity> query = new TableQuery <DemoTableEntity>().Where(AndMultipleFilters(
                                                                                                  TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "PartitionKey"),
                                                                                                  TableQuery.GenerateFilterConditionForInt("Max", QueryComparisons.NotEqual, 1)
                                                                                                  ));

                var entities = cloudTable.ExecuteQuery(query);

                Console.WriteLine("Count:" + entities.Count());
                Console.WriteLine("name=" + entities.FirstOrDefault()?.Name);
            });
        }