public void Request_Is_Retried()
        {
            // arrange
            var userWriter = new Mock<IUserWriter>();
            var requestQueue = new MockRequestQueue();
            var responseQueue = new MockResponseQueue();
            var controller = new CrawlerController(userWriter.Object, requestQueue, responseQueue, new RecentFriendRegistry());
            var retryRequest = new GetFriendsRequest("test");
            var errorResponse = new ErrorResponse(retryRequest, "fail whale");

            // act
            controller.ProcessResponse(errorResponse);

            // assert
            Assert.That(requestQueue.QueuedMessages, Has.Count(1));
            Assert.That(requestQueue.QueuedMessages.Single(), Is.SameAs(retryRequest));
        }
        public void ErrorResponse_Is_Queued()
        {
            // arrange
            var requestQueue = new MockRequestQueue();
            var responseQueue = new MockResponseQueue();
            var statusService = new Mock<IStatusService>();

            statusService.Setup(ss => ss.GetFriendsOf("test")).Throws(new XmlException("Twitter is full of FAIL!"));
            var crawler = new TwitterCrawler(requestQueue, responseQueue, statusService.Object);

            // act
            var friendRequest = new GetFriendsRequest("test");
            crawler.ProcessRequest(friendRequest);

            // assert
            Assert.That(responseQueue.QueuedMessages, Has.Count(1));
            Assert.That(responseQueue.QueuedMessages.Single(), Is.TypeOf(typeof(ErrorResponse)));
            var response = (ErrorResponse)responseQueue.QueuedMessages.Single();
            Assert.That(response.Request, Is.SameAs(friendRequest));
        }
Esempio n. 3
0
 private void ProcessGetFriendsRequest(GetFriendsRequest request)
 {
     var stopwatch = new Stopwatch();
     stopwatch.Start();
     IEnumerable<UserInfo> friends = statusService.GetFriendsOf(request.UserName);
     if (friends == null)
     {
         log.Warn("Can't get friends of " + request.UserName + " - returned null.");
         responseQueue.Send(new ErrorResponse(request, "GetFriendsOf returned null."));
     }
     else
     {
         responseQueue.Send(new GetFriendsResponse(request.UserName, friends));
         ReportStopwatchResult(stopwatch, "GetFriends", friends.Count());
     }
 }