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