Beispiel #1
0
        public void GetById_Integration_ReturnsData()
        {
            string filePath = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName() + ".dbtest");

            using (SQLiteDbContext dbContext = new SQLiteDbContext(filePath))
            {
                dbContext.Initialise();

                ILogFileRepository logFileRepo = new LogFileRepository(dbContext);

                // create the project
                ProjectModel project = DataHelper.CreateProjectModel();
                DataHelper.InsertProjectModel(dbContext, project);

                // create the log file record
                LogFileModel logFile = DataHelper.CreateLogFileModel(project.Id);
                DataHelper.InsertLogFileModel(dbContext, logFile);

                int logFileId = dbContext.ExecuteScalar <int>("select last_insert_rowid()");

                LogFileModel result = logFileRepo.GetById(logFileId);
                Assert.IsNotNull(result);
                Assert.AreEqual(logFile.FileHash, result.FileHash);
            }
        }
Beispiel #2
0
        public void GetByHash_Integration_ReturnsData()
        {
            string filePath = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName() + ".dbtest");
            string fileHash = Guid.NewGuid().ToString();

            using (SQLiteDbContext dbContext = new SQLiteDbContext(filePath))
            {
                dbContext.Initialise();

                ILogFileRepository logFileRepo = new LogFileRepository(dbContext);

                // create the project
                ProjectModel project = DataHelper.CreateProjectModel();
                DataHelper.InsertProjectModel(dbContext, project);

                // create the log file record
                LogFileModel logFile = DataHelper.CreateLogFileModel();
                logFile.ProjectId = project.Id;
                logFile.FileHash  = fileHash;
                DataHelper.InsertLogFileModel(dbContext, logFile);

                LogFileModel result = logFileRepo.GetByHash(project.Id, fileHash);
                Assert.IsNotNull(result);
                Assert.AreEqual(logFile.FileName, result.FileName);

                result = logFileRepo.GetByHash(0, fileHash);
                Assert.IsNull(result);
            }
        }
Beispiel #3
0
        private void LogReader(IProgress <string> progress)
        {
            progress.Report("Start");

            var parser         = new CsLogsApi();
            var logRepository  = new BaseRepository(new MongoRepositoryFactory(new ConnectionStringFactory()));
            var fileRepository = new LogFileRepository(new MongoRepositoryFactory(new ConnectionStringFactory()));

            progress.Report($"Read logs from \"{Settings.ConsoleLogsPath}\"");

            var watcher = new Reader(Settings.ConsoleLogsPath, parser, logRepository, fileRepository, progress);

            watcher.Start();
        }
Beispiel #4
0
        public void GetByProject_Integration_ReturnsData()
        {
            string filePath = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName() + ".dbtest");

            using (SQLiteDbContext dbContext = new SQLiteDbContext(filePath))
            {
                dbContext.Initialise();

                ILogFileRepository logFileRepo = new LogFileRepository(dbContext);

                // create the projects
                ProjectModel projectA = DataHelper.CreateProjectModel();
                DataHelper.InsertProjectModel(dbContext, projectA);
                ProjectModel projectZ = DataHelper.CreateProjectModel();
                DataHelper.InsertProjectModel(dbContext, projectZ);

                // create the log file records for ProjectA, as well as some for a different project
                int numRecords = new Random().Next(5, 10);
                for (var i = 0; i < numRecords; i++)
                {
                    LogFileModel logFile = DataHelper.CreateLogFileModel();
                    logFile.ProjectId = projectA.Id;
                    logFile.FileName  = "ProjectA_" + i.ToString();
                    DataHelper.InsertLogFileModel(dbContext, logFile);
                }

                // create the log file records for ProjectB that should be excluded by the query
                for (var i = 0; i < 5; i++)
                {
                    LogFileModel logFile = DataHelper.CreateLogFileModel();
                    logFile.ProjectId = projectZ.Id;
                    logFile.FileName  = "ProjectZ_" + i.ToString();
                    DataHelper.InsertLogFileModel(dbContext, logFile);
                }


                IEnumerable <LogFileModel> result = logFileRepo.GetByProject(projectA.Id);
                Assert.IsNotNull(result);
                Assert.AreEqual(numRecords, result.Count());
                Assert.AreEqual(numRecords, result.Select(x => x.FileName.StartsWith("ProjectA_")).Count());
            }
        }
Beispiel #5
0
        public void Execute_IntegrationTest_SQLite()
        {
            string dbPath = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName() + ".dbtest");

            using (SQLiteDbContext dbContext = new SQLiteDbContext(dbPath))
            {
                dbContext.Initialise();
                dbContext.BeginTransaction();

                // create the project first so we have one
                ProjectModel       project          = DataHelper.CreateProjectModel();
                IProjectValidator  projectValidator = new ProjectValidator();
                ILogFileRepository logFileRepo      = new LogFileRepository(dbContext);

                int        projectId  = new Random().Next(1, 1000);
                string     filePath   = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName() + ".log");
                FileDetail fileDetail = new FileDetail();
                fileDetail.Length = new Random().Next(1000, 10000);
                fileDetail.Hash   = Guid.NewGuid().ToString();
                fileDetail.Name   = Guid.NewGuid().ToString();
                _fileUtils.GetFileHash(filePath).Returns(fileDetail);

                DataHelper.InsertProjectModel(dbContext, project);

                // create the log file
                LogFileModel logFile = DataHelper.CreateLogFileModel();
                logFile.ProjectId = project.Id;
                ILogFileValidator     logFileValidator     = new LogFileValidator();
                ICreateLogFileCommand createLogFileCommand = new CreateLogFileCommand(dbContext, logFileValidator, logFileRepo, _jobRegistrationService, _fileUtils);
                LogFileModel          savedLogFile         = createLogFileCommand.Execute(project.Id, filePath);

                Assert.Greater(savedLogFile.Id, 0);

                int rowCount = dbContext.ExecuteScalar <int>("SELECT COUNT(*) FROM LogFiles");
                Assert.Greater(rowCount, 0);

                string fileName = dbContext.ExecuteScalar <string>("SELECT FileName FROM LogFiles WHERE Id = @Id", savedLogFile);
                Assert.AreEqual(savedLogFile.FileName, fileName);
                Assert.AreEqual(LogFileStatus.Processing, savedLogFile.Status);
            }
        }
        private static void Main()
        {
            Console.WriteLine("Start");

            var parser         = new CsLogsApi();
            var logRepository  = new BaseRepository(new MongoRepositoryFactory(new ConnectionStringFactory()));
            var fileRepository = new LogFileRepository(new MongoRepositoryFactory(new ConnectionStringFactory()));

            Console.WriteLine($"Read logs from \"{Settings.ConsoleLogsPath}\"");

            var watcher = new Reader(Settings.ConsoleLogsPath, parser, logRepository, fileRepository);

            watcher.Start();

            while (Console.ReadKey().Key != ConsoleKey.Escape)
            {
            }

            watcher.Stop();

            Console.WriteLine("Finish");
            Console.ReadLine();
        }