using System; using System.IO; using System.Threading.Tasks; using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.DataModel; using Amazon.S3; using Amazon.SageMaker; using Amazon.SageMakerRuntime; using ekyc_api.Controllers; using ekyc_api.DocumentDefinitions; using ekyc_api.Utils; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NUnit.Framework; namespace ekyc_api_tests { public class TrainingTests : TestBase { [SetUp] public void SetUp() { // put other startup code here _livenessControllerlogger = TestHost.Services.GetService>(); _documentControllerLogger = TestHost.Services.GetService>(); _trainingControllerlogger = TestHost.Services.GetService>(); _dataControllerLogger = TestHost.Services.GetService>(); _amazonDynamoDb = TestHost.Services.GetService(); _dbContext = new DynamoDBContext(_amazonDynamoDb); _config = TestHost.Services.GetService(); _s3Client = TestHost.Services.GetService(); _factory = TestHost.Services.GetService(); _documentChecker = TestHost.Services.GetService(); _dataController = new DataController(_config, _factory, _s3Client, _amazonDynamoDb, _documentChecker, _dataControllerLogger); _livenessChecker = TestHost.Services.GetService(); _sagemaker = TestHost.Services.GetService(); _sagemakerRuntime = TestHost.Services.GetService(); } private ILivenessChecker _livenessChecker; private ILogger _livenessControllerlogger; private ILogger _trainingControllerlogger; private ILogger _documentControllerLogger; private ILogger _dataControllerLogger; private IConfiguration _config; private DataController _dataController; private IAmazonS3 _s3Client; private IAmazonDynamoDB _amazonDynamoDb; private IDocumentDefinitionFactory _factory; private IDocumentChecker _documentChecker; private SessionController _sessionController; private IAmazonSageMakerRuntime _sagemakerRuntime; private IAmazonSageMaker _sagemaker; private DynamoDBContext _dbContext; [Test] public async Task TestCreateAndStartJob() { var controller = new TrainingController(_config, _s3Client, _amazonDynamoDb, _livenessChecker, _sagemakerRuntime, _sagemaker, _trainingControllerlogger); var job = await controller.CreateTrainingJob(); Console.WriteLine(job); DirectoryInfo di = new DirectoryInfo($"../../../SampleData/myKAD"); foreach (var file in di.GetFiles()) { var url = await controller.GetPresignedUploadUrl(job.Id, file.Name); await PutObjectAtUrl(url, file.FullName); } var labellingJobArn = await controller.StartLabellingJob(job.Id); Console.WriteLine($"Job created - {labellingJobArn}"); } } }