Exemple #1
0
        internal static IDevCommandsConfig AddDatabaseManager(this IDevCommandsConfig config)
        {
            config.Add("dbChanges", () => DatabaseChangeWatcher.DispatchChanges());

            async Task <bool> startDatabase(bool shouldRedirect = false)
            {
                var redirect = Context.Current.Request().ToAbsoluteUri().AsUri().RemoveQueryString("Web.Test.Command").ToString();

                WebTestConfig.SetRunner();
                await TempDatabase.Restart();

                if (shouldRedirect)
                {
                    Debug.WriteLine("All done. Redirecting to: " + redirect);
                    Context.Current.Response().Redirect(redirect);
                }

                return(shouldRedirect);
            }

            foreach (var command in new[] { "start", "run", "ran", "cancel" })
            {
                config.Add(command, () => startDatabase());
            }

            config.Add("restart", () => startDatabase(shouldRedirect: true), "Restart DB");

            return(config);
        }
Exemple #2
0
        public async Task Create(bool dropExisting = false)
        {
            try
            {
                var generator = new TestDatabaseGenerator(DatabaseManager)
                {
                    DropExisting = dropExisting
                };

                if (generator.Process())
                {
                    try { await ReferenceData.Create(); }
                    catch (Exception ex)
                    {
                        throw new Exception("Failed to run the reference data.", ex);
                    }
                }

                Status = TempDatabaseCreationStatus.Created;
            }
            catch
            {
                Status = TempDatabaseCreationStatus.Failed;
                throw;
            }
            finally
            {
                DatabaseChangeWatcher.Restart();
            }
        }
Exemple #3
0
        public static async Task Create(bool dropExisting = false)
        {
            if (!WebTestConfig.IsActive())
            {
                Debug.WriteLine("Creating temp database aborted. Test mode is not active.");
                return;
            }

            try
            {
                if (new TestDatabaseGenerator().Process(Config, dropExisting))
                {
                    try { await(WebTestConfig.ReferenceDataCreator?.Invoke() ?? Task.CompletedTask); }
                    catch (Exception ex)
                    {
                        throw new Exception("Failed to run the reference data.", ex);
                    }
                }
                Status = CreationStatus.Created;
            }
            catch
            {
                Status = CreationStatus.Failed;
                throw;
            }
            finally
            {
                DatabaseChangeWatcher.Restart();
            }
        }
Exemple #4
0
        public override async Task <string> Run()
        {
            await DatabaseChangeWatcher.RunChanges();

            return(null);
        }
Exemple #5
0
        public static async Task Start()
        {
            await Create(enforceRestart : true, mustRenew : true);

            DatabaseChangeWatcher.Restart();
        }
Exemple #6
0
 public override async Task <string> Run() => DatabaseChangeWatcher.DispatchChanges();