Esempio n. 1
0
        public async Task Scraper_ModelsMatch()
        {
            // Arrange
            var systemTime = new Mock <ISystemTime>();
            var utcNowA    = new DateTimeOffset(2015, 1, 1, 8, 15, 30, TimeSpan.Zero);
            var utcNowB    = utcNowA.AddMinutes(15);

            systemTime
            .SetupSequence(x => x.UtcNow)
            .Returns(utcNowA)
            .Returns(utcNowB)
            .Returns(utcNowA)
            .Returns(utcNowB);

            var scheduleReferenceA = BuildScheduleReference(1);
            var scheduleA          = BuildSchedule(1);
            var mapA = BuildMap(1);

            var scheduleReferenceB = BuildScheduleReference(2);
            var scheduleB          = BuildSchedule(2);
            var mapB = BuildMap(2);

            var client = new Mock <IClient>();

            client.Setup(x => x.GetScheduleReferencesAsync()).ReturnsAsync(new [] { scheduleReferenceA, scheduleReferenceB });

            client.Setup(x => x.GetScheduleAsync(scheduleReferenceA)).ReturnsAsync(scheduleA);
            client.Setup(x => x.GetMapAsync(scheduleA.MapReference)).ReturnsAsync(mapA);

            client.Setup(x => x.GetScheduleAsync(scheduleReferenceB)).ReturnsAsync(scheduleB);
            client.Setup(x => x.GetMapAsync(scheduleB.MapReference)).ReturnsAsync(mapB);

            var target     = new Scraper(systemTime.Object, client.Object);
            var textWriter = new StringWriter();
            var jsonWriter = new JsonTextWriter(textWriter);
            var writer     = new JsonScrapeResultWriter(jsonWriter);

            // Act
            var scrapeResult = await target.ScrapeAsync();

            await target.RealTimeScrapeAsync(writer);

            // Assert
            var deserialize = JsonConvert.DeserializeObject <ScrapeResult>(textWriter.ToString());

            deserialize.ShouldBeEquivalentTo(scrapeResult);
        }
Esempio n. 2
0
        private static async Task <int> MainAsync(string[] args)
        {
            var result = Parser.Default.ParseArguments <ScrapeOptions, CollapseOptions>(args);

            if (result.Tag == ParserResultType.NotParsed)
            {
                return(1);
            }

            var parsedResult = (Parsed <object>)result;

            if (parsedResult.Value is ScrapeOptions)
            {
                // initialize
                var systemTime       = new SystemTime();
                var httpClient       = new HttpClient();
                var connectorClient  = new Client(httpClient);
                var connectorScraper = new Scraper(systemTime, connectorClient);
                var jsonWriter       = new JsonTextWriter(Console.Out);
                var writer           = new JsonScrapeResultWriter(jsonWriter);

                // act
                await connectorScraper.RealTimeScrapeAsync(writer);

                return(0);
            }

            if (parsedResult.Value is CollapseOptions)
            {
                // initialize
                var options     = (CollapseOptions)parsedResult.Value;
                var pathBuilder = new PathBuilder();
                var collapser   = new Collapser(pathBuilder);
                IAsyncEqualityComparer <Stream> comparer;
                switch (options.ComparisonType)
                {
                case ComparisonType.ScrapeResult:
                    comparer = new ScrapeResultEqualityComparer();
                    break;

                default:
                    comparer = new ZipArchiveEqualityComparer();
                    break;
                }

                var request = new CollapseRequest
                {
                    ConnectionString = options.ConnectionString,
                    PathFormat       = options.PathFormat,
                    Container        = options.Container,
                    Trace            = Console.Out,
                    Comparer         = new AdapterCollapserComparer(StringComparer.Ordinal, comparer)
                };

                // act
                await collapser.CollapseAsync(request);

                return(0);
            }

            return(0);
        }