Exemplo n.º 1
0
        public void AllUnfixedDllsHaveABackupCreated()
        {
            //Arrange
            SetupFolders();
            UnfixerWorker.Setup(KspTestPath);
            var unfixerWorker = new UnfixerWorker();
            var logicalCores  = Environment.ProcessorCount;


            //Act
            var unfixerWorkers = new UnfixerWorker[logicalCores];
            var unfixerTasks   = new Task[logicalCores];


            for (var i = 0; i < logicalCores; i++)
            {
                unfixerWorkers[i] = new UnfixerWorker();
                unfixerTasks[i]   = unfixerWorkers[i].StartUnfixing(null);
            }

            Task.WaitAll(unfixerTasks);
            var totalUnfixed = UnfixerWorker.UnfixingResultsDictionary.Values.Count(x => x == UnfixState.Unfixed);

            var totalBackups = UnfixerWorker.GetBackupList(Path.Combine(KspTestPath, Resources.GameData)).Count();

            Assert.AreEqual(totalBackups, totalUnfixed);
        }
Exemplo n.º 2
0
        private void  DisplayRestoreWindow()
        {
            var restoreWindow = new RestoreWindow();

            restoreWindow.Show();
            Messenger.Default.Send <List <string> >(UnfixerWorker.GetBackupList(_gameDataPath), "Restore");
        }
Exemplo n.º 3
0
        public void ModsOnTheWhitelistAreNotUnfixed()
        {
            //Arrange
            SetupFolders();
            UnfixerWorker.Setup(KspTestPath);
            var unfixerWorker = new UnfixerWorker();

            //Act
            var taskFirtPass = unfixerWorker.StartUnfixing(null);

            taskFirtPass.Wait();
            var notProcessedDlls = UnfixerWorker.UnfixingResultsDictionary.Values.Count(x => x == UnfixState.WhiteListed);

            //Assert
            Assert.AreEqual(UnfixerWorker.WhiteList.Count, notProcessedDlls);
        }
Exemplo n.º 4
0
        public void MultiWorkersUnfixSuccesfully()
        {
            //Arrange
            var logicalCores = Environment.ProcessorCount;

            SetupFolders();
            UnfixerWorker.Setup(KspTestPath);
            var monoUnfixerWorker = new UnfixerWorker();

            var timeBeforeExecuteMono = DateTime.Now;
            var taskFirtPass          = monoUnfixerWorker.StartUnfixing(null);

            taskFirtPass.Wait();
            var monoTime = DateTime.Now.Subtract(timeBeforeExecuteMono).TotalMilliseconds;

            var monoPassCount = UnfixerWorker.UnfixingResultsDictionary.Values.Count(x => x == UnfixState.Unfixed);


            //Act
            SetupFolders();
            UnfixerWorker.Setup(KspTestPath);
            var unfixerWorkers = new UnfixerWorker [logicalCores];
            var unfixerTasks   = new Task[logicalCores];

            var timeBeforeExecuteMulti = DateTime.Now;

            for (var i = 0; i < logicalCores; i++)
            {
                unfixerWorkers[i] = new UnfixerWorker();
                unfixerTasks[i]   = unfixerWorkers[i].StartUnfixing(null);
            }

            Task.WaitAll(unfixerTasks);
            var multiTime = DateTime.Now.Subtract(timeBeforeExecuteMulti).TotalMilliseconds;

            var multiPassCount = UnfixerWorker.UnfixingResultsDictionary.Values.Count(x => x == UnfixState.Unfixed);

            //Assert
            Assert.AreEqual(monoPassCount, multiPassCount, "Error: multi count = " + multiPassCount + " != mono count= " + monoPassCount);
            Assert.IsTrue(multiTime < monoTime, "Error: Multi Time = " + multiTime + " > Mono time = " + monoTime);
        }
Exemplo n.º 5
0
        public void UnfixRoSuccesfully()
        {
            //Arrange
            SetupFolders();
            UnfixerWorker.Setup(KspTestPath);
            var unfixerWorker = new UnfixerWorker();

            //Act
            var taskFirtPass = unfixerWorker.StartUnfixing(null);

            taskFirtPass.Wait();
            var firstPassCount = UnfixerWorker.UnfixingResultsDictionary.Values.Count(x => x == UnfixState.Unfixed);

            UnfixerWorker.Setup(KspTestPath);
            var taskSecondPass = unfixerWorker.StartUnfixing(null);

            taskSecondPass.Wait();
            var secondPassCount = UnfixerWorker.UnfixingResultsDictionary.Values.Count(x => x == UnfixState.Unfixed);

            //Assert
            Assert.IsTrue(firstPassCount >= 1 && secondPassCount == 0);
        }
Exemplo n.º 6
0
        private void RunUnfixer()
        {
            var logicalCores = Environment.ProcessorCount;

            UnfixerWorker.Setup(Directory.GetParent(GameDataPath).ToString());
            DispatcherHelper.CheckBeginInvokeOnUI(() =>
            {
                NumberOfDlls   = UnfixerWorker.DllsToUnfixQueue.Count;
                FilesProcessed = 0;
            });

            var unfixerWorkers = new UnfixerWorker[logicalCores];
            var unfixerTasks   = new Task[logicalCores];


            for (var i = 0; i < logicalCores; i++)
            {
                unfixerWorkers[i] = new UnfixerWorker();
                unfixerTasks[i]   = unfixerWorkers[i].StartUnfixing(IncrementProgress);
            }

            Task.WaitAll(unfixerTasks);
        }
Exemplo n.º 7
0
        public void UpdateWhiteList()
        {
            //Arrange
            SetupFolders();
            UnfixerWorker.Setup(KspTestPath);
            var unfixerWorker = new UnfixerWorker();

            //Act
            var taskFirtPass = unfixerWorker.StartUnfixing(null);

            taskFirtPass.Wait();
            var errorsDlls = UnfixerWorker.UnfixingResultsDictionary.Where(x => x.Value == UnfixState.Error);

            using (var file =
                       new System.IO.StreamWriter("whitelist.txt", true))
            {
                foreach (var failedDll in errorsDlls)
                {
                    file.WriteLine(Path.GetFileName(failedDll.Key));
                }
            }

            SetupFolders();
            UnfixerWorker.Setup(KspTestPath);
            var unfixerWorker2 = new UnfixerWorker();
            var taskSecondPass = unfixerWorker2.StartUnfixing(null);

            taskSecondPass.Wait();

            var countErrorsDlls = UnfixerWorker.UnfixingResultsDictionary.Count(x => x.Value == UnfixState.Error);


            //Assert
            Assert.AreEqual(0, countErrorsDlls);
            File.Copy("whitelist.txt", @"..\..\..\KSP64TotalUnfixer.Core\whitelist.txt", true);
        }
Exemplo n.º 8
0
 /// <summary>
 /// Initializes a new instance of the MainViewModel class.
 /// </summary>
 public MainViewModel()
 {
     if (IsInDesignMode)
     {
         _gameDataPath   = Path.Combine(Resources.KSPDirectory, Resources.GameData);
         _filesProcessed = 50;
         _numberOfDlls   = 100;
     }
     _filesProcessed = 0;
     _numberOfDlls   = 100;
     DisplayFolderBrowserDialogCommand = new RelayCommand(DisplayFolderBrowserDialog, () => true);
     UnfixCommand = new RelayCommand(UnfixerRunAsyncTask,
                                     () => (_gameDataPath != string.Empty));
     RestoreCommand = new RelayCommand(DisplayRestoreWindow, () => (_gameDataPath != string.Empty && UnfixerWorker.GetBackupList(_gameDataPath).Count > 0));
 }