Esempio n. 1
0
 private IRecognitionResultsRepository GetRecognitionResults(MockRepository repository,
                                                             RecognitionResults testRecognitionResults)
 {
     return(recognitionResultsRepository = repository.Of <IRecognitionResultsRepository>()
                                           .Where(rr => rr.GetRecognitionResultsByPhotoId(It.IsAny <int>()) == testRecognitionResults)
                                           .First());
 }
Esempio n. 2
0
        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();
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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));
                }
            }
        }