Exemplo n.º 1
0
        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();
                    }
                }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            Console.WriteLine(string.Join(',', args));

            try
            {
                if (args.Length > 0)
                {
                    var convertArg = args[0];
                    if (File.Exists(convertArg) == false)
                    {
                        throw new FileNotFoundException("invalid file path", convertArg);
                    }

                    var filePath  = Path.GetFullPath(convertArg);
                    var directory = Path.GetDirectoryName(filePath);
                    var fileName  = Path.GetFileNameWithoutExtension(filePath);
                    var extention = Path.GetExtension(filePath).ToLower();

                    if (extention == ".cruise" || extention == ".cut")
                    {
                        var v3Path = Path.Combine(directory, fileName + ".crz3");
                        Console.WriteLine($"Converting {filePath} --> {v3Path}");

                        using (var v2Db = new DAL(filePath))
                            using (var v3Db = new CruiseDatastore_V3())
                            {
                                new Migrator().MigrateFromV2ToV3(v2Db, v3Db, deviceID: "CruiseCLI");
                                v3Db.BackupDatabase(v3Path);
                            }
                    }
                    else if (extention == ".crz3")
                    {
                        var v2Path = Path.Combine(directory, fileName + ".cruise");
                        Console.WriteLine($"Converting {filePath} --> {v2Path}");

                        using (var v2Db = new DAL())
                            using (var v3Db = new CruiseDatastore_V3(filePath))
                            {
                                var cruiseIDs = v3Db.QueryScalar <string>("SELECT CruiseID FROM Cruise;").ToArray();

                                if (cruiseIDs.Length > 1)
                                {
                                    throw new InvalidOperationException("More than one cruise found");
                                }
                                var cruiseID = cruiseIDs.Single();

                                var downMigrator = new DownMigrator();

                                downMigrator.MigrateFromV3ToV2(cruiseID, v3Db, v2Db, createdBy: "CruiseCLI");
                                v2Db.BackupDatabase(v2Path);
                            }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                Console.ReadLine();
            }
        }