コード例 #1
0
        public override void Execute(ExecutionContext context)
        {
            context.AssertRepositoryStarted();

            var path = Path;

            if (!string.IsNullOrEmpty(path))
            {
                path = path.Trim();
            }

            Logger.LogMessage((Recursive ? "Recursive integrity check. Scope: " : "Integrity check on: ") + (path ?? "/Root"));

            var diff = IntegrityChecker.Check(path, Recursive);

            Logger.LogMessage("Integrity check finished. Count of differences: " + diff.Count());

            var outputLimit = OutputLimit == 0 ? int.MaxValue : OutputLimit;
            var lines       = 0;

            foreach (var d in diff)
            {
                Logger.LogMessage("  " + d);
                if (++lines >= outputLimit)
                {
                    Logger.LogMessage("...truncated...");
                    break;
                }
            }
        }
コード例 #2
0
        private void SaveAsFileCommand_Executed(object prm)
        {
            // Save all changes to model
            ControllerVM.ProcessAllChanges();

            // Check data integrity: do not save wrong data
            string s = IntegrityChecker.IsControllerDataOK();

            if (s != null)
            {
                System.Windows.MessageBox.Show(s + "\n\nRegeling niet opgeslagen.", "Error bij opslaan: fout in regeling");
                return;
            }

            // Save data to disk, update saved state
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.OverwritePrompt = true;
            saveFileDialog.Filter          = "TLCGen files|*.tlc|TLCGen compressed files|*.tlcgz";
            if (!string.IsNullOrWhiteSpace(DataProvider.Instance.FileName))
            {
                saveFileDialog.FileName = DataProvider.Instance.FileName;
            }
            if (saveFileDialog.ShowDialog() == true)
            {
                DataProvider.Instance.FileName = saveFileDialog.FileName;
                DataProvider.Instance.SaveController();
                ControllerVM.HasChanged = false;
                OnPropertyChanged("ProgramTitle");
                MessageManager.Instance.Send(new UpdateTabsEnabledMessage());
                ControllerVM.SetStatusText("regeling opgeslagen");
            }
        }
コード例 #3
0
        private void SaveFileCommand_Executed(object prm)
        {
            if (string.IsNullOrWhiteSpace(DataProvider.Instance.FileName))
            {
                SaveAsFileCommand.Execute(null);
            }
            else
            {
                // Save all changes to model
                ControllerVM.ProcessAllChanges();

                // Check data integrity: do not save wrong data
                string s = IntegrityChecker.IsControllerDataOK();
                if (s != null)
                {
                    System.Windows.MessageBox.Show(s + "\n\nRegeling niet opgeslagen.", "Error bij opslaan: fout in regeling");
                    return;
                }

                // Save data to disk, update saved state
                DataProvider.Instance.SaveController();
                ControllerVM.HasChanged = false;
                MessageManager.Instance.Send(new UpdateTabsEnabledMessage());
                ControllerVM.SetStatusText("regeling opgeslagen");
            }
        }
コード例 #4
0
        public ControllerManager(ControllerModel controller)
        {
            if (!IntegrityChecker.IsInterGreenMatrixOK(controller))
            {
                throw new NotImplementedException();
            }

            Initialize(controller);
        }
コード例 #5
0
ファイル: Initializer.cs プロジェクト: pchaozhong/FlexNet
        public static void FinishAllTests()
        {
            var diff = IntegrityChecker.Check();

            Trace.WriteLine("&> Index integrity check after all tests. Count of differences: " + diff.Count());
            foreach (var d in diff)
            {
                Trace.WriteLine("&> " + d);
            }

            Repository.Shutdown();
        }
コード例 #6
0
 public Main()
 {
     InitializeComponent();
     integrityChecker = new IntegrityChecker(AppFiles, ZipFiles, UnpackTo);
     adbService       = new AdbService(AdbExecutablePath);
 }
コード例 #7
0
        public void __Indexing_IndexIntegrityCheck()
        {
            var content = Content.CreateNew("Folder", TestRoot, "1");
            var folder  = (Folder)content.ContentHandler;

            folder.InheritableVersioningMode = InheritableVersioningType.MajorOnly;
            content.Save();


            content = Content.CreateNew("Car", TestRoot, "Car_Indexing_IntegrityCheck_1");
            content.Save();
            var nodeId_1    = content.Id;
            var versionId_1 = content.ContentHandler.VersionId;

            content = Content.CreateNew("Car", TestRoot, "Car_Indexing_IntegrityCheck_2");
            content.Save();
            var nodeId_2    = content.Id;
            var versionId_2 = content.ContentHandler.VersionId;

            content = Content.CreateNew("Car", folder, "Car_Indexing_IntegrityCheck_3");
            content.Save();
            var nodeId_3    = content.Id;
            var versionId_3 = content.ContentHandler.VersionId;

            content = Content.CreateNew("Car", folder, "Car_Indexing_IntegrityCheck_4");
            content.Save();
            var gc          = (GenericContent)content.ContentHandler;
            var nodeId_4    = content.Id;
            var versionId_4 = content.ContentHandler.VersionId;
            var path_4      = gc.Path;

            gc.Index++;
            gc.Save();
            var versionId_5 = content.ContentHandler.VersionId;

            gc.Index++;
            gc.Save();
            var versionId_6 = content.ContentHandler.VersionId;


            var diff0 = IntegrityChecker.Check();

            if (diff0.Count() > 0)
            {
                Assert.Inconclusive("Cannot use this test if the initial state is inconsistent.");
            }

            AddFakeDocument(nodeId_1);
            DeleteDocument(versionId_2);
            Exec(String.Format("UPDATE Nodes SET [Index] = [Index] WHERE NodeId = {0}", nodeId_3));
            Exec(String.Format("UPDATE Versions SET [Status] = [Status] WHERE VersionId = {0}", versionId_4));

            //---- Total
            var diff1 = IntegrityChecker.Check().ToArray();

            Assert.IsTrue(diff1.Length == 4, String.Format("Count is {0}, expected: 4", diff1.Length));

            Assert.IsTrue(diff1[0].Kind == IndexDifferenceKind.NotInIndex, String.Format("diff1[0].Kind is {0}, expected: NotInIndex", diff1[0].Kind));
            Assert.IsTrue(diff1[0].VersionId == versionId_2, String.Format("diff1[0].Kind is {0}, expected: {1}", diff1[0].VersionId, versionId_2));

            Assert.IsTrue(diff1[1].Kind == IndexDifferenceKind.DifferentNodeTimestamp, String.Format("diff1[1].Kind is {0}, expected: NotInIndex", diff1[1].Kind));
            Assert.IsTrue(diff1[1].VersionId == versionId_3, String.Format("diff1[1].VersionId is {0}, expected: {1}", diff1[1].VersionId, versionId_3));
            Assert.IsTrue(diff1[1].DbNodeTimestamp != diff1[1].IxNodeTimestamp, "diff1[1].DbNodeTimestamp == diff1[1].IxNodeTimestamp, expected: different.");
            Assert.IsTrue(diff1[1].DbVersionTimestamp == diff1[1].IxVersionTimestamp, "diff1[1].DbVersionTimestamp != diff1[1].IxVersionTimestamp, expected: equal.");

            Assert.IsTrue(diff1[2].Kind == IndexDifferenceKind.DifferentVersionTimestamp, String.Format("diff1[2].Kind is {0}, expected: NotInIndex", diff1[2].Kind));
            Assert.IsTrue(diff1[2].VersionId == versionId_4, String.Format("diff1[2].VersionId is {0}, expected: {1}", diff1[2].VersionId, versionId_4));
            Assert.IsTrue(diff1[2].DbNodeTimestamp != diff1[2].IxNodeTimestamp, "diff1[2].DbNodeTimestamp == diff1[2].IxNodeTimestamp, expected: different."); // older version !
            Assert.IsTrue(diff1[2].DbVersionTimestamp != diff1[2].IxVersionTimestamp, "diff1[2].DbVersionTimestamp == diff1[2].IxVersionTimestamp, expected: different.");

            Assert.IsTrue(diff1[3].Kind == IndexDifferenceKind.NotInDatabase, String.Format("diff1[3].Kind is {0}, expected: NotInDatabase", diff1[3].Kind));
            Assert.IsTrue(diff1[3].VersionId == 99999, String.Format("diff1[3].VersionId is {0}, expected: 99999", diff1[3].VersionId));
            Assert.IsTrue(diff1[3].NodeId == 99999, String.Format("diff1[3].NodeId is {0}, expected: 99999", diff1[3].NodeId));
            Assert.IsTrue(diff1[3].Path == "/root/fakedocument", String.Format("diff1[3].Path is {0}, expected: /root/fakedocument", diff1[3].Path));

            //---- Subtree
            var diff2 = IntegrityChecker.Check(folder.Path, true).ToArray();

            Assert.IsTrue(diff2[0].Kind == IndexDifferenceKind.DifferentNodeTimestamp, String.Format("diff3[0].Kind is {0}, expected: NotInIndex", diff2[0].Kind));
            Assert.IsTrue(diff2[0].VersionId == versionId_3, String.Format("diff3[0].VersionId is {0}, expected: {1}", diff2[0].VersionId, versionId_3));
            Assert.IsTrue(diff2[0].DbNodeTimestamp != diff2[0].IxNodeTimestamp, "diff3[0].DbNodeTimestamp == diff3[0].IxNodeTimestamp, expected: different.");
            Assert.IsTrue(diff2[0].DbVersionTimestamp == diff2[0].IxVersionTimestamp, "diff3[0].DbVersionTimestamp != diff3[0].IxVersionTimestamp, expected: equal.");

            Assert.IsTrue(diff2[1].Kind == IndexDifferenceKind.DifferentVersionTimestamp, String.Format("diff3[1].Kind is {0}, expected: NotInIndex", diff2[1].Kind));
            Assert.IsTrue(diff2[1].VersionId == versionId_4, String.Format("diff3[1].VersionId is {0}, expected: {1}", diff2[1].VersionId, versionId_4));
            Assert.IsTrue(diff2[1].DbNodeTimestamp != diff2[1].IxNodeTimestamp, "diff3[1].DbNodeTimestamp == diff3[1].IxNodeTimestamp, expected: different."); // older version
            Assert.IsTrue(diff2[1].DbVersionTimestamp != diff2[1].IxVersionTimestamp, "diff3[1].DbVersionTimestamp == diff3[1].IxVersionTimestamp, expected: different.");

            //---- Node not recursive not changed
            var diff3 = IntegrityChecker.Check(folder.Path, false).ToArray();

            Assert.IsTrue(diff3.Length == 0, String.Format("diff3.Length is {0}, expected: 0.", diff3.Length));

            //---- Node not recursive an old version changed
            var diff4 = IntegrityChecker.Check(path_4, false).ToArray();

            Assert.IsTrue(diff4.Length == 1, String.Format("diff4.Length is {0}, expected: 1.", diff3.Length));

            Assert.IsTrue(diff4[0].Kind == IndexDifferenceKind.DifferentVersionTimestamp, String.Format("diff4[0].Kind is {0}, expected: NotInIndex", diff4[0].Kind));
            Assert.IsTrue(diff4[0].VersionId == versionId_4, String.Format("diff4[0].VersionId is {0}, expected: {1}", diff4[0].VersionId, versionId_4));
            Assert.IsTrue(diff4[0].DbNodeTimestamp != diff4[0].IxNodeTimestamp, "diff4[0].DbNodeTimestamp == diff4[0].IxNodeTimestamp, expected: different."); // older version
            Assert.IsTrue(diff4[0].DbVersionTimestamp != diff4[0].IxVersionTimestamp, "diff4[0].DbVersionTimestamp == diff4[0].IxVersionTimestamp, expected: different.");
        }
コード例 #8
0
        private void ImportControllerCommand_Executed(object obj)
        {
            if (obj == null)
            {
                throw new NotImplementedException();
            }
            ITLCGenImporter imp = obj as ITLCGenImporter;

            if (imp == null)
            {
                throw new NotImplementedException();
            }

            // Import into existing controller
            if (!ControllerHasChanged())
            {
                if (imp.ImportsIntoExisting)
                {
                    // Check data integrity
                    string s1 = IntegrityChecker.IsControllerDataOK(ControllerVM.Controller);
                    if (s1 != null)
                    {
                        System.Windows.MessageBox.Show("Kan niet importeren:\n\n" + s1, "Error bij importeren: fout in regeling");
                        return;
                    }
                    // Import to clone of original (so we can discard if wrong)
                    ControllerModel c1 = DeepCloner.DeepClone(ControllerVM.Controller);
                    ControllerModel c2 = imp.ImportController(c1);

                    // Do nothing if the importer returned nothing
                    if (c2 == null)
                    {
                        return;
                    }

                    // Check data integrity
                    s1 = IntegrityChecker.IsControllerDataOK(c2);
                    if (s1 != null)
                    {
                        System.Windows.MessageBox.Show("Fout bij importeren:\n\n" + s1, "Error bij importeren: fout in data");
                        return;
                    }
                    if (ControllerVM != null)
                    {
                        ControllerVM.HasChanged = false; // Set forcefully, in case the user decided to ignore changes above
                    }
                    SetController(c2);
                    ControllerVM.ReloadController();
                    ControllerVM.HasChanged = true;
                }
                // Import as new controller
                else
                {
                    ControllerModel c1 = imp.ImportController();

                    // Do nothing if the importer returned nothing
                    if (c1 == null)
                    {
                        return;
                    }

                    // Check data integrity
                    string s1 = IntegrityChecker.IsControllerDataOK(c1);
                    if (s1 != null)
                    {
                        System.Windows.MessageBox.Show("Fout bij importeren:\n\n" + s1, "Error bij importeren: fout in data");
                        return;
                    }
                    if (ControllerVM != null)
                    {
                        ControllerVM.HasChanged = false; // Set forcefully, in case the user decided to ignore changes above
                    }
                    SetNewController(c1);
                    ControllerVM.ReloadController();
                    ControllerVM.HasChanged = true;
                }
            }
        }