Example #1
0
        public void Copy(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID)
        {
            var srcConn = source.OpenConnection();

            try
            {
                var destConn = destination.OpenConnection();
                try
                {
                    destination.BeginTransaction();
                    try
                    {
                        Copy(srcConn, destConn, cruiseID);
                        destination.CommitTransaction();
                    }
                    catch
                    {
                        destination.RollbackTransaction();
                        throw;
                    }
                }
                finally
                {
                    destination.ReleaseConnection();
                }
            }
            finally
            {
                source.ReleaseConnection();
            }
        }
        public void MigrateFromV2ToV3_testUpdaterMigrate(string fileName)
        {
            var filePath = Path.Combine(TestFilesDirectory, fileName);
            // copy file to test temp dir
            var tempPath = Path.Combine(TestTempPath, fileName);

            File.Copy(filePath, tempPath);

            var newFilePath = new Migrator().MigrateFromV2ToV3(filePath, true);

            using (var destDB = new CruiseDatastore_V3())
                using (var srcDB = new CruiseDatastore_V3(newFilePath))
                {
                    try
                    {
                        var destConn = destDB.OpenConnection();
                        Updater_V3.Migrate(srcDB, destDB);

                        var dumpPath = newFilePath + ".dump.crz3";
                        RegesterFileForCleanUp(dumpPath);
                        destDB.BackupDatabase(dumpPath);
                        File.Exists(dumpPath).Should().BeTrue();

                        using (var newdb = new CruiseDatastore_V3(dumpPath))
                        {
                            var tables = newdb.GetTableNames();

                            newdb.AttachDB(srcDB, "olddb");

                            foreach (var t in tables)
                            {
                                var stuff = newdb.QueryGeneric($"SELECT * FROM main.{t} EXCEPT SELECT * FROM olddb.{t};")
                                            .ToArray();

                                if (t == "MessageLog")
                                {
                                    stuff.Should().NotBeEmpty();
                                    continue;
                                }

                                stuff.Should().BeEmpty();
                            }
                        }
                    }
                    finally
                    {
                        destDB.ReleaseConnection();
                    }
                }
        }
Example #3
0
        public void MigrateFromV2ToV3(CruiseDatastore v2db, CruiseDatastore_V3 v3db, string deviceID = null)
        {
            var oldDbAlias = "v2";

            v3db.AttachDB(v2db, oldDbAlias);

            try
            {
                var connection = v3db.OpenConnection();
                MigrateFromV2ToV3(connection, oldDbAlias, deviceID: deviceID, exceptionProcessor: v3db.ExceptionProcessor, migrators: Migrators);
            }
            finally
            {
                v3db.DetachDB(oldDbAlias);
                v3db.ReleaseConnection();
            }
        }