Exemple #1
0
 public Task <List <ChatMessageDTO> > GetMessagesAsync(DateTimeOffset since)
 {
     return(_dbService
            .Query <ChatMessage>(m => m.DateTime >= since)
            .Order()
            .Project()
            .ToListAsync());
 }
Exemple #2
0
        public async Task <PublishImpactChangesResponse> UpdateImpactedTests(IEnumerable <string> changedCodeSignatures)
        {
            _logger.LogInformation("Updating impacted tests for build {@BuildInfo}, with changes {CodeSignatures}", _buildInfo, changedCodeSignatures);

            var impactItems =
                from ii in _dbService.Query <TestCaseImpactItem>()
                where
                ii.ProductLineId == _productLineId &&
                !ii.IsDeleted &&
                changedCodeSignatures.Contains(ii.CodeSignature.Signature)
                select ii;

            var signaturesAndImpactedTests = await
                                                 (from ii in impactItems
                                                 join tl in GetTestLastStates() on ii.TestCaseId equals tl.TestCaseId
                                                 select new
            {
                ii.CodeSignature.Signature,
                ii.TestCaseId,
                TestLastState = tl,
                tl.TestCase.AzureTestCaseId
            })
                                             .ToListAsync();

            var testLastStates = signaturesAndImpactedTests
                                 .Select(s => s.TestLastState)
                                 .Distinct(new TestLastState.IDEqulityComparer())
                                 .ToList();

            UpdateLastStateToImpacted(testLastStates);

            var impactedTests = signaturesAndImpactedTests
                                .Select(s =>
                                        new ImpactedTestResponse()
            {
                TestCaseId      = s.TestCaseId,
                AzureTestCaseId = s.AzureTestCaseId
            })
                                .Distinct()
                                .OrderBy(t => t.AzureTestCaseId)
                                .ToList();

            var codeSignatureTests = signaturesAndImpactedTests
                                     .GroupBy(s => s.Signature)
                                     .ToDictionary(s => s.Key, g => (IReadOnlyList <int>)g.Select(i => i.TestCaseId).ToList().AsReadOnly());

            _logger.LogInformation("Impacted tests for build {@BuildInfo}: {CodeSignatureTests}", _buildInfo, codeSignatureTests);

            return(new PublishImpactChangesResponse()
            {
                ImpactedTests = impactedTests,
                CodeSignatureImpactedTestCaseIds = codeSignatureTests
            });
        }
 public async Task <IReadOnlyList <LastImpactUpdateResponse> > GetLastImpactUpdatesAsync()
 {
     return(await _dbService
            .Query <LastImpactUpdate>()
            .Project()
            .ToListAsync());
 }
 public Task <TestCaseResponse> GetAsync(int id)
 {
     return(_dbService.Query <TestCase>(id).Project().FirstOrDefaultAsync());
 }
Exemple #5
0
        public async Task <(TestRunSessionResponse, ServiceError)> InsertSessionAsync(TestRunSessionRequest sessionDto)
        {
            var build = await _dbService.Query <Data.BuildInfo>(b =>
                                                                b.AzureBuildDefinitionId == sessionDto.ProductBuild.AzureBuildDefinitionId &&
                                                                b.AzureBuildId == sessionDto.ProductBuild.AzureBuildId)
                        .FirstOrDefaultAsync();

            if (build == null)
            {
                build = sessionDto.ProductBuild.ToDataModel();
                _dbService.Add(build);
            }
            var(productLine, error) = await _productLineService.GetOrInsertProductLineAsync(sessionDto.ProductLine);

            if (!error.IsSuccessful())
            {
                return(null, error);
            }

            sessionDto.ProductLine = productLine.ToDto();
            var session = sessionDto.ToDataModel();

            session.ProductBuildInfo = build;
            _dbService.Add(session);
            await _dbService.SaveChangesAsync();

            var response = session.ToResponse();

            response.ProductLine = sessionDto.ProductLine;
            return(response, ServiceError.NoError);
        }