Ejemplo n.º 1
0
        public void ParsePartitionKey()
        {
            var key1 = new DateKey(new DateTime(year: 2016, month: 4, day: 1).ToUniversalTime());
            var key2 = DateKey.Parse(key1.Key);

            Assert.Equal(key1, key2);
        }
Ejemplo n.º 2
0
        private static async Task ViewNameMigration()
        {
            var account          = GetStorageAccount();
            var client           = account.CreateCloudTableClient();
            var viewNameTable    = client.GetTableReference(AzureConstants.TableNames.ViewNameDate);
            var buildResultTable = client.GetTableReference(AzureConstants.TableNames.BuildResultDate);
            var startDate        = DateTimeOffset.UtcNow - TimeSpan.FromDays(14);

            var query = new TableQuery <DynamicTableEntity>()
                        .Where(FilterUtil.SinceDate(ColumnNames.PartitionKey, startDate))
                        .Select(new[] { "PartitionKey", nameof(BuildResultEntity.ViewName) });
            var all = await AzureUtil.QueryAsync(buildResultTable, query);

            var set  = new HashSet <Tuple <DateKey, string> >();
            var list = new List <ViewNameEntity>();

            foreach (var entity in all)
            {
                var dateKey  = DateKey.Parse(entity.PartitionKey);
                var viewName = entity.Properties[nameof(BuildResultEntity.ViewName)].StringValue;
                var tuple    = Tuple.Create(dateKey, viewName);
                if (set.Add(tuple))
                {
                    list.Add(new ViewNameEntity(dateKey, viewName));
                }
            }

            await AzureUtil.InsertBatchUnordered(viewNameTable, list);
        }
Ejemplo n.º 3
0
        private static async Task CheckUnknown()
        {
            var account   = GetStorageAccount();
            var buildUtil = new BuildUtil(account);
            var date      = DateTimeOffset.UtcNow - TimeSpan.FromDays(1);
            var populator = new BuildTablePopulator(account.CreateCloudTableClient(), CreateClient(), Console.Out);
            var table     = account.CreateCloudTableClient().GetTableReference(AzureConstants.TableNames.BuildResultDate);

            foreach (var entity in buildUtil.GetBuildResultsByKindName(date, BuildResultClassification.Unknown.Name, AzureUtil.ViewNameAll))
            {
                var entityDate = DateKey.Parse(entity.PartitionKey);
                var before     = new DateKey(entityDate.Date.AddDays(-1));
                var after      = new DateKey(entityDate.Date.AddDays(1));

                var op     = TableOperation.Retrieve(before.Key, entity.RowKey);
                var result = await table.ExecuteAsync(op);

                if (result.Result != null)
                {
                    await table.ExecuteAsync(TableOperation.Delete(entity));

                    continue;
                }

                op     = TableOperation.Retrieve(after.Key, entity.RowKey);
                result = await table.ExecuteAsync(op);

                if (result.Result != null)
                {
                    await table.ExecuteAsync(TableOperation.Delete(entity));

                    continue;
                }
            }
        }
Ejemplo n.º 4
0
        private static async Task MigrateDateKeyCore <T>(string tableName)
            where T : ITableEntity, new()
        {
            Console.WriteLine($"Processing {tableName}");

            var account = GetStorageAccount();
            var table   = account.CreateCloudTableClient().GetTableReference(tableName);

            var startKey = new DateKey(DateKey.StartDate);
            var endKey   = new DateKey(DateTimeOffset.UtcNow);
            var query    = TableQueryUtil.And(
                TableQueryUtil.PartitionKey(startKey.Key, ColumnOperator.GreaterThanOrEqual),
                TableQueryUtil.PartitionKey(endKey.Key, ColumnOperator.LessThanOrEqual));
            var list = await AzureUtil.QueryAsync <T>(table, query);

            Console.WriteLine($"Processing {list.Count} entities");
            var deleteList = new List <EntityKey>();

            foreach (var entity in list)
            {
                deleteList.Add(entity.GetEntityKey());

                var dateKey     = DateKey.Parse(entity.PartitionKey);
                var dateTimeKey = new DateTimeKey(dateKey.Date, DateTimeKeyFlags.Date);
                entity.PartitionKey = dateTimeKey.Key;
            }

            Console.WriteLine("Writing new values");
            await AzureUtil.InsertBatchUnordered(table, list);

            Console.WriteLine("Deleting old values");
            await AzureUtil.DeleteBatchUnordered(table, deleteList);
        }