add compile & test worker
This commit is contained in:
64
src/LiquidCode.Tester.Worker/Controllers/TestController.cs
Normal file
64
src/LiquidCode.Tester.Worker/Controllers/TestController.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using LiquidCode.Tester.Worker.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace LiquidCode.Tester.Worker.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class TestController : ControllerBase
|
||||
{
|
||||
private readonly ITestingService _testingService;
|
||||
private readonly ILogger<TestController> _logger;
|
||||
|
||||
public TestController(ITestingService testingService, ILogger<TestController> logger)
|
||||
{
|
||||
_testingService = testingService;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IActionResult> Test([FromForm] TestRequest request)
|
||||
{
|
||||
_logger.LogInformation("Received test request for submit {SubmitId}", request.Id);
|
||||
|
||||
try
|
||||
{
|
||||
// Start testing in background
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await _testingService.ProcessSubmitAsync(request);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Error processing submit {SubmitId}", request.Id);
|
||||
}
|
||||
});
|
||||
|
||||
return Accepted(new { message = "Test request accepted", submitId = request.Id });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Failed to accept test request for submit {SubmitId}", request.Id);
|
||||
return StatusCode(500, new { error = "Failed to accept test request", details = ex.Message });
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("health")]
|
||||
public IActionResult Health()
|
||||
{
|
||||
return Ok(new { status = "healthy", service = "cpp-worker", timestamp = DateTime.UtcNow });
|
||||
}
|
||||
}
|
||||
|
||||
public class TestRequest
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public long MissionId { get; set; }
|
||||
public string Language { get; set; } = string.Empty;
|
||||
public string LanguageVersion { get; set; } = string.Empty;
|
||||
public string SourceCode { get; set; } = string.Empty;
|
||||
public string CallbackUrl { get; set; } = string.Empty;
|
||||
public IFormFile? Package { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user