예제 #1
0
 public void PurgeReportRequestEntriesQueue()
 {
     using (var reportRequestService = new ReportRequestEntryService(_options, _easyMwsLogger))
     {
         _reportProcessor.PurgeQueue(reportRequestService);
     }
 }
예제 #2
0
        public void SetUp()
        {
            var reportRequestPropertiesContainer = new ReportRequestPropertiesContainer("_Report_Type_", ContentUpdateFrequency.NearRealTime, new List<string>(MwsMarketplaceGroup.AmazonEurope().Select(m => m.Id)));

            _reportRequestEntries = new List<ReportRequestEntry>
            {
                new ReportRequestEntry
                {
                    AmazonRegion = AmazonRegion.Europe,
                    ReportRequestData = JsonConvert.SerializeObject(reportRequestPropertiesContainer),
                    LastAmazonRequestDate = DateTime.MinValue,
                    ContentUpdateFrequency = 0,
                    Id = 1,
                    ReportType = reportRequestPropertiesContainer.ReportType,
                    TargetHandlerId = "TargetHandlerId",
                    TargetHandlerArgs = JsonConvert.SerializeObject(new Dictionary<string, object>{ { "key1", "value1"}, { "key2", "value2"} })
                },
                new ReportRequestEntry{Id = 2}
            };

			_loggerMock = new Mock<IEasyMwsLogger>();
			_reportRequestCallbackReportMock = new Mock<IReportRequestEntryRepository>();
            _reportRequestCallbackReportMock.Setup(x => x.GetAll()).Returns(_reportRequestEntries.AsQueryable());
            _reportRequestEntryService = new ReportRequestEntryService(_reportRequestCallbackReportMock.Object, _options, _loggerMock.Object);
        }
예제 #3
0
 public void QueueReport(ReportRequestPropertiesContainer reportRequestContainer, string targetEventId = null, Dictionary <string, object> targetEventArgs = null)
 {
     using (var reportRequestService = new ReportRequestEntryService(_options, _easyMwsLogger))
     {
         _reportProcessor.QueueReport(reportRequestService, reportRequestContainer, targetEventId, targetEventArgs);
     }
 }
예제 #4
0
		public void GetNextFromQueueOfReportsToRequest_WithRetryPeriodTypeConfiguredAsGeometricProgression_AndNonInitialRetryCount_ReturnsReportRequestWithTheExpectedCompleteRetryPeriod()
		{
			var customOptions = new EasyMwsOptions();
			var testRequestRetryCount = 5;
			var minutesBetweenRetries = 60;
			var reportRequestWithRequestRetryPeriodIncomplete = new ReportRequestEntry
			{
				AmazonRegion = AmazonRegion.Europe,
				MerchantId = _merchantId,
				Id = 2,
				RequestReportId = null,
				ReportRequestRetryCount = testRequestRetryCount,
				LastAmazonRequestDate = DateTime.UtcNow.AddMinutes(-61)
			};
			customOptions.ReportRequestOptions.ReportRequestRetryInitialDelay = TimeSpan.FromMinutes(1);
			customOptions.ReportRequestOptions.ReportRequestRetryInterval = TimeSpan.FromMinutes(minutesBetweenRetries);
			customOptions.ReportRequestOptions.ReportRequestRetryType = RetryPeriodType.GeometricProgression;
			var reportRequestWithNoRetryPeriodComplete1 = new ReportRequestEntry
			{
				AmazonRegion = AmazonRegion.Europe,
				MerchantId = _merchantId,
				Id = 3,
				RequestReportId = null,
				ReportRequestRetryCount = testRequestRetryCount,
				LastAmazonRequestDate = DateTime.UtcNow.AddMinutes(-59)
			};
			var reportRequestWithNoRetryPeriodComplete2 = new ReportRequestEntry
			{
				AmazonRegion = AmazonRegion.Europe,
				MerchantId = _merchantId,
				Id = 4,
				RequestReportId = null,
				ReportRequestRetryCount = testRequestRetryCount,
				LastAmazonRequestDate = DateTime.UtcNow.AddMinutes(-(testRequestRetryCount * minutesBetweenRetries - 1))
			};
			var reportRequestWithNoRetryPeriodComplete3 = new ReportRequestEntry
			{
				AmazonRegion = AmazonRegion.Europe,
				MerchantId = _merchantId,
				Id = 5,
				RequestReportId = null,
				ReportRequestRetryCount = testRequestRetryCount,
				LastAmazonRequestDate = DateTime.UtcNow.AddMinutes(-(testRequestRetryCount * minutesBetweenRetries - 1))
			};

			_reportRequestEntries.Add(reportRequestWithRequestRetryPeriodIncomplete);
			_reportRequestEntries.Add(reportRequestWithNoRetryPeriodComplete1);
			_reportRequestEntries.Add(reportRequestWithNoRetryPeriodComplete2);
			_reportRequestEntries.Add(reportRequestWithNoRetryPeriodComplete3);

			_reportRequestEntryService = new ReportRequestEntryService(_reportRequestCallbackReportMock.Object, customOptions, _loggerMock.Object);

			var reportRequestCallback = _reportRequestEntryService.GetNextFromQueueOfReportsToRequest(_merchantId, _amazonRegion);

			Assert.AreEqual(reportRequestWithNoRetryPeriodComplete2.Id, reportRequestCallback.Id);
		}
예제 #5
0
 public void Poll()
 {
     Parallel.Invoke(
         () =>
     {
         using (var reportRequestService = new ReportRequestEntryService(_options, _easyMwsLogger))
         {
             _reportProcessor.PollReports(reportRequestService);
         }
     },
         () =>
     {
         using (var feedSubmissionService = new FeedSubmissionEntryService(_options, _easyMwsLogger))
         {
             _feedProcessor.PollFeeds(feedSubmissionService);
         }
     });
 }
예제 #6
0
		public void GetNextFromQueueOfReportsToRequest_WithConfiguredTimeToWaitBeforeFirstRetry_AndInitialRetryCount_ReturnsReportRequestWithTheExpectedCompleteRetryPeriod()
		{
			var customOptions = new EasyMwsOptions();
			var reportRequestWithRequestRetryPeriodIncomplete = new ReportRequestEntry { AmazonRegion = AmazonRegion.Europe, MerchantId = _merchantId, Id = 2, RequestReportId = null, ReportRequestRetryCount = 1, LastAmazonRequestDate = DateTime.UtcNow.AddMinutes(-59) };
			customOptions.ReportRequestOptions.ReportRequestRetryInitialDelay = TimeSpan.FromMinutes(60);
			customOptions.ReportRequestOptions.ReportRequestRetryInterval = TimeSpan.FromMinutes(1);
			var reportRequestWithNoRetryPeriodComplete1 = new ReportRequestEntry { AmazonRegion = AmazonRegion.Europe, MerchantId = _merchantId, Id = 3, RequestReportId = null, ReportRequestRetryCount = 1, LastAmazonRequestDate = DateTime.UtcNow.AddMinutes(-61) };
			var reportRequestWithNoRetryPeriodComplete2 = new ReportRequestEntry { AmazonRegion = AmazonRegion.Europe, MerchantId = _merchantId, Id = 4, RequestReportId = null, ReportRequestRetryCount = 1, LastAmazonRequestDate = DateTime.UtcNow.AddMinutes(-61) };

			_reportRequestEntries.Add(reportRequestWithRequestRetryPeriodIncomplete);
			_reportRequestEntries.Add(reportRequestWithNoRetryPeriodComplete1);
			_reportRequestEntries.Add(reportRequestWithNoRetryPeriodComplete2);

			_reportRequestEntryService = new ReportRequestEntryService(_reportRequestCallbackReportMock.Object, customOptions, _loggerMock.Object);

			var reportRequestCallback = _reportRequestEntryService.GetNextFromQueueOfReportsToRequest(_merchantId, _amazonRegion);

			Assert.AreEqual(reportRequestWithNoRetryPeriodComplete1.Id, reportRequestCallback.Id);
		}
예제 #7
0
		public void GetNextFromQueueOfReportsToRequest_ReturnsFirstReportRequestFromQueueWithNoRequestRetryCount_AndSkipsReportRequestsWithRequestRetryPeriodIncomplete()
		{
			var customOptions = new EasyMwsOptions();
			var reportRequestWithRequestRetryPeriodIncomplete = new ReportRequestEntry { AmazonRegion = AmazonRegion.Europe, MerchantId = _merchantId, Id = 2, RequestReportId = null, ReportRequestRetryCount = 1, LastAmazonRequestDate = DateTime.UtcNow.AddHours(-1) };
			customOptions.ReportRequestOptions.ReportRequestRetryInitialDelay = TimeSpan.FromHours(2);
			customOptions.ReportRequestOptions.ReportRequestRetryInterval = TimeSpan.FromHours(2);
			var reportRequestWithNoRequestRetryCount1 = new ReportRequestEntry { AmazonRegion = AmazonRegion.Europe, MerchantId = _merchantId, Id = 3, RequestReportId = null, ReportRequestRetryCount = 0, LastAmazonRequestDate = DateTime.MinValue };
			var reportRequestWithNoRequestRetryCount2 = new ReportRequestEntry { AmazonRegion = AmazonRegion.Europe, MerchantId = _merchantId, Id = 4, RequestReportId = null, ReportRequestRetryCount = 0, LastAmazonRequestDate = DateTime.MinValue };

			_reportRequestEntries.Add(reportRequestWithRequestRetryPeriodIncomplete);
			_reportRequestEntries.Add(reportRequestWithNoRequestRetryCount1);
			_reportRequestEntries.Add(reportRequestWithNoRequestRetryCount2);

			_reportRequestEntryService = new ReportRequestEntryService(_reportRequestCallbackReportMock.Object, customOptions, _loggerMock.Object);

			var reportRequestCallback =
				_reportRequestEntryService.GetNextFromQueueOfReportsToRequest(_merchantId, _amazonRegion);

			Assert.AreEqual(reportRequestWithNoRequestRetryCount1.Id, reportRequestCallback.Id);
		}