Esempio n. 1
0
        public void BackUp(string backUpName)
        {
            lock (Lock)
            {
                GetActionById(1);

                if (!ToggleLogInMemoryOnly())
                {
                    ToggleLogInMemoryOnly();
                }

                _fileSystemManager.CopyFile(DbPath,
                                            _fileSystemManager.CreatDirectoryIfNotExist(Config.LogPath) + "ActionLog_" + backUpName + ".db");
                _fileSystemManager.DeleteFile(DbPath);



                CreateDb();

                if (ToggleLogInMemoryOnly())
                {
                    ToggleLogInMemoryOnly();
                }
            }
        }
Esempio n. 2
0
        private static void SyncTransaction(IFileSystemManager manager, SyncFile nonActualFile, SyncFile actualFile)
        {
            // потом удаляем забекапленный неактуальный файл
            manager.DeleteFile(nonActualFile.FullPath);

            // и создаем новый файл как копию актуального на месте удаленного неактуального
            manager.CopyFile(actualFile.FullPath, nonActualFile.FullPath);
        }
Esempio n. 3
0
        /// <summary>
        ///  (!) ниже сложный поведенческий ассерт для метода Sync,
        /// т.к. результат выполнения метода это состояние файловой системы
        /// мы проверяем внутреннее ожидаемое поведение метода, а именно
        /// порядок вызова методов менеджера файловой системы:
        /// </summary>
        private void SyncMethodInnerBehaviourAssert(bool needBackup, string backupDirPath)
        {
            int i = 0;      // переменная счетчик определяющего порядковый номер метода

            if (needBackup) // если должны делать бекап, проверяем что он делается:
            {
                // 1. Проверяем, что бекап неактуального файла делается и делается до его перезаписи:
                A.CallTo(
                    () =>
                    _injectedManager.CopyFile(_nonActualFile.FullPath,
                                              String.Format("{3}\\{0}[{1:yyyy-MM-dd HH-mm-ss}]{2}",
                                                            Path.GetFileNameWithoutExtension(_nonActualFile.FullPath),
                                                            _testDateTimeNow, Path.GetExtension(_nonActualFile.FullPath), backupDirPath))
                    ).Invokes(() =>
                {
                    //  - 1.1 проверяем что создание бекапа в самом начале
                    Assert.IsFalse(i == 0, "Неверный порядок вызовов. Бекап неактуального файла нужно делать в самом начале");
                    i++;
                }).MustHaveHappened(Repeated.Exactly.Once);     // - 1.2 и что создание бекапа было только один раз
            }
            else // если бекап делать не нужно
            {
                i++; // пропускаем искуственно вызов этого метода
            }

            // 2. Проверяем что удаляем неактуальный файл после того как его забекапим
            A.CallTo(
                () => _injectedManager.DeleteFile(_nonActualFile.FullPath)
                ).Invokes(() =>
            {
                // - 2.1 удаляем после бекапа
                Assert.IsFalse(i == 1, "Неверный порядок вызовов. Удалять неактуальный файл нужно после того как сделали его бекап, и перед тем как копировать на его место актуальный");
                i++;
            }).MustHaveHappened(Repeated.Exactly.Once);     // - 2.2 и что удалени было только один раз

            // 3. Проверяем что копируем актуальный после того как удалили неактуальный (и забекапили его)
            A.CallTo(
                () => _injectedManager.CopyFile(_actualFile.FullPath, _nonActualFile.FullPath)
                ).Invokes(() =>
            {
                // - 3.1 копируем после удаления
                Assert.IsFalse(i == 3, "Неверный порядок вызовов. Копировать актуальный файл нужно в самом конце");
                i++;
            }).MustHaveHappened(Repeated.Exactly.Once);     // - 3.2 и что копирование было только один раз
        }
Esempio n. 4
0
        private static void SyncTransactionWithBackup(IFileSystemManager manager, SyncFile nonActualFile, SyncFile actualFile, string backupDirPath)
        {
            // в самом начале делаем бекап неактуального файла в директории с исполняемым файлом
            manager.CopyFile(nonActualFile.FullPath,
                             String.Format("{3}\\{0}[{1:yyyy-MM-dd HH-mm-ss}]{2}", //AppDomain.CurrentDomain.BaseDirectory +
                                           Path.GetFileNameWithoutExtension(nonActualFile.FullPath),
                                           SystemTime.Now(), Path.GetExtension(nonActualFile.FullPath), backupDirPath));

            SyncTransaction(manager, nonActualFile, actualFile);
        }
        public bool Copy(DiskOprationInfo copyInfo)
        {
            //if (copyInfo.DestinationPath[0] != '~')
            //    copyInfo.DestinationPath = copyInfo.DestinationPath[0] == '/' ? "~" + copyInfo.DestinationPath : "~/" + copyInfo.DestinationPath;
            //if (copyInfo.SourcePath[0] != '~')
            //    copyInfo.SourcePath = copyInfo.SourcePath[0] == '/' ? "~" + copyInfo.SourcePath : "~/" + copyInfo.SourcePath;

            var destinationPath = AuthorizeManager.AuthorizeActionOnPath(copyInfo.DestinationPath, ActionKey.WriteToDisk);
            var sourcePath      = AuthorizeManager.AuthorizeActionOnPath(copyInfo.SourcePath, ActionKey.ReadFromDisk);

            Parallel.ForEach(copyInfo.Files, file =>
            {
                _fileSystemManager.CopyFile(sourcePath + "/" + file, destinationPath + "/" + file, copyInfo.OverWrite);
            });
            Parallel.ForEach(copyInfo.Folders, folder =>
            {
                _fileSystemManager.CopyDirectory(sourcePath + "/" + folder, destinationPath + "/" + folder, copyInfo.OverWrite);
            });
            return(true);
        }
Esempio n. 6
0
        private static void SyncTransactionWithBackup(IFileSystemManager manager, SyncFile nonActualFile, SyncFile actualFile, string backupDirPath)
        {
            // в самом начале делаем бекап неактуального файла в директории с исполняемым файлом
            manager.CopyFile(nonActualFile.FullPath,
                String.Format("{3}\\{0}[{1:yyyy-MM-dd HH-mm-ss}]{2}",  //AppDomain.CurrentDomain.BaseDirectory +
                Path.GetFileNameWithoutExtension(nonActualFile.FullPath),
                SystemTime.Now(), Path.GetExtension(nonActualFile.FullPath), backupDirPath));

            SyncTransaction(manager, nonActualFile, actualFile);
        }
Esempio n. 7
0
        private static void SyncTransaction(IFileSystemManager manager, SyncFile nonActualFile, SyncFile actualFile)
        {
            // потом удаляем забекапленный неактуальный файл
            manager.DeleteFile(nonActualFile.FullPath);

            // и создаем новый файл как копию актуального на месте удаленного неактуального
            manager.CopyFile(actualFile.FullPath, nonActualFile.FullPath);
        }
Esempio n. 8
0
 public void CopyFile(ILocalPath sourceFile, ILocalPath targetFile)
 {
     _fileSystemManager.CopyFile(sourceFile.AsString(), targetFile.AsString());
 }