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