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); }
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(); } }
public DleRunner(DleOptions options) { _options = options; }