public void WhenProcessingSeparateFilesOutputShouldWriteJsonFile()
        {
            this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object);

            var dict = new Dictionary <DateTime, Dictionary <string, WorkItem> >();

            dict.Add(new DateTime(2018, 08, 30), new Dictionary <string, WorkItem>());
            dict[new DateTime(2018, 08, 30)].Add("Some Change Set Id", new WorkItem()
            {
                ChangesetId = "Some Change Set Id",
                ClosedDate  = new DateTime(2018, 08, 30),
                WorkItemId  = "Some Work Item Id"
            });

            var output = new MemoryStream();

            this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-30_Some Work Item Id_Some Change Set Id.json", FileMode.Create, FileAccess.Write)).Returns(output);

            this.jsonOutputProcessor.ProcessOutput(OutputType.SeparateFiles, "filename", dict);
            var resultString = Encoding.UTF8.GetString(output.ToArray());

            Assert.NotEmpty(resultString);
            Assert.Equal(
                "{\"SchemaVersion\":" + JsonOutputData <DailyCodeChurn> .CurrentVersion + "," +
                "\"Data\":[{" +
                "\"ClosedDate\":\"2018/08/30 00:00:00\"," +
                "\"WorkItemId\":\"Some Work Item Id\"," +
                "\"ChangesetId\":\"Some Change Set Id\"" +
                "}]}", resultString);
        }
        public void WhenConvertToOrderedListAsSeparateFilesShouldReturnExpectedOutput()
        {
            this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object);

            var dict = new Dictionary <DateTime, Dictionary <string, WorkItem> >();

            dict.Add(new DateTime(2018, 08, 30), new Dictionary <string, WorkItem>());
            dict[new DateTime(2018, 08, 30)].Add("Some Change Set Id 1", new WorkItem()
            {
                ChangesetId = "Some Change Set Id 1",
                ClosedDate  = new DateTime(2018, 08, 30),
                WorkItemId  = "Some Work Item Id 1"
            });
            dict.Add(new DateTime(2018, 08, 31), new Dictionary <string, WorkItem>());
            dict[new DateTime(2018, 08, 31)].Add("Some Change Set Id 2", new WorkItem()
            {
                ChangesetId = "Some Change Set Id 2",
                ClosedDate  = new DateTime(2018, 08, 31),
                WorkItemId  = "Some Work Item Id 2"
            });

            var output1 = new MemoryStream();
            var output2 = new MemoryStream();

            this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-30_Some Work Item Id 1_Some Change Set Id 1.json", FileMode.Create, FileAccess.Write)).Returns(output1);
            this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-31_Some Work Item Id 2_Some Change Set Id 2.json", FileMode.Create, FileAccess.Write)).Returns(output2);

            this.jsonOutputProcessor.ProcessOutputSeparateFiles("filename", dict);

            var resultString1 = Encoding.UTF8.GetString(output1.ToArray());
            var resultString2 = Encoding.UTF8.GetString(output2.ToArray());

            Assert.NotEmpty(resultString1);
            Assert.NotEmpty(resultString2);
        }
Exemple #3
0
        private static int RunDownloadCodeChurnFromCosmosDbToJsonFiles(DownloadFromCosmosDbCommandLineArgs a)
        {
            var logger                 = new ConsoleLoggerWithTimestamp();
            var cosmosConnection       = new CosmosConnection(new DatabaseFactory(a, JsonSerializerSettingsFactory.CreateDefaultSerializerSettingsForCosmosDB()), a.DatabaseId, Properties.Settings.Default.CosmosBulkBatchSize);
            var dataDocumentRepository = new DataDocumentRepository(cosmosConnection, a.CodeChurnCosmosContainer);
            var cosmosOutputProcessor  = new CosmosDbOutputProcessor(logger, dataDocumentRepository, new DataConverter(), a.CosmosProjectName, Properties.Settings.Default.CosmosBulkBatchSize);
            var jsonOutputProcessor    = new JsonOutputProcessor(new DataConverter(), new FileStreamFactory(), logger);
            var environment            = new EnvironmentImpl();

            var endDate = a.EndDate ?? (a.EndDate = environment.GetCurrentDateTime());

            switch (a.DocumentType)
            {
            case DocumentType.BugDatabase:
            {
                var data = cosmosOutputProcessor.GetDocumentsInDateRange <WorkItem>(a.StartDate.Value, endDate.Value);
                jsonOutputProcessor.ProcessOutput(a.OutputType, a.OutputFile, data);
                break;
            }

            case DocumentType.CodeChurn:
            {
                var data = cosmosOutputProcessor.GetDocumentsInDateRange <DailyCodeChurn>(a.StartDate.Value, endDate.Value);
                jsonOutputProcessor.ProcessOutput(a.OutputType, a.OutputFile, data);
                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(0);
        }
        public GivenAJsonOutputProcessor()
        {
            this.outputStream = new MemoryStream();

            this.streamFactoryMock = new Mock <IStreamFactory>();
            this.streamFactoryMock.Setup(m => m.createFileStream("filename", FileMode.Create, FileAccess.Write)).Returns(outputStream);

            this.loggerMock = new Mock <ILogger>();

            this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object);
        }
Exemple #5
0
        private static int RunGitCodeChurnProcessor(GitExtractCommandLineArgs a)
        {
            var processWrapper       = new ProcessWrapper();
            var commandLineParser    = new CommandLineParser();
            var gitLogParser         = new GitLogParser();
            var logger               = new ConsoleLoggerWithTimestamp();
            var outputProcessor      = new JsonOutputProcessor(new DataConverter(), new FileStreamFactory(), logger);
            var bugDatabaseFactory   = new BugDatabaseFactory();
            var bugDatabaseDllLoader = new BugDatabaseDllLoader(logger, bugDatabaseFactory);
            var webRequest           = new WebRequest(new HttpClientWrapperFactory(bugDatabaseFactory));
            var fileSystem           = new FileSystem();
            var jsonParser           = new JsonListParser <WorkItem>(new FileStreamFactory());
            var bugDatabaseProcessor = new BugDatabaseProcessor(bugDatabaseDllLoader, webRequest, fileSystem, jsonParser, logger, a.BugDatabaseOutputFile);
            var processor            = new GitCodeChurnProcessor(commandLineParser, processWrapper, gitLogParser, outputProcessor, bugDatabaseProcessor, logger, a);

            processor.QueryBugDatabase();
            return(processor.Extract());
        }
Exemple #6
0
        private static int RunPerforceCodeChurnProcessor(P4ExtractCommandLineArgs a)
        {
            var processWrapper       = new ProcessWrapper();
            var changesParser        = new ChangesParser();
            var describeParser       = new DescribeParser();
            var commandLineParser    = new CommandLineParser();
            var logger               = new ConsoleLoggerWithTimestamp();
            var stopWatch            = new StopWatchWrapper();
            var outputProcessor      = new JsonOutputProcessor(new DataConverter(), new FileStreamFactory(), logger);
            var bugDatabaseFactory   = new BugDatabaseFactory();
            var bugDatabaseDllLoader = new BugDatabaseDllLoader(logger, bugDatabaseFactory);
            var webRequest           = new WebRequest(new HttpClientWrapperFactory(bugDatabaseFactory));
            var fileSystem           = new FileSystem();
            var jsonParser           = new JsonListParser <WorkItem>(new FileStreamFactory());
            var bugDatabaseProcessor = new BugDatabaseProcessor(bugDatabaseDllLoader, webRequest, fileSystem, jsonParser, logger, a.BugDatabaseOutputFile);
            var processor            = new PerforceCodeChurnProcessor(processWrapper, changesParser, describeParser, commandLineParser, bugDatabaseProcessor, logger, stopWatch, outputProcessor, a);

            processor.QueryBugDatabase();
            return(processor.Extract());
        }
        public void WhenProcessingOutputTypeCosmosDbShouldDoNothing()
        {
            this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object);

            var dict = new Dictionary <DateTime, Dictionary <string, WorkItem> >();

            dict.Add(new DateTime(2018, 08, 30), new Dictionary <string, WorkItem>());
            dict[new DateTime(2018, 08, 30)].Add("Some Change Set Id", new WorkItem()
            {
                ChangesetId = "Some Change Set Id",
                ClosedDate  = new DateTime(2018, 08, 30),
                WorkItemId  = "Some Work Item Id"
            });

            var output = new MemoryStream();

            this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-30_Some Work Item Id_Some Change Set Id.json", FileMode.Create, FileAccess.Write)).Returns(output);

            this.jsonOutputProcessor.ProcessOutput(OutputType.CosmosDb, "filename", dict);
            var resultString = Encoding.UTF8.GetString(output.ToArray());

            Assert.Empty(resultString);
        }