Esempio n. 1
0
        public async Task <ActionResult> OnPostAsync([FromBody] TestRequest testRequest)
        {
            _logger.LogTrace("Creating new test case");
            TestCase testCase = await _dbService.Cases.FirstOrDefaultAsync(@case => @case.Id == testRequest.TestCaseId);

            if (testCase == null)
            {
                _logger.LogWarning("Invalid test case id supplied {id}", testRequest.TestCaseId);
                return(BadRequest());
            }
            // -------------
            if (testRequest.Counted)
            {
                _logger.LogTrace("Run is counted, counting test runs");
                var testedCount = await _dbService.Tests.Where(
                    test => test.TestCaseId == testCase.Id && test.CreatedBy == testRequest.CreatedBy).CountAsync();

                if (testedCount >= testCase.MaxRuns)
                {
                    _logger.LogTrace("Test runs all spent {} of {}, quitting", testedCount, testCase.MaxRuns);
                    return(StatusCode(402));
                }
            }
            // Test runs are ok
            var testRun = new TestRun(testRequest);

            _dbService.Tests.Add(testRun);
            await _dbService.SaveChangesAsync();

            _logger.LogTrace("Test run was created in DB");
            // Put request to queue
            TestRequestMessage mqMessage = new() {
                ContentUrl  = testRequest.ContentUrl,
                DockerImage = testCase.DockerImage,
                MetaData    = testRun.Id
            };

            _mqService.Publish(mqMessage.ToJson());
            // TODO: Have publisher ack
            _logger.LogTrace("Test run was published to MQ");
            return(Ok());
        }
    }
Esempio n. 2
0
        static void Main(string[] args)
        {
            var rabbitMqProxy = new RabbitMQService();

            var input = Input();

            while (input != "exit")
            {
                var log = new MessageModel
                {
                    CreateDateTime = DateTime.Now,
                    Msg            = input
                };
                rabbitMqProxy.Publish(log);

                input = Input();
            }

            rabbitMqProxy.Dispose();
        }