Example #1
0
        private static async Task Test()
        {
            var account     = GetStorageAccount();
            var tableClient = account.CreateCloudTableClient();
            var table       = tableClient.GetTableReference(AzureConstants.TableNames.BuildResultDate);
            var query       = new TableQuery <DynamicTableEntity>()
                              .Where(TableQueryUtil.PartitionKey((new DateKey(DateTimeOffset.UtcNow - TimeSpan.FromDays(2))).Key, ColumnOperator.GreaterThanOrEqual))
                              .Select(new[] { "JobName" });
            var nameSet = new HashSet <string>();
            var kindSet = new HashSet <string>();

            foreach (var entity in table.ExecuteQuery(query))
            {
                var name = entity["JobName"].StringValue;
                if (nameSet.Add(name))
                {
                    var id = JobId.ParseName(name);
                    try
                    {
                        var client = CreateClient(jobId: id);
                        var kind   = await client.GetJobKindAsync(id);

                        if (kindSet.Add(kind))
                        {
                            Console.WriteLine(kind);
                        }
                    }
                    catch
                    {
                        // Ignore
                    }
                }
            }
        }
Example #2
0
        private static async Task TestFailureYesterday(int days = -1)
        {
            var account     = GetStorageAccount();
            var tableClient = account.CreateCloudTableClient();
            var table       = tableClient.GetTableReference(TableNames.BuildState);
            var date        = DateTimeOffset.UtcNow.AddDays(days);
            var query       = TableQueryUtil.And(
                TableQueryUtil.PartitionKey(DateTimeKey.GetDateKey(date)),
                TableQueryUtil.Column(nameof(BuildStateEntity.IsBuildFinished), true),
                TableQueryUtil.Column(nameof(BuildStateEntity.IsDataComplete), false));
            var list = await AzureUtil.QueryAsync <BuildStateEntity>(table, query);

            foreach (var entity in list)
            {
                var populator = new BuildTablePopulator(tableClient, CounterUtilFactory, CreateClient(entity.BoundBuildId), TextWriter.Null);
                try
                {
                    Console.Write($"{entity.BuildId} ... ");
                    await populator.PopulateBuild(entity.BoundBuildId);

                    Console.WriteLine("good");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("ERRROR");
                    Console.WriteLine(ex);
                }
            }
        }
Example #3
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);
        }
Example #4
0
            public async Task InsertSamePartitionKey()
            {
                var key   = "test";
                var count = AzureUtil.MaxBatchCount * 2;
                var list  = GetSamePartitionList(count, key);
                await AzureUtil.InsertBatch(_table, list);

                var found = await AzureUtil.QueryAsync <DynamicTableEntity>(_table, TableQueryUtil.PartitionKey(key));

                Assert.Equal(count, found.Count);
            }
Example #5
0
        public List <string> GetViewNames(DateTimeOffset startDate)
        {
            var key          = DateTimeKey.GetDateKey(startDate);
            var filter       = TableQueryUtil.PartitionKey(key, ColumnOperator.GreaterThanOrEqual);
            var query        = new TableQuery <ViewNameEntity>().Where(filter);
            var viewNameList = _viewNameDateTable.ExecuteQuery(query);

            var list = new List <string>();

            list.Add(AzureUtil.ViewNameAll);
            list.AddRange(viewNameList.Select(x => x.ViewName).Distinct());
            return(list);
        }
Example #6
0
        public async Task StatusRefresh()
        {
            var key   = BuildStateEntity.GetPartitionKey(DateTimeOffset.UtcNow);
            var table = _storageAccount.CreateCloudTableClient().GetTableReference(TableNames.BuildState);
            var query = TableQueryUtil.PartitionKey(key);
            var list  = await AzureUtil.QueryAsync <BuildStateEntity>(table, query);

            var queue = _storageAccount.CreateCloudQueueClient().GetQueueReference(QueueNames.ProcessBuild);

            foreach (var entity in list.Where(x => !x.IsDataComplete))
            {
                var buildMessage = new BuildStateMessage(entity.BuildStateKey, entity.BoundBuildId);
                var queueMessage = new CloudQueueMessage(JsonConvert.SerializeObject(buildMessage));
                await queue.AddMessageAsync(queueMessage);
            }
        }