public static EntityKey GetDateEntityKey(DateTimeOffset buildDate, BuildId buildId, string identifier) { identifier = AzureUtil.NormalizeKey(identifier, '_'); return(new EntityKey( new DateKey(buildDate).Key, $"{new BuildKey(buildId).Key}-{identifier}")); }
public BuildResultEntity( BuildId buildId, DateTimeOffset buildDateTime, TimeSpan duration, string jobKind, string machineName, BuildResultClassification classification, PullRequestInfo prInfo) { JobName = buildId.JobId.Name; JobKind = jobKind; ViewName = AzureUtil.GetViewName(BuildId.JobId); BuildNumber = buildId.Number; ClassificationKindRaw = classification.Kind.ToString(); ClassificationName = classification.Name; BuildDateTime = buildDateTime.UtcDateTime; MachineName = machineName; IsPullRequest = JobUtil.IsPullRequestJobName(buildId.JobId); DurationSeconds = (int)duration.TotalSeconds; if (prInfo != null) { PullRequestId = prInfo.Id; PullRequestAuthor = prInfo.Author; PullRequestAuthorEmail = prInfo.AuthorEmail; PullRequestUrl = prInfo.PullUrl; PullRequestSha1 = prInfo.Sha1; Debug.Assert(HasPullRequestInfo); Debug.Assert(PullRequestInfo != null); } Debug.Assert(BuildDateTime.Kind == DateTimeKind.Utc); }
public async Task <List <T> > QueryAsync(DateTimeOffset date, CancellationToken cancellationToken = default(CancellationToken)) { var key = DateTimeKey.GetDateKey(date); var query = TableQueryUtil.PartitionKey(key); return(await AzureUtil.QueryAsync <T>(Table, query, cancellationToken)); }
/// <summary> /// Is this build alreadiy fully populated. /// </summary> public async Task <bool> IsPopulated(BuildId buildId, CancellationToken cancellationToken = default(CancellationToken)) { var key = BuildResultEntity.GetExactEntityKey(buildId); var entity = await AzureUtil.QueryAsync <DynamicTableEntity>(_buildResultExactTable, key, cancellationToken); return(entity != null); }
public static EntityKey GetExactEntityKey(BuildId buildId) { var partitionKey = AzureUtil.NormalizeKey(buildId.JobId.Name, '_'); var rowKey = buildId.Number.ToString("0000000000"); return(new EntityKey(partitionKey, rowKey)); }
public EntityKey(string partitionKey, string rowKey) { Debug.Assert(!AzureUtil.IsIllegalKey(partitionKey)); Debug.Assert(!AzureUtil.IsIllegalKey(rowKey)); PartitionKey = partitionKey; RowKey = rowKey; }
/// <summary> /// Ensure the view name for the given job is present in the <see cref="AzureConstants.TableNames.ViewNameDate"/> table. /// </summary> private async Task PopulateViewName(JobId jobId, DateTimeOffset buildDate) { try { var dateKey = new DateKey(buildDate); var entity = new ViewNameEntity(dateKey, AzureUtil.GetViewName(jobId)); var op = TableOperation.Insert(entity); await _viewNameDateTable.ExecuteAsync(op); } catch (StorageException ex) when(ex.RequestInformation.HttpStatusCode == 409) { // It's expected to get errors here because we're inserting duplicate data. All that matters is the // data is present in the table. } }
private async Task PopulateUnitTestFailure(BuildInfo buildInfo, string jobKind, PullRequestInfo prInfo) { // TODO: Resolve this with CoreCLR. They are producing way too many failures at the moment though // and we need to stop uploading 50,000 rows a day until we can resolve this. if (buildInfo.Id.JobName.Contains("dotnet_coreclr")) { return; } var buildId = buildInfo.Id; var testCaseNames = _client.GetFailedTestCases(buildId); var entityList = testCaseNames .Select(x => BuildFailureEntity.CreateTestCaseFailure(buildInfo.Date, buildId, x, jobKind: jobKind, machineName: buildInfo.MachineName, prInfo: prInfo)) .ToList(); EnsureTestCaseNamesUnique(entityList); await AzureUtil.InsertBatchUnordered(_buildFailureExactTable, entityList.Select(x => x.CopyExact())); await AzureUtil.InsertBatchUnordered(_buildFailureDateTable, entityList.Select(x => x.CopyDate())); }
public BuildFailureEntity(BuildId buildId, string identifier, DateTimeOffset buildDate, BuildFailureKind kind, string jobKind, string machineName, PullRequestInfo prInfo) { JobName = buildId.JobName; JobKind = jobKind; ViewName = AzureUtil.GetViewName(buildId.JobId); BuildNumber = buildId.Number; Identifier = identifier; BuildFailureKindRaw = kind.ToString(); BuildDateTime = buildDate.UtcDateTime; IsPullRequest = JobUtil.IsPullRequestJobName(buildId.JobId); MachineName = machineName; if (prInfo != null) { PullRequestId = prInfo.Id; PullRequestAuthor = prInfo.Author; PullRequestAuthorEmail = prInfo.AuthorEmail; PullRequestUrl = prInfo.PullUrl; PullRequestSha1 = prInfo.Sha1; Debug.Assert(HasPullRequestInfo); Debug.Assert(PullRequestInfo != null); } }
public static string NormalizeTestCaseName(string testCaseName) { return(AzureUtil.NormalizeKey(testCaseName, '_')); }
public static EntityKey GetExactEntityKey(BuildId buildId, string identifier) { return(new EntityKey( AzureUtil.NormalizeKey(identifier, '_'), new BuildKey(buildId).Key)); }
public async Task <List <T> > QueryAsync(DateTimeOffset startDate, DateTimeOffset endDate, CancellationToken cancellationToken = default(CancellationToken)) { var query = GetQueryString(startDate, endDate); return(await AzureUtil.QueryAsync <T>(Table, query, cancellationToken)); }
public IEnumerable <T> Query(DateTimeOffset date, CancellationToken cancellationToken = default(CancellationToken)) { var key = DateTimeKey.GetDateKey(date); return(AzureUtil.Query <T>(Table, TableQueryUtil.PartitionKey(key))); }
public IEnumerable <T> Query(DateTimeOffset startDate, DateTimeOffset endDate, CancellationToken cancellationToken = default(CancellationToken)) { var query = GetQueryString(startDate, endDate); return(AzureUtil.Query <T>(Table, query)); }
public static string GetRowKey(DateTime runDate, BuildSource buildSource) { var machineName = AzureUtil.NormalizeKey(buildSource.MachineName, '-'); return($"{machineName}-{(long)runDate.Ticks}"); }