Exemple #1
0
        private RDMPCommandLineOptions AutomationCommandGetter(CommandLineActivity activityRequested)
        {
            var lp = GetLoadProgressIfAny();

            var debugOpts = (DebugOptions)dd_DebugOptions.SelectedItem;

            var options = new DleOptions
            {
                Command          = activityRequested,
                LoadMetadata     = _loadMetadata.ID,
                Iterative        = cbRunIteratively.Checked,
                DaysToLoad       = Convert.ToInt32(udDaysPerJob.Value),
                DoNotArchiveData = debugOpts != DebugOptions.RunNormally,
                StopAfterRAW     = debugOpts == DebugOptions.StopAfterRAW,
                StopAfterSTAGING = debugOpts == DebugOptions.StopAfterRAW || debugOpts == DebugOptions.StopAfterSTAGING,
            };

            if (lp != null)
            {
                options.LoadProgress = lp.ID;
            }

            return(options);
        }
Exemple #2
0
        public void TestSingleJob(bool overrideRAW, bool sendDodgyCredentials)
        {
            if (sendDodgyCredentials && !overrideRAW)
            {
                throw new NotSupportedException("Cannot send dodgy credentials if you aren't overriding RAW");
            }

            ServerDefaults defaults   = new ServerDefaults(CatalogueRepository);
            var            oldDefault = defaults.GetDefaultFor(PermissableDefaults.RAWDataLoadServer);

            var testDirPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            var testDir     = Directory.CreateDirectory(testDirPath);
            var server      = DiscoveredServerICanCreateRandomDatabasesAndTablesOn;

            var catalogueEntities           = new CatalogueEntities();
            var databaseHelper              = new DatabaseHelper();
            ExternalDatabaseServer external = null;

            try
            {
                // Set SetUp the dataset's project directory and add the CSV file to ForLoading
                var loadDirectory = LoadDirectory.CreateDirectoryStructure(testDir, "TestDataset");
                File.WriteAllText(Path.Combine(loadDirectory.ForLoading.FullName, "1.csv"),
                                  "Col1\r\n1\r\n2\r\n3\r\n4");

                databaseHelper.SetUp(server);

                // Create the Catalogue entities for the dataset
                catalogueEntities.Create(CatalogueRepository, databaseHelper.DatabaseToLoad, loadDirectory);

                if (overrideRAW)
                {
                    external = new ExternalDatabaseServer(CatalogueRepository, "RAW Server", null);
                    external.SetProperties(DiscoveredServerICanCreateRandomDatabasesAndTablesOn.ExpectDatabase("master"));

                    if (sendDodgyCredentials)
                    {
                        external.Username = "******";
                        external.Password = "******";
                    }
                    external.SaveToDatabase();

                    defaults.SetDefault(PermissableDefaults.RAWDataLoadServer, external);
                }

                var options = new DleOptions();
                options.LoadMetadata = catalogueEntities.LoadMetadata.ID;
                options.Command      = CommandLineActivity.check;

                //run checks (with ignore errors if we are sending dodgy credentials)
                new RunnerFactory().CreateRunner(new ThrowImmediatelyActivator(RepositoryLocator), options).Run(RepositoryLocator, new ThrowImmediatelyDataLoadEventListener(),
                                                                                                                sendDodgyCredentials?
                                                                                                                (ICheckNotifier) new IgnoreAllErrorsCheckNotifier(): new AcceptAllCheckNotifier(), new GracefulCancellationToken());

                //run load
                options.Command = CommandLineActivity.run;
                var runner = new RunnerFactory().CreateRunner(new ThrowImmediatelyActivator(RepositoryLocator), options);


                if (sendDodgyCredentials)
                {
                    var ex = Assert.Throws <Exception>(() => runner.Run(RepositoryLocator, new ThrowImmediatelyDataLoadEventListener(), new AcceptAllCheckNotifier(), new GracefulCancellationToken()));
                    Assert.IsTrue(ex.InnerException.Message.Contains("Login failed for user 'IveGotaLovely'"), "Error message did not contain expected text");
                    return;
                }
                else
                {
                    runner.Run(RepositoryLocator, new ThrowImmediatelyDataLoadEventListener(), new AcceptAllCheckNotifier(), new GracefulCancellationToken());
                }


                var archiveFile = loadDirectory.ForArchiving.EnumerateFiles("*.zip").OrderByDescending(f => f.FullName).FirstOrDefault();
                Assert.NotNull(archiveFile, "Archive file has not been created by the load.");
                Assert.IsFalse(loadDirectory.ForLoading.EnumerateFileSystemInfos().Any());
            }
            finally
            {
                //reset the original RAW server
                defaults.SetDefault(PermissableDefaults.RAWDataLoadServer, oldDefault);

                if (external != null)
                {
                    external.DeleteInDatabase();
                }

                testDir.Delete(true);

                databaseHelper.Dispose();
                catalogueEntities.Dispose();
            }
        }
Exemple #3
0
 public DleRunner(DleOptions options)
 {
     _options = options;
 }