public IEnumerable <ActivityDiscrepancy> Scan(ActivityDiscrepancyFinderParameters parameters)
        {
            var cosmosPagingData  = new CosmosPagingData(_cosmosRepository, parameters.BatchSize, parameters.MaxInspections);
            var elasticPagingData = new ElasticPagingData(_elasticRepository, parameters.BatchSize, parameters.MaxInspections);

            return(Zipper
                   .Zip(
                       () => FetchNextPageFromCosmos(cosmosPagingData, parameters.ReaderLogger),
                       () => FetchNextPageFromElastic(elasticPagingData, parameters.ReaderLogger))
                   .Where(z => z.IsMissing)
                   .Select(z => new ActivityDiscrepancy(z.Item, z.IsMissingInA ? ActivityDiscrepancyType.NotFoundInCosmos : ActivityDiscrepancyType.NotFoundInElastic)));
        }
        public ActivityDiscrepancyFinderTestFixtures RunScan(int batchSize)
        {
            var finder = CreateActivityDiscrepancyFinder();

            var parameters = new ActivityDiscrepancyFinderParameters
            {
                BatchSize = batchSize
            };

            _results = finder.Scan(parameters).ToArray();

            return(this);
        }
Example #3
0
        private IEnumerable <ActivityDiscrepancy> BuildQueue(IIntegrityCheckConfiguration scanParameters, IFixActionReaderLogger logger)
        {
            var parameters = new ActivityDiscrepancyFinderParameters
            {
                BatchSize      = scanParameters.CosmosPageSize,
                MaxInspections = scanParameters.MaxInspections,
                ReaderLogger   = logger
            };

            IEnumerable <ActivityDiscrepancy> discrepancies = _finder.Scan(parameters);

            if (scanParameters.MaxDiscrepancies.HasValue && scanParameters.MaxDiscrepancies > -1)
            {
                discrepancies = discrepancies.Take(scanParameters.MaxDiscrepancies.Value);
            }

            return(discrepancies);
        }