Esempio n. 1
0
 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}"));
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        public static EntityKey GetExactEntityKey(BuildId buildId)
        {
            var partitionKey = AzureUtil.NormalizeKey(buildId.JobId.Name, '_');
            var rowKey       = buildId.Number.ToString("0000000000");

            return(new EntityKey(partitionKey, rowKey));
        }
Esempio n. 6
0
 public EntityKey(string partitionKey, string rowKey)
 {
     Debug.Assert(!AzureUtil.IsIllegalKey(partitionKey));
     Debug.Assert(!AzureUtil.IsIllegalKey(rowKey));
     PartitionKey = partitionKey;
     RowKey       = rowKey;
 }
Esempio n. 7
0
 /// <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.
     }
 }
Esempio n. 8
0
        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()));
        }
Esempio n. 9
0
 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);
     }
 }
Esempio n. 10
0
 public static string NormalizeTestCaseName(string testCaseName)
 {
     return(AzureUtil.NormalizeKey(testCaseName, '_'));
 }
Esempio n. 11
0
 public static EntityKey GetExactEntityKey(BuildId buildId, string identifier)
 {
     return(new EntityKey(
                AzureUtil.NormalizeKey(identifier, '_'),
                new BuildKey(buildId).Key));
 }
Esempio n. 12
0
        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));
        }
Esempio n. 13
0
        public IEnumerable <T> Query(DateTimeOffset date, CancellationToken cancellationToken = default(CancellationToken))
        {
            var key = DateTimeKey.GetDateKey(date);

            return(AzureUtil.Query <T>(Table, TableQueryUtil.PartitionKey(key)));
        }
Esempio n. 14
0
        public IEnumerable <T> Query(DateTimeOffset startDate, DateTimeOffset endDate, CancellationToken cancellationToken = default(CancellationToken))
        {
            var query = GetQueryString(startDate, endDate);

            return(AzureUtil.Query <T>(Table, query));
        }
Esempio n. 15
0
        public static string GetRowKey(DateTime runDate, BuildSource buildSource)
        {
            var machineName = AzureUtil.NormalizeKey(buildSource.MachineName, '-');

            return($"{machineName}-{(long)runDate.Ticks}");
        }