private IRecognitionResultsRepository GetRecognitionResults(MockRepository repository, RecognitionResults testRecognitionResults) { return(recognitionResultsRepository = repository.Of <IRecognitionResultsRepository>() .Where(rr => rr.GetRecognitionResultsByPhotoId(It.IsAny <int>()) == testRecognitionResults) .First()); }
private async Task InitializeQueue() { var user = new ApplicationUser { UserName = "******", Email = "*****@*****.**" }; await app.UserManager.CreateAsync(user, "UserTest@123"); await app.SetUser(user); var testSession = new Session(user.Id, DateTime.UtcNow, DateTime.UtcNow, SessionStatus.FINISHED); testSession.SessionID = 1; var testPhoto = new Photo(testSession.SessionID, new byte[] { 0x20, 0x20, 0x20 }, DateTime.UtcNow); testPhoto.PhotoID = 2; photoRepository = repository.Of <IPhotoRepository>() .Where(pr => pr.GetPhotoById(It.IsAny <int>()) == testPhoto) .First(); recognitionResultsRepository = new RecognitionResultsMock(); for (int i = 0; i < 5; i++) { RecognitionTask recognitionTask = new RecognitionTask("model1", 2); queue.Enqueue(recognitionTask); } }
private void InstantiateRepositories(ApplicationUser user, out ISessionRepository sessionRepository, out IPhotoRepository photoRepository, out IRecognitionResultsRepository recognitionResultsRepository) { var repository = new MockRepository(MockBehavior.Default); image = new byte[] { 0x20, 0x20, 0x20 }; testResults = new RecognitionResults(true, new Points(new Point(0, 1), new Point(2, 3)), photoId); var timeStamp = new DateTime(); var userId = user.Id; Session testSession = new Session(user.Id, timeStamp, timeStamp, SessionStatus.ACTIVE); testSession.SessionID = 1; Photo testPhoto = new Photo(testSession.SessionID, image, timeStamp); testPhoto.PhotoID = 2; sessionRepository = repository.Of <ISessionRepository>() .Where(sr => sr.GetLastSessionForUser(It.IsAny <int>()) == testSession) .First(); photoRepository = repository.Of <IPhotoRepository>() .Where(pr => pr.GetLastPhotoInSession(It.IsAny <int>()) == testPhoto) .First(); recognitionResultsRepository = repository.Of <IRecognitionResultsRepository>() .Where(rr => rr.GetRecognitionResultsByPhotoId(It.IsAny <int>()) == testResults) .First(); }
public async Task <IActionResult> GetPhoto([FromServices] UserManager <ApplicationUser> userManager, [FromServices] IPhotoRepository photoRepository, [FromServices] ISessionRepository sessionRepository, [FromServices] IRecognitionResultsRepository recognitionResultsRepository) { using (_logger.BeginScope(nameof(GetPhoto))) { _logger.LogInformation("Frontend tries to get photo"); try { var user = await userManager.GetUserAsync(HttpContext.User); var session = sessionRepository.GetLastSessionForUser(int.Parse(await userManager.GetUserIdAsync(user))); if (null == session) { return(BadRequest("User has no sessions")); } var photo = photoRepository.GetLastPhotoInSession(session.SessionID); var recognitionResults = recognitionResultsRepository.GetRecognitionResultsByPhotoId(photo.PhotoID); var recognitionResultsResponse = (null == recognitionResults) ? null : new { valid = recognitionResults.IsValid, coordinates = new { topLeft = new { x = recognitionResults.Coords.TopLeft.X, y = recognitionResults.Coords.TopLeft.Y }, bottomRight = new { x = recognitionResults.Coords.BottomRight.X, y = recognitionResults.Coords.BottomRight.Y } } }; return(Ok(new { photo = System.Convert.ToBase64String(photo.Image), recognitionResults = recognitionResultsResponse } )); } catch (Exception exception) { _logger.LogError("Exception caught: {0}, {1}", exception.Message, exception.StackTrace); return(BadRequest(exception.Message)); } } }
public async void GetRecognitionResultsTest(bool recognitionResultsArePresent) { var user = new ApplicationUser { UserName = recognitionResultsArePresent ? "UserTest" : "UserTest2", Email = "*****@*****.**" }; await app.UserManager.CreateAsync(user, "UserTest@123"); await app.SetUser(user); DateTime timeStamp = new DateTime(); var image = new byte[] { 0x20, 0x20, 0x20 }; var sessionId = 1; var photoId = 2; var userId = user.Id; Points coords = new Points(new Point(0, 1), new Point(2, 3)); bool testIsValid = true; RecognitionResults testRecognitionResults = recognitionResultsArePresent ? new RecognitionResults(testIsValid, coords, photoId) : null; Session testSession = new Session(userId, timeStamp, timeStamp, SessionStatus.ACTIVE); testSession.SessionID = sessionId; Photo testPhoto = new Photo(testSession.SessionID, image, timeStamp); testPhoto.PhotoID = photoId; var repository = new MockRepository(MockBehavior.Default); IRecognitionResultsRepository recognitionResultsRepository = repository.Of <IRecognitionResultsRepository>() .Where(rr => rr.GetRecognitionResultsByPhotoId(It.IsAny <int>()) == testRecognitionResults) .First(); PhotoController photoController = CreateController(testSession, testPhoto); var result = (await photoController.GetRecognitionResults( app.UserManager, recognitionResultsRepository) as OkObjectResult).Value; RecognitionResults requestRecognitionResults = getRecognitionResultsFromJsonResult(result, photoId); if (recognitionResultsArePresent) { Assert.Equal(testRecognitionResults, requestRecognitionResults); } else { Assert.Null(requestRecognitionResults); } }
public AnalyticsAgent(RecognitionTaskQueue queue, IAnalyticsClient analyticsClient, ILoggerFactory loggerFactory, IPhotoRepository photoRepository, IRecognitionResultsRepository recognitionRepository, IConfiguration configuration) { this.queue = queue; this.analyticsClient = analyticsClient; this.photoRepository = photoRepository; this.configuration = configuration; this.recognitionRepository = recognitionRepository; logger = loggerFactory.CreateLogger <AnalyticsAgent>(); PollingTask(); }
public async Task <IActionResult> GetRecognitionResults( [FromServices] UserManager <ApplicationUser> userManager, [FromServices] IRecognitionResultsRepository recognitionResultsRepository) { using (_logger.BeginScope(nameof(GetRecognitionResults))) { try { var user = await userManager.GetUserAsync(HttpContext.User); int userId = int.Parse(await userManager.GetUserIdAsync(user)); Session session = _sessionRepository.GetLastSessionForUser(userId); if (session == null) { return(BadRequest("Session is not started yet.")); } _logger.LogInformation("Trying to get photo for session {0}", session.SessionID); Photo photo = _photoRepository.GetLastPhotoInSession(session.SessionID); _logger.LogInformation("Trying to get recognition results for photo {0}", photo.PhotoID); RecognitionResults recognitionResults = recognitionResultsRepository.GetRecognitionResultsByPhotoId(photo.PhotoID); if (recognitionResults == null) { _logger.LogInformation("Recognition results are not ready for photo {0} yet", photo.PhotoID); return(Ok(new { recognitionResult = (string)null })); } _logger.LogInformation( "Recognition results for photo {0} were successfully retrieved", photo.PhotoID); return(Ok(new { recognitionResult = new { valid = recognitionResults.IsValid, coordinates = new { topLeft = new { x = recognitionResults.Coords.TopLeft.X, y = recognitionResults.Coords.TopLeft.Y, }, bottomRight = new { x = recognitionResults.Coords.BottomRight.X, y = recognitionResults.Coords.BottomRight.Y, } } } })); } catch (Exception e) { _logger.LogError("Exception caught: {0}, {1}", e.Message, e.StackTrace); return(BadRequest(e.Message)); } } }