public void Test_MissingLoggingServer_UseDefault()
        {
            var lmd   = WhenIHaveA <LoadMetadata>();
            var cata1 = lmd.GetAllCatalogues().Single();
            var cata2 = WhenIHaveA <Catalogue>();

            var eds = WhenIHaveA <ExternalDatabaseServer>();

            eds.Name = "My Logging Server";
            eds.SaveToDatabase();

            cata2.LoadMetadata_ID = lmd.ID;

            cata1.LoggingDataTask      = "OMG YEAGH";
            cata1.LiveLoggingServer_ID = null;
            cata2.LoggingDataTask      = "OMG YEAGH";
            cata2.LiveLoggingServer_ID = null;

            var defaults = RepositoryLocator.CatalogueRepository.GetServerDefaults();

            defaults.SetDefault(PermissableDefaults.LiveLoggingServer_ID, eds);

            Assert.AreEqual(2, lmd.GetAllCatalogues().Count());

            var checks = new MetadataLoggingConfigurationChecks(lmd);
            var toMem  = new ToMemoryCheckNotifier();

            checks.Check(toMem);

            AssertFailWithFix("Some catalogues have NULL LiveLoggingServer_ID", $"Set LiveLoggingServer_ID to 'My Logging Server' (the default)", toMem);
        }
        public void Check(ICheckNotifier notifier)
        {
            var catalogueLoadChecks = new CatalogueLoadChecks(LoadMetadata, _loadConfigurationFlags, _databaseConfiguration);
            var metadataLoggingConfigurationChecks = new MetadataLoggingConfigurationChecks(LoadMetadata);
            var processTaskChecks  = new ProcessTaskChecks(LoadMetadata);
            var preExecutionChecks = new PreExecutionChecker(LoadMetadata, _databaseConfiguration);

            _mef.CheckForVersionMismatches(notifier);

            //If the load is a progressable (loaded over time) then make sure any associated caches are compatible with the load ProcessTasks
            foreach (ILoadProgress loadProgress in LoadMetadata.LoadProgresses)
            {
                loadProgress.Check(notifier);

                var cp = loadProgress.CacheProgress;
                if (cp != null)
                {
                    try
                    {
                        var f = new CacheLayoutFactory();
                        f.CreateCacheLayout(loadProgress, LoadMetadata);
                    }
                    catch (Exception e)
                    {
                        notifier.OnCheckPerformed(new CheckEventArgs("Load contains a CacheProgress '" + cp + "' but we were unable to generate an ICacheLayout, see Inner Exception for details", CheckResult.Fail, e));
                    }
                }
            }

            //Make sure there are some load tasks and they are valid
            processTaskChecks.Check(notifier);


            try
            {
                metadataLoggingConfigurationChecks.Check(notifier);

                preExecutionChecks.Check(notifier);

                if (!preExecutionChecks.HardFail)
                {
                    catalogueLoadChecks.Check(notifier);
                }
            }
            catch (Exception e)
            {
                notifier.OnCheckPerformed(new CheckEventArgs("Entire check process crashed in an unexpected way", CheckResult.Fail, e));
            }
        }
        public void Test_NoLoggingTask()
        {
            var lmd   = WhenIHaveA <LoadMetadata>();
            var cata1 = lmd.GetAllCatalogues().Single();
            var cata2 = WhenIHaveA <Catalogue>();

            cata2.LoadMetadata_ID = lmd.ID;

            Assert.AreEqual(2, lmd.GetAllCatalogues().Count());

            var checks = new MetadataLoggingConfigurationChecks(lmd);
            var toMem  = new ToMemoryCheckNotifier();

            checks.Check(toMem);

            AssertFailWithFix("Catalogues Mycata,Mycata do not have a logging task specified", "Create a new Logging Task called 'MyLoad'?", toMem);
        }
        public void Test_MismatchedLoggingTask()
        {
            var lmd   = WhenIHaveA <LoadMetadata>();
            var cata1 = lmd.GetAllCatalogues().Single();
            var cata2 = WhenIHaveA <Catalogue>();

            cata2.LoadMetadata_ID = lmd.ID;

            cata1.LoggingDataTask = "OMG YEAGH";

            Assert.AreEqual(2, lmd.GetAllCatalogues().Count());

            var checks = new MetadataLoggingConfigurationChecks(lmd);
            var toMem  = new ToMemoryCheckNotifier();

            checks.Check(toMem);

            AssertFailWithFix("Some catalogues have NULL LoggingDataTasks", "Set task to OMG YEAGH", toMem);
        }