Exemple #1
0
        public void TestPreExecutionChecker_TablesDontExist()
        {
            var tbl = DiscoveredDatabaseICanCreateRandomTablesIn.ExpectTable("Imaginary");

            Assert.IsFalse(tbl.Exists());

            var lmd     = RdmpMockFactory.Mock_LoadMetadataLoadingTable(tbl);
            var checker = new PreExecutionChecker(lmd, new HICDatabaseConfiguration(DiscoveredDatabaseICanCreateRandomTablesIn.Server));
            var ex      = Assert.Throws <Exception>(() => checker.Check(new ThrowImmediatelyCheckNotifier()));

            StringAssert.IsMatch("Table '.*Imaginary.*' does not exist", ex.Message);
        }
Exemple #2
0
        public void TestPreExecutionChecker_TablesDontExist()
        {
            var db  = GetCleanedServer(FAnsi.DatabaseType.MicrosoftSQLServer);
            var tbl = db.ExpectTable("Imaginary");

            Assert.IsFalse(tbl.Exists());

            var lmd     = RdmpMockFactory.Mock_LoadMetadataLoadingTable(tbl);
            var checker = new PreExecutionChecker(lmd, new HICDatabaseConfiguration(db.Server));
            var ex      = Assert.Throws <Exception>(() => checker.Check(new ThrowImmediatelyCheckNotifier()));

            StringAssert.IsMatch("Table '.*Imaginary.*' does not exist", ex.Message);
        }
Exemple #3
0
        public void TestPreExecutionChecker_TableIsTableValuedFunction()
        {
            TestableTableValuedFunction f = new TestableTableValuedFunction();

            f.Create(DiscoveredDatabaseICanCreateRandomTablesIn, CatalogueRepository);

            var tbl = f.TableInfoCreated.Discover(DataAccessContext.DataLoad);

            Assert.IsTrue(tbl.Exists());

            var lmd     = RdmpMockFactory.Mock_LoadMetadataLoadingTable(f.TableInfoCreated);
            var checker = new PreExecutionChecker(lmd, new HICDatabaseConfiguration(DiscoveredDatabaseICanCreateRandomTablesIn.Server));
            var ex      = Assert.Throws <Exception>(() => checker.Check(new ThrowImmediatelyCheckNotifier()));

            StringAssert.IsMatch("Table '.*MyAwesomeFunction.*' is a TableValuedFunction", ex.Message);
        }
Exemple #4
0
        private void RunAttachStageWithNormalJob(RemoteTableAttacher attacher, DiscoveredDatabase db)
        {
            //the table to get data from
            attacher.RemoteTableName = "table1";
            attacher.RAWTableName    = "table2";

            attacher.Check(new ThrowImmediatelyCheckNotifier());

            attacher.Initialize(null, db);

            using (var dt = new DataTable())
            {
                dt.Columns.Add("Col1");
                dt.Rows.Add("fff");

                var tbl1 = db.CreateTable("table1", dt);
                var tbl2 = db.CreateTable("table2", new [] { new DatabaseColumnRequest("Col1", new DatabaseTypeRequest(typeof(string), 5)) });

                Assert.AreEqual(1, tbl1.GetRowCount());
                Assert.AreEqual(0, tbl2.GetRowCount());

                var logManager = new LogManager(new DiscoveredServer(UnitTestLoggingConnectionString));

                var lmd = RdmpMockFactory.Mock_LoadMetadataLoadingTable(tbl2);
                Mock.Get(lmd).Setup(p => p.CatalogueRepository).Returns(CatalogueRepository);
                logManager.CreateNewLoggingTaskIfNotExists(lmd.GetDistinctLoggingTask());

                var dbConfiguration = new HICDatabaseConfiguration(lmd, RdmpMockFactory.Mock_INameDatabasesAndTablesDuringLoads(db, "table2"));

                var job = new DataLoadJob(RepositoryLocator, "test job", logManager, lmd, new TestLoadDirectory(), new ThrowImmediatelyDataLoadEventListener(), dbConfiguration);
                job.StartLogging();
                attacher.Attach(job, new GracefulCancellationToken());

                Assert.AreEqual(1, tbl1.GetRowCount());
                Assert.AreEqual(1, tbl2.GetRowCount());
            }
        }
Exemple #5
0
        private void RunAttachStageWithLoadProgressJob(RemoteTableAttacher attacher, DiscoveredDatabase db,
                                                       bool mismatchProgress)
        {
            var syntax = db.Server.GetQuerySyntaxHelper();

            //the table to get data from
            attacher.RemoteSelectSQL = $"SELECT * FROM table1 WHERE {syntax.EnsureWrapped("DateCol")} >= @startDate AND {syntax.EnsureWrapped("DateCol")} <= @endDate";
            attacher.RAWTableName    = "table2";

            attacher.Check(new ThrowImmediatelyCheckNotifier());

            attacher.Initialize(null, db);

            using (var dt = new DataTable())
            {
                dt.Columns.Add("Col1");
                dt.Columns.Add("DateCol");

                dt.Rows.Add("fff", new DateTime(2000, 1, 1));
                dt.Rows.Add("fff", new DateTime(2001, 1, 1));
                dt.Rows.Add("fff", new DateTime(2002, 1, 1));


                var tbl1 = db.CreateTable("table1", dt);
                var tbl2 = db.CreateTable("table2", new []
                {
                    new DatabaseColumnRequest("Col1", new DatabaseTypeRequest(typeof(string), 5)),
                    new DatabaseColumnRequest("DateCol", new DatabaseTypeRequest(typeof(DateTime)))
                });

                Assert.AreEqual(3, tbl1.GetRowCount());
                Assert.AreEqual(0, tbl2.GetRowCount());

                var logManager = new LogManager(new DiscoveredServer(UnitTestLoggingConnectionString));

                var lmd = RdmpMockFactory.Mock_LoadMetadataLoadingTable(tbl2);
                Mock.Get(lmd).Setup(p => p.CatalogueRepository).Returns(CatalogueRepository);
                logManager.CreateNewLoggingTaskIfNotExists(lmd.GetDistinctLoggingTask());

                var lp = new LoadProgress(CatalogueRepository, new LoadMetadata(CatalogueRepository, "ffffff"));
                lp.OriginDate     = new DateTime(2001, 1, 1);
                attacher.Progress = lp;
                attacher.ProgressUpdateStrategy = new DataLoadProgressUpdateInfo()
                {
                    Strategy = DataLoadProgressUpdateStrategy.DoNothing
                };

                var dbConfiguration = new HICDatabaseConfiguration(lmd, RdmpMockFactory.Mock_INameDatabasesAndTablesDuringLoads(db, "table2"));

                var job = new ScheduledDataLoadJob(RepositoryLocator, "test job", logManager, lmd, new TestLoadDirectory(), new ThrowImmediatelyDataLoadEventListener(), dbConfiguration);

                job.LoadProgress = mismatchProgress
                    ? new LoadProgress(CatalogueRepository, new LoadMetadata(CatalogueRepository, "ffsdf"))
                    : lp;
                job.DatesToRetrieve = new List <DateTime> {
                    new DateTime(2001, 01, 01)
                };
                job.StartLogging();
                attacher.Attach(job, new GracefulCancellationToken());

                Assert.AreEqual(3, tbl1.GetRowCount());
                Assert.AreEqual(mismatchProgress ? 0 : 1, tbl2.GetRowCount());
            }
        }