Example #1
0
        public void InvalidSqlInstanceProductMode()
        {
            string          settingsFileName = string.Format("{0}\\Settings.xml", m_TempPath);
            SettingsManager settingsManager  = new SettingsManager(settingsFileName);

            settingsManager.ServiceGuid = s_TestServiceGuid;
            StackHashContextSettings settings = settingsManager.CreateNewContextSettings();

            settings.ErrorIndexSettings.Type      = ErrorIndexType.SqlExpress;
            settings.ErrorIndexSettings.Name      = "TestIndex";
            settings.ErrorIndexSettings.Folder    = m_TempPath;
            settings.SqlSettings.ConnectionString = "Data Source=(local)\\INVALIDEXPRESS;Integrated Security=True";

            settings.IsActive = true; // Force an attempt to activate.

            string         licenseFileName = string.Format("{0}\\License.bin", m_TempPath);
            LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_TestServiceGuid);

            licenseManager.SetLicense(s_LicenseId);

            ScriptManager scriptManager = new ScriptManager(m_ScriptPath);
            IDebugger     debugger      = new Windbg();


            ControllerContext context = new ControllerContext(settings, scriptManager, debugger, settingsManager, false, StackHashTestData.Default, licenseManager);

            Assert.AreEqual(false, context.IsActive);
            Assert.AreEqual(StackHashServiceErrorCode.SqlConnectionError, context.Status.CurrentError);
            Assert.AreNotEqual(null, context.Status.LastContextException);
            context.Dispose();
        }
Example #2
0
        private void buttonDelete_Click(object sender, RoutedEventArgs e)
        {
            StackHashContextSettings settings = listBoxProfiles.SelectedItem as StackHashContextSettings;

            if (settings != null)
            {
                if (StackHashMessageBox.Show(this,
                                             string.Format(CultureInfo.CurrentCulture,
                                                           Properties.Resources.ProfileManager_DeleteProfileMBMessage,
                                                           settings.WinQualSettings.CompanyName,
                                                           settings.ErrorIndexSettings.Folder),
                                             Properties.Resources.ProfileManager_DeleteProfileMBTitle,
                                             StackHashMessageBoxType.YesNo,
                                             StackHashMessageBoxIcon.Question) == StackHashDialogResult.Yes)
                {
                    // if the current context is deleted then go back to the invalid state
                    if (UserSettings.Settings.CurrentContextId == settings.Id)
                    {
                        UserSettings.Settings.CurrentContextId = UserSettings.InvalidContextId;
                    }

                    // remove the context
                    _clientLogic.AdminRemoveContext(settings.Id);
                }
            }
        }
Example #3
0
        /// <summary>
        /// Updates the settings portion of the display context
        /// </summary>
        /// <param name="stackHashContextSettings">Context settings</param>
        public void UpdateSettings(StackHashContextSettings stackHashContextSettings)
        {
            if (stackHashContextSettings == null)
            {
                throw new ArgumentNullException("stackHashContextSettings");
            }
            if (stackHashContextSettings.WinQualSettings == null)
            {
                throw new ArgumentNullException("stackHashContextSettings", "stackHashContextSettings.WinQualSettings is null");
            }
            if (_stackHashContextSettings.Id != stackHashContextSettings.Id)
            {
                throw new InvalidOperationException("Cannot update from a context with a different ID");
            }

            // save the new settings
            StackHashContextSettings oldSettings = _stackHashContextSettings;

            _stackHashContextSettings = stackHashContextSettings;

            // check for updates
            if (oldSettings.IsActive != _stackHashContextSettings.IsActive)
            {
                RaisePropertyChanged("IsActive");
            }
            if (oldSettings.WinQualSettings.CompanyName != _stackHashContextSettings.WinQualSettings.CompanyName)
            {
                RaisePropertyChanged("ProfileName");
            }
        }
Example #4
0
        public void ActivateOk()
        {
            string          settingsFileName = string.Format("{0}\\ServiceSettings.xml", m_TempPath);
            SettingsManager settingsManager  = new SettingsManager(settingsFileName);

            settingsManager.ServiceGuid = s_TestServiceGuid;
            StackHashContextSettings settings = settingsManager.CreateNewContextSettings();

            settings.ErrorIndexSettings.Folder = m_TempPath;
            settings.ErrorIndexSettings.Name   = "TestIndex";
            settings.ErrorIndexSettings.Type   = ErrorIndexType.Xml;


            string         licenseFileName = string.Format("{0}\\License.bin", m_TempPath);
            LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_TestServiceGuid);

            licenseManager.SetLicense(s_LicenseId);

            ScriptManager scriptManager = new ScriptManager(m_ScriptPath);
            IDebugger     debugger      = new Windbg();

            ControllerContext context = new ControllerContext(settings, scriptManager, debugger, settingsManager, true, StackHashTestData.Default, licenseManager);

            Assert.AreEqual(false, context.IsActive);
            Assert.AreEqual(null, context.WinQualSyncTimerTask);

            // Hook up to receive admin events.
            context.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport);

            StackHashClientData clientData = new StackHashClientData(Guid.NewGuid(), "Mark", 24);

            context.Activate(clientData, false);

            // Wait for the activation event.
            m_ActivationAdminEvent.WaitOne(3000);

            Assert.AreEqual(1, m_AllReports.Count);
            Assert.AreEqual(clientData.ApplicationGuid, m_AllReports[0].Report.ClientData.ApplicationGuid);
            Assert.AreEqual(clientData.ClientId, m_AllReports[0].Report.ClientData.ClientId);
            Assert.AreEqual(clientData.ClientName, m_AllReports[0].Report.ClientData.ClientName);
            Assert.AreEqual(clientData.ClientRequestId, m_AllReports[0].Report.ClientData.ClientRequestId);

            Assert.AreEqual(0, m_AllReports[0].Report.ContextId);
            Assert.AreNotEqual(null, m_AllReports[0].Report.Description);
            Assert.AreNotEqual(null, m_AllReports[0].Report.Message);
            Assert.AreEqual(StackHashAdminOperation.ContextStateChanged, m_AllReports[0].Report.Operation);
            Assert.AreEqual(StackHashServiceErrorCode.NoError, m_AllReports[0].Report.ServiceErrorCode);
            Assert.AreEqual(null, m_AllReports[0].Report.LastException);
            Assert.AreEqual(null, m_AllReports[0].Report.LastException);
            Assert.AreEqual(StackHashAdminOperation.ContextStateChanged, m_AllReports[0].Report.Operation);

            StackHashContextStateAdminReport contextChanged = m_AllReports[0].Report as StackHashContextStateAdminReport;

            Assert.AreEqual(true, contextChanged.IsActivationAttempt);
            Assert.AreEqual(true, contextChanged.IsActive);

            Assert.AreEqual(true, context.IsActive);
            Assert.AreNotEqual(null, context.WinQualSyncTimerTask);
            context.Dispose();
        }
Example #5
0
        public void ProductSyncListAddTwoEntriesRemoveFirst()
        {
            String settingsFileName = Path.GetTempFileName();

            File.Delete(settingsFileName);

            try
            {
                SettingsManager          settingsManager = new SettingsManager(settingsFileName);
                StackHashContextSettings contextSettings = settingsManager.CreateNewContextSettings();
                Assert.AreNotEqual(null, contextSettings.WinQualSettings.ProductsToSynchronize);

                settingsManager.SetProductSynchronization(0, 10, true);
                settingsManager.SetProductSynchronization(0, 20, true);
                StackHashSettings currentSettings = settingsManager.CurrentSettings;
                Assert.AreEqual(2, currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.Count);
                StackHashProductSyncData productSyncData = currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.FindProduct(10);
                Assert.AreNotEqual(null, productSyncData);
                Assert.AreEqual(10, productSyncData.ProductId);
                productSyncData = currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.FindProduct(20);
                Assert.AreNotEqual(null, productSyncData);
                Assert.AreEqual(20, productSyncData.ProductId);

                // Check the settings are persisted.
                settingsManager = new SettingsManager(settingsFileName);
                currentSettings = settingsManager.CurrentSettings;
                Assert.AreEqual(2, currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.Count);
                productSyncData = currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.FindProduct(10);
                Assert.AreNotEqual(null, productSyncData);
                Assert.AreEqual(10, productSyncData.ProductId);
                productSyncData = currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.FindProduct(20);
                Assert.AreNotEqual(null, productSyncData);
                Assert.AreEqual(20, productSyncData.ProductId);

                settingsManager.SetProductSynchronization(0, 10, false);
                currentSettings = settingsManager.CurrentSettings;
                Assert.AreEqual(1, currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.Count);
                productSyncData = currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.FindProduct(20);
                Assert.AreNotEqual(null, productSyncData);
                Assert.AreEqual(20, productSyncData.ProductId);

                // Check the settings are persisted.
                settingsManager = new SettingsManager(settingsFileName);
                currentSettings = settingsManager.CurrentSettings;
                Assert.AreEqual(1, currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.Count);
                productSyncData = currentSettings.ContextCollection[0].WinQualSettings.ProductsToSynchronize.FindProduct(20);
                Assert.AreNotEqual(null, productSyncData);
                Assert.AreEqual(20, productSyncData.ProductId);
            }
            finally
            {
                if (File.Exists(settingsFileName))
                {
                    File.Delete(settingsFileName);
                }
            }
        }
Example #6
0
        public void WinQualSyncRunsOnTimer()
        {
            string settingsFileName = string.Format("{0}\\ServiceSettings.xml", m_TempPath);
            SettingsManager settingsManager = new SettingsManager(settingsFileName);
            settingsManager.ServiceGuid = s_TestServiceGuid;

            StackHashContextSettings settings = settingsManager.CreateNewContextSettings();
            settings.ErrorIndexSettings.Folder = m_TempPath;
            settings.ErrorIndexSettings.Name = "TestIndex";
            settings.ErrorIndexSettings.Type = ErrorIndexType.Xml;

            ScriptManager scriptManager = new ScriptManager(m_ScriptPath);
            IDebugger debugger = new Windbg();

            string licenseFileName = string.Format("{0}\\License.bin", m_TempPath);
            LicenseManager licenseManager = new LicenseManager(licenseFileName, s_TestServiceGuid);
            licenseManager.SetLicense(s_LicenseId);


            // Make sure the correct winqual login details are used.
            settings.WinQualSettings.UserName = "******";
            settings.WinQualSettings.Password = "******";
            settings.WinQualSyncSchedule = new ScheduleCollection();
            Schedule schedule = new Schedule();
            schedule.DaysOfWeek = Schedule.EveryDay;
            schedule.Period = SchedulePeriod.Daily;

            DateTime now = DateTime.Now; // Must use local time.
            DateTime syncTime = now.AddSeconds(5);

            schedule.Time = new ScheduleTime(syncTime.Hour, syncTime.Minute, syncTime.Second);
            settings.WinQualSyncSchedule.Add(schedule);


            ControllerContext context = new ControllerContext(settings, scriptManager, debugger, settingsManager, true, StackHashTestData.Default, licenseManager);
            context.AdminReports += new EventHandler<AdminReportEventArgs>(this.OnAdminReport);

            try
            {
                context.Activate();

                Assert.AreEqual(true, m_WinQualSyncEvent.WaitOne(8000));
                Assert.AreEqual(true, m_AnalyzeEvent.WaitOne(5000));

                Assert.AreEqual(1, m_SyncCount);
                Assert.AreEqual(1, m_AnalyzeCount);

                context.Deactivate();
                Assert.AreEqual(false, context.IsActive);
                Assert.AreEqual(null, context.WinQualSyncTimerTask);
            }
            finally
            {
                context.AdminReports -= new EventHandler<AdminReportEventArgs>(this.OnAdminReport);
                context.Dispose();
            }
        }
Example #7
0
        private void buttonTestData_Click(object sender, RoutedEventArgs e)
        {
            DisplayContext context = listViewProfiles.SelectedItem as DisplayContext;

            if (context != null)
            {
                StackHashContextSettings contextSettings = context.StackHashContextSettings;

                AddTestData addTestData = new AddTestData(_clientLogic, contextSettings);
                addTestData.Owner = this;
                addTestData.ShowDialog();
            }
        }
Example #8
0
        /// <summary>
        /// Wrapper class for context settings and status
        /// </summary>
        /// <param name="stackHashContextSettings">Context settings</param>
        /// <param name="stackHashContextStatus">Context status (optional)</param>
        public DisplayContext(StackHashContextSettings stackHashContextSettings, StackHashContextStatus stackHashContextStatus)
        {
            if (stackHashContextSettings == null)
            {
                throw new ArgumentNullException("stackHashContextSettings");
            }
            if (stackHashContextSettings.WinQualSettings == null)
            {
                throw new ArgumentNullException("stackHashContextSettings", "stackHashContextSettings.WinQualSettings is null");
            }

            // ok for stackHashContextStatus to be null
            _stackHashContextSettings = stackHashContextSettings;
            _stackHashContextStatus   = stackHashContextStatus;
        }
Example #9
0
        public ControllerUnitTests()
        {
            StackHashContextSettings contextSettings = new StackHashContextSettings();

            contextSettings.Id = 0;
            contextSettings.WinQualSettings = new WinQualSettings(TestSettings.WinQualUserName, TestSettings.WinQualPassword, "Cucku", 90, new StackHashProductSyncDataCollection(),
                                                                  false, 0, 1, WinQualSettings.DefaultSyncsBeforeResync, false);
            contextSettings.ErrorIndexSettings        = new ErrorIndexSettings();
            contextSettings.ErrorIndexSettings.Folder = Path.GetTempPath() + "\\StackHashIndex";
            contextSettings.ErrorIndexSettings.Name   = "TestController";
            contextSettings.ErrorIndexSettings.Type   = ErrorIndexType.Xml;

            m_Properties = new StackHashSettings();
            m_Properties.ContextCollection = new StackHashContextCollection();
            m_Properties.ContextCollection.Add(contextSettings);
        }
Example #10
0
        private void CompleteAdd()
        {
            Debug.Assert(_currentAddSettings != null);

            if (_currentAddSettings != null)
            {
                ProfileAddEdit profileAdd = new ProfileAddEdit(_currentAddSettings, _allContexts, true, _clientLogic);

                profileAdd.Owner = this;

                if (profileAdd.ShowDialog() == true)
                {
                    // ask the user if they want to activate this profile
                    if (StackHashMessageBox.Show(this,
                                                 string.Format(CultureInfo.CurrentCulture,
                                                               Properties.Resources.ProfileManager_ActivateProfileMBMessage,
                                                               _currentAddSettings.WinQualSettings.CompanyName),
                                                 Properties.Resources.ProfileManager_ActivateProfileMBTitle,
                                                 StackHashMessageBoxType.YesNo,
                                                 StackHashMessageBoxIcon.Question) == StackHashDialogResult.Yes)
                    {
                        _activateRequired  = true;
                        _activateContextId = _currentAddSettings.Id;

                        // if no contexts or no current context then also make this Id the current client context
                        if ((!_haveContexts) || (UserSettings.Settings.CurrentContextId == UserSettings.InvalidContextId))
                        {
                            UserSettings.Settings.CurrentContextId = _currentAddSettings.Id;
                        }
                    }

                    _clientLogic.SaveContextSettings(_currentAddSettings.Id,
                                                     _currentAddSettings,
                                                     profileAdd.CollectionPolicies,
                                                     profileAdd.Plugins,
                                                     profileAdd.WorkFlowMappings,
                                                     _currentAddSettings.IsActive);
                }
                else
                {
                    DeleteContextCore(_currentAddSettings.Id);
                }

                _currentAddSettings = null;
            }
        }
Example #11
0
        void _dbConfigProcess_Exited(object sender, EventArgs e)
        {
            if (this.Dispatcher.CheckAccess())
            {
                Mouse.OverrideCursor = null;

                int exitCode = -1;

                if (_dbConfigProcess != null)
                {
                    exitCode = _dbConfigProcess.ExitCode;
                    _dbConfigProcess.Close();
                    _dbConfigProcess = null;
                }

                // will be 0 on success
                if (exitCode == 0)
                {
                    // reload DB settings
                    DBConfigSettings.Settings.Load();

                    _currentAddSettings.ErrorIndexSettings.Folder   = DBConfigSettings.Settings.ProfileFolder;
                    _currentAddSettings.ErrorIndexSettings.Name     = DBConfigSettings.Settings.ProfileName;
                    _currentAddSettings.ErrorIndexSettings.Type     = ErrorIndexType.SqlExpress;
                    _currentAddSettings.ErrorIndexSettings.Location = DBConfigSettings.Settings.IsDatabaseInCabFolder ? StackHashErrorIndexLocation.InCabFolder : StackHashErrorIndexLocation.OnSqlServer;

                    _currentAddSettings.SqlSettings.ConnectionString = DBConfigSettings.Settings.ConnectionString;
                    _currentAddSettings.SqlSettings.InitialCatalog   = DBConfigSettings.Settings.ProfileName;

                    _currentAddSettings.WinQualSettings.CompanyName = DBConfigSettings.Settings.ProfileName;

                    CompleteAdd();
                }
                else
                {
                    // user cancelled DB config
                    DeleteContextCore(_currentAddSettings.Id);
                    _currentAddSettings = null;
                }
            }
            else
            {
                this.Dispatcher.BeginInvoke(new Action <object, EventArgs>(_dbConfigProcess_Exited), sender, e);
            }
        }
Example #12
0
        public void CheckWinQualSyncParametersInvalidWinQualSchedule()
        {
            try
            {
                string settingsFileName = string.Format("{0}\\ServiceSettings.xml", m_TempPath);
                SettingsManager settingsManager = new SettingsManager(settingsFileName);
                settingsManager.ServiceGuid = s_TestServiceGuid;
                StackHashContextSettings settings = settingsManager.CreateNewContextSettings();
                settings.ErrorIndexSettings.Folder = m_TempPath;
                settings.ErrorIndexSettings.Name = "TestIndex";
                settings.ErrorIndexSettings.Type = ErrorIndexType.Xml;

                ScriptManager scriptManager = new ScriptManager(m_TempPath);
                IDebugger debugger = new Windbg();

                // Make sure the correct winqual login details are used.
                settings.WinQualSettings.UserName = "******";
                settings.WinQualSettings.Password = "******";
                settings.WinQualSyncSchedule = new ScheduleCollection();
                Schedule schedule = new Schedule();
                // schedule.DaysOfWeek = Schedule.EveryDay; - No Daily specified.
                schedule.Period = SchedulePeriod.Daily;

                DateTime now = DateTime.Now; // Must use local time.
                DateTime syncTime = now.AddSeconds(5);

                schedule.Time = new ScheduleTime(syncTime.Hour, syncTime.Minute, syncTime.Second);
                settings.WinQualSyncSchedule.Add(schedule);

                string licenseFileName = string.Format("{0}\\License.bin", m_TempPath);
                LicenseManager licenseManager = new LicenseManager(licenseFileName, s_TestServiceGuid);
                licenseManager.SetLicense(s_LicenseId);

                // Should fail with a param exception.
                // TODO: should the test setting here be false??
                ControllerContext context = new ControllerContext(settings, scriptManager, debugger, settingsManager, true, null, licenseManager);
            }
            catch (StackHashException ex)
            {
                Assert.AreEqual(StackHashServiceErrorCode.ScheduleFormatError, ex.ServiceErrorCode);
            }
        }
Example #13
0
        /// <summary>
        /// Called by the wizard to notify the page that it's now active
        /// </summary>
        public override void PageActivated()
        {
            if (!_firstInitComplete)
            {
                // find the current profile
                StackHashContextSettings profile = null;

                foreach (DisplayContext contextSettings in this.ClientLogic.ContextCollection)
                {
                    if (contextSettings.Id == UserSettings.Settings.CurrentContextId)
                    {
                        profile = contextSettings.StackHashContextSettings;
                    }
                }

                // find and show the global collection policies
                StackHashCollectionPolicy globalCabPolicy   = null;
                StackHashCollectionPolicy globalEventPolicy = null;

                foreach (StackHashCollectionPolicy policy in profile.CollectionPolicy)
                {
                    if ((policy.RootObject == StackHashCollectionObject.Global) &&
                        (policy.ObjectToCollect == StackHashCollectionObject.Cab))
                    {
                        if (policy.ConditionObject == StackHashCollectionObject.Cab)
                        {
                            globalCabPolicy = policy;
                        }
                        else if (policy.ConditionObject == StackHashCollectionObject.Event)
                        {
                            globalEventPolicy = policy;
                        }
                    }
                }

                collectionPolicyControl.SetPolicies(globalCabPolicy, globalEventPolicy, StackHashCollectionObject.Global, 0);

                _firstInitComplete = true;
            }

            this.ClientLogic.ClientLogicSetupWizardPrompt += new EventHandler <ClientLogicSetupWizardPromptEventArgs>(ClientLogic_ClientLogicSetupWizardPrompt);
        }
Example #14
0
        /// <summary>
        /// Adds test data to a profile
        /// </summary>
        /// <param name="clientLogic">ClientLogic</param>
        /// <param name="context">Context (Profile)</param>
        public AddTestData(ClientLogic clientLogic, StackHashContextSettings context)
        {
            if (clientLogic == null)
            {
                throw new ArgumentNullException("clientLogic");
            }
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            _clientLogic = clientLogic;
            _context     = context;

            InitializeComponent();

            if (UserSettings.Settings.HaveWindow(WindowKey))
            {
                UserSettings.Settings.RestoreWindow(WindowKey, this);
            }
        }
Example #15
0
        public void ConstructorInactivePlaintextPassword()
        {
            string          settingsFileName = string.Format("{0}\\Settings.xml", m_TempPath);
            SettingsManager settingsManager  = new SettingsManager(settingsFileName);

            settingsManager.ServiceGuid = s_TestServiceGuid;
            StackHashContextSettings settings = settingsManager.CreateNewContextSettings();

            settings.WinQualSettings.Password = "******";
            settingsManager.SetContextSettings(settings, false);

            string         licenseFileName = string.Format("{0}\\License.bin", m_TempPath);
            LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_TestServiceGuid);

            licenseManager.SetLicense(s_LicenseId);

            ScriptManager scriptManager = new ScriptManager(m_ScriptPath);
            IDebugger     debugger      = new Windbg();

            ControllerContext context = new ControllerContext(settings, scriptManager, debugger, settingsManager, true, StackHashTestData.Default, licenseManager);

            Assert.AreEqual(false, context.IsActive);
            Assert.AreEqual(null, context.WinQualSyncTimerTask);

            String password = settings.WinQualSettings.Password;

            Assert.AreEqual(password, settingsManager.CurrentSettings.ContextCollection[0].WinQualSettings.Password);

            // Reload to make sure the settings file was updated too.
            settingsManager             = new SettingsManager(settingsFileName);
            settingsManager.ServiceGuid = s_TestServiceGuid;
            Assert.AreEqual(password, settingsManager.CurrentSettings.ContextCollection[0].WinQualSettings.Password);

            String [] lines = File.ReadAllLines(settingsFileName);

            foreach (String line in lines)
            {
                Assert.AreEqual(false, line.Contains(settings.WinQualSettings.Password));
            }
            context.Dispose();
        }
Example #16
0
        public void ProductSyncListDefault()
        {
            String settingsFileName = Path.GetTempFileName();

            File.Delete(settingsFileName);

            try
            {
                SettingsManager          settings        = new SettingsManager(settingsFileName);
                StackHashContextSettings contextSettings = settings.CreateNewContextSettings();
                Assert.AreNotEqual(null, contextSettings.WinQualSettings.ProductsToSynchronize);
                Assert.AreEqual(0, contextSettings.WinQualSettings.ProductsToSynchronize.Count);
            }
            finally
            {
                if (File.Exists(settingsFileName))
                {
                    File.Delete(settingsFileName);
                }
            }
        }
Example #17
0
        private void DoEdit()
        {
            DisplayContext context = listViewProfiles.SelectedItem as DisplayContext;

            if (context != null)
            {
                StackHashContextSettings contextSettings = context.StackHashContextSettings;

                ProfileAddEdit profileEdit = new ProfileAddEdit(contextSettings, _allContexts, false, _clientLogic);
                profileEdit.Owner = this;
                if (profileEdit.ShowDialog() == true)
                {
                    _clientLogic.SaveContextSettings(contextSettings.Id,
                                                     contextSettings,
                                                     profileEdit.CollectionPolicies,
                                                     profileEdit.Plugins,
                                                     profileEdit.WorkFlowMappings,
                                                     contextSettings.IsActive);
                }
            }
        }
Example #18
0
        public void ConstructorInactive()
        {
            string          settingsFileName = string.Format("{0}\\Settings.xml", m_TempPath);
            SettingsManager settingsManager  = new SettingsManager(settingsFileName);

            settingsManager.ServiceGuid = s_TestServiceGuid;
            StackHashContextSettings settings = settingsManager.CreateNewContextSettings();

            string         licenseFileName = string.Format("{0}\\License.bin", m_TempPath);
            LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_TestServiceGuid);

            licenseManager.SetLicense(s_LicenseId);

            ScriptManager scriptManager = new ScriptManager(m_ScriptPath);
            IDebugger     debugger      = new Windbg();

            ControllerContext context = new ControllerContext(settings, scriptManager, debugger, settingsManager, true, StackHashTestData.Default, licenseManager);

            Assert.AreEqual(false, context.IsActive);
            Assert.AreEqual(null, context.WinQualSyncTimerTask);
            context.Dispose();
        }
Example #19
0
        private void RunDBConfigForAdd()
        {
            _currentAddSettings = _clientLogic.AdminCollectNewContext();
            Debug.Assert(_currentAddSettings != null);

            if (_currentAddSettings != null)
            {
                try
                {
                    Mouse.OverrideCursor = Cursors.Wait;

                    DBConfigSettings.Settings.ResetSettings();
                    DBConfigSettings.Settings.IsNewProfile    = true;
                    DBConfigSettings.Settings.IsUpgrade       = false;
                    DBConfigSettings.Settings.ServiceHost     = ServiceProxy.Services.ServiceHost;
                    DBConfigSettings.Settings.ServicePort     = ServiceProxy.Services.ServicePort;
                    DBConfigSettings.Settings.ServiceUsername = UserSettings.Settings.ServiceUsername;
                    DBConfigSettings.Settings.ServicePassword = UserSettings.Settings.ServicePassword;
                    DBConfigSettings.Settings.ServiceDomain   = UserSettings.Settings.ServiceDomain;

                    if (_clientLogic.ContextCollection != null)
                    {
                        foreach (DisplayContext existingSettings in _clientLogic.ContextCollection)
                        {
                            DBConfigSettings.Settings.ExistingProfileFolders.Add(existingSettings.StackHashContextSettings.ErrorIndexSettings.Folder);
                            DBConfigSettings.Settings.ExistingProfileNames.Add(existingSettings.StackHashContextSettings.ErrorIndexSettings.Name);
                        }
                    }

                    DBConfigSettings.Settings.Save();

                    _dbConfigProcess = Process.Start("StackHashDBConfig.exe");
                    _dbConfigProcess.EnableRaisingEvents = true;
                    _dbConfigProcess.Exited += new EventHandler(_dbConfigProcess_Exited);
                }
                catch (Exception ex)
                {
                    Mouse.OverrideCursor = null;

                    bool           userCancel = false;
                    Win32Exception win32ex    = ex as Win32Exception;
                    if (win32ex != null)
                    {
                        userCancel = (win32ex.NativeErrorCode == 1223);
                    }

                    if (userCancel)
                    {
                        // user cancelled DB config
                        DeleteContextCore(_currentAddSettings.Id);
                        _currentAddSettings = null;
                    }
                    else
                    {
                        DiagnosticsHelper.LogException(DiagSeverity.ComponentFatal,
                                                       "Failed to launch StackHashDBConfig.exe",
                                                       ex);

                        StackHashMessageBox.Show(this,
                                                 Properties.Resources.DBConfigLaunchFailedMBMessage,
                                                 Properties.Resources.DBConfigLaunchFailedMBTitle,
                                                 StackHashMessageBoxType.Ok,
                                                 StackHashMessageBoxIcon.Error,
                                                 ex,
                                                 StackHashMessageBox.ParseServiceErrorFromException(ex));
                    }
                }
            }
        }
Example #20
0
        /// <summary>
        /// An index will be created in sourceFolder\SourceIndex called SourceIndex.
        /// It will then be moved to destFolder\DestIndex.
        /// If defaultDatabaseLocation is specified then only the cab files will be moved and not the SQL database.
        /// </summary>
        private void runMoveTask(String settingsFolder, String sourceErrorIndexFolder, String sourceErrorIndexName, String destErrorIndexFolder,
                                 String destErrorIndexName, bool defaultDatabaseLocation, StackHashTestIndexData testIndexData)
        {
            String scriptFolder = settingsFolder + "\\Scripts";


            SqlCommands sqlCommands = new SqlCommands(m_ProviderFactory, s_MasterConnectionString, s_MasterConnectionString, 1);

            // Create the source database folders and settings.

            if (sqlCommands.DatabaseExists(destErrorIndexName))
            {
                try { sqlCommands.DeleteDatabase(destErrorIndexName); }
                catch {; }
            }
            if (sqlCommands.DatabaseExists(sourceErrorIndexName))
            {
                try { sqlCommands.DeleteDatabase(sourceErrorIndexName); }
                catch {; }
            }

            if (Directory.Exists(settingsFolder))
            {
                PathUtils.DeleteDirectory(settingsFolder, true);
            }
            if (Directory.Exists(destErrorIndexFolder))
            {
                PathUtils.DeleteDirectory(destErrorIndexFolder, true);
            }
            if (Directory.Exists(sourceErrorIndexFolder))
            {
                PathUtils.DeleteDirectory(sourceErrorIndexFolder, true);
            }

            if (!Directory.Exists(sourceErrorIndexFolder))
            {
                Directory.CreateDirectory(sourceErrorIndexFolder);
            }
            if (!Directory.Exists(settingsFolder))
            {
                Directory.CreateDirectory(settingsFolder);
            }
            if (!Directory.Exists(scriptFolder))
            {
                Directory.CreateDirectory(scriptFolder);
            }
            if (!Directory.Exists(destErrorIndexFolder))
            {
                Directory.CreateDirectory(destErrorIndexFolder);
            }


            try
            {
                // Create a settings manager and a new context.
                SettingsManager          settingsManager = new SettingsManager(settingsFolder + "\\ServiceSettings.XML");
                StackHashContextSettings contextSettings = settingsManager.CreateNewContextSettings();

                contextSettings.ErrorIndexSettings        = new ErrorIndexSettings();
                contextSettings.ErrorIndexSettings.Folder = sourceErrorIndexFolder;
                contextSettings.ErrorIndexSettings.Name   = sourceErrorIndexName;
                contextSettings.ErrorIndexSettings.Type   = ErrorIndexType.SqlExpress;

                contextSettings.SqlSettings = StackHashSqlConfiguration.Default;
                contextSettings.SqlSettings.ConnectionString = s_ConnectionString;
                contextSettings.SqlSettings.InitialCatalog   = sourceErrorIndexName;

                ScriptManager scriptManager = new ScriptManager(scriptFolder);

                string         licenseFileName = string.Format("{0}\\License.bin", settingsFolder);
                LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_ServiceGuid);
                licenseManager.SetLicense(s_LicenseId);

                // Create a dummy controller to record the callbacks.
                BugTrackerManager bugTrackerManager = new BugTrackerManager(new String[0]);

                // Create a dummy controller to record the callbacks.
                ControllerContext controllerContext = new ControllerContext(contextSettings, scriptManager, new Windbg(),
                                                                            settingsManager, true, null, licenseManager);

                // Hook up to receive admin reports.
                controllerContext.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport);

                // Progress reports don't come through the controller context - they come straight through the contoller so create a dummy.
                Controller controller = new Controller();
                Reporter   reporter   = new Reporter(controller);
                controller.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport);


                // ******************************************
                // CREATE THE SOURCE INDEX
                // ******************************************

                // Delete any old index first.
                SqlConnection.ClearAllPools();

                try
                {
                    controllerContext.DeleteIndex();
                }
                catch {; }

                // Activate the context and the associated index - this will create the index if necessary.
                controllerContext.Activate(null, defaultDatabaseLocation);

                String[] databaseFiles = Directory.GetFiles(Path.Combine(sourceErrorIndexFolder, sourceErrorIndexName), "*.mdf");
                Assert.AreEqual(defaultDatabaseLocation, databaseFiles.Length == 0);

                controllerContext.CreateTestIndex(testIndexData);


                Guid guid = new Guid();
                StackHashClientData clientData = new StackHashClientData(guid, "GuidName", 1);


                // ******************************************
                // MOVE TO DESTINATION
                // ******************************************

                // Deactivate before the move.
                controllerContext.Deactivate();

                StackHashSqlConfiguration sqlConfig = new StackHashSqlConfiguration(s_ConnectionString, destErrorIndexName, 1, 100, 15, 100);

                // Move the index.
                controllerContext.RunMoveIndexTask(clientData, destErrorIndexFolder, destErrorIndexName, sqlConfig);

                // Wait for the move task to complete.
                waitForMoveCompleted(60000 * 20);

                Assert.AreEqual(2, m_AdminReports.Count);

                Assert.AreEqual(null, m_AdminReports[0].Report.LastException);
                Assert.AreEqual(0, m_AdminReports[0].Report.ContextId);
                Assert.AreEqual(StackHashAdminOperation.ErrorIndexMoveStarted, m_AdminReports[0].Report.Operation);

                Assert.AreEqual(0, m_AdminReports[1].Report.ContextId);
                Assert.AreEqual(StackHashAdminOperation.ErrorIndexMoveCompleted, m_AdminReports[1].Report.Operation);

                Assert.AreEqual(null, m_AdminReports[1].Report.LastException);
                Assert.AreEqual(StackHashServiceErrorCode.NoError, m_AdminReports[1].Report.ServiceErrorCode);

                if ((testIndexData.NumberOfCabs > 0) && (sourceErrorIndexFolder[0] != destErrorIndexFolder[0]))
                {
                    Assert.AreEqual(true, m_MoveAdminReports.Count > 0);
                }

                controllerContext.AdminReports -= new EventHandler <AdminReportEventArgs>(this.OnAdminReport);

                ErrorIndexSettings destIndexData = new ErrorIndexSettings()
                {
                    Folder = destErrorIndexFolder,
                    Name   = destErrorIndexName,
                    Type   = ErrorIndexType.SqlExpress
                };

                IErrorIndex index1 = getIndex(destIndexData, sqlConfig);

                try
                {
                    index1.Activate();

                    // Make a single call just to ensure the database is still in tact.
                    StackHashProductCollection products = index1.LoadProductList();

                    Assert.AreEqual(testIndexData.NumberOfProducts, products.Count);
                }
                finally
                {
                    index1.Deactivate();
                    index1.Dispose();
                    SqlConnection.ClearAllPools();
                }
            }
            finally
            {
                SqlConnection.ClearAllPools();
                if (sqlCommands.DatabaseExists(destErrorIndexName))
                {
                    try { sqlCommands.DeleteDatabase(destErrorIndexName); }
                    catch {; }
                }
                if (sqlCommands.DatabaseExists(sourceErrorIndexName))
                {
                    try { sqlCommands.DeleteDatabase(sourceErrorIndexName); }
                    catch {; }
                }

                SqlConnection.ClearAllPools();

                if (Directory.Exists(sourceErrorIndexFolder))
                {
                    PathUtils.SetFilesWritable(sourceErrorIndexFolder, true);
                    PathUtils.DeleteDirectory(sourceErrorIndexFolder, true);
                }
                if (Directory.Exists(destErrorIndexFolder))
                {
                    PathUtils.SetFilesWritable(destErrorIndexFolder, true);
                    PathUtils.DeleteDirectory(destErrorIndexFolder, true);
                }
                if (Directory.Exists(settingsFolder))
                {
                    PathUtils.SetFilesWritable(settingsFolder, true);
                    PathUtils.DeleteDirectory(settingsFolder, true);
                }
            }
        }
Example #21
0
        public void SaveLoadSettings()
        {
            StackHashSettings settings = new StackHashSettings();

            settings.ContextCollection = new StackHashContextCollection();

            settings.ProxySettings = new StackHashProxySettings(true, true, "host", 9000, "UserName", "Password", "Domain");

            StackHashContextSettings context1 = new StackHashContextSettings();

            context1.CabFilePurgeSchedule = new ScheduleCollection();
            context1.CabFilePurgeSchedule.Add(new Schedule());
            context1.CabFilePurgeSchedule[0].DaysOfWeek = DaysOfWeek.Monday;
            context1.CabFilePurgeSchedule[0].Period     = SchedulePeriod.Hourly;
            context1.CabFilePurgeSchedule[0].Time       = new ScheduleTime(1, 2, 3);

            context1.ErrorIndexSettings        = new ErrorIndexSettings();
            context1.ErrorIndexSettings.Folder = "C:\\test1";
            context1.ErrorIndexSettings.Name   = "Name1";
            context1.ErrorIndexSettings.Type   = ErrorIndexType.Xml;

            context1.Id = 1;
            StackHashProductSyncDataCollection productsToSync = new StackHashProductSyncDataCollection();

            productsToSync.Add(new StackHashProductSyncData(23));

            context1.WinQualSettings = new WinQualSettings("username", "password", "cucku", 90, productsToSync, true, 30 * 60, 1,
                                                           WinQualSettings.DefaultSyncsBeforeResync, true);
            context1.WinQualSyncSchedule = new ScheduleCollection();
            context1.WinQualSyncSchedule.Add(new Schedule());
            context1.WinQualSyncSchedule[0].DaysOfWeek = DaysOfWeek.Tuesday;
            context1.WinQualSyncSchedule[0].Period     = SchedulePeriod.Weekly;
            context1.WinQualSyncSchedule[0].Time       = new ScheduleTime(4, 5, 6);

            context1.DebuggerSettings            = new StackHashDebuggerSettings();
            context1.DebuggerSettings.BinaryPath = new StackHashSearchPath();
            context1.DebuggerSettings.BinaryPath.Add("C:\\Binary");
            context1.DebuggerSettings.BinaryPath.Add("C:\\Path");

            context1.DebuggerSettings.SymbolPath = new StackHashSearchPath();
            context1.DebuggerSettings.SymbolPath.Add("C:\\Symbol");
            context1.DebuggerSettings.SymbolPath.Add("C:\\Path2");

            context1.DebuggerSettings.BinaryPath64Bit = new StackHashSearchPath();
            context1.DebuggerSettings.BinaryPath64Bit.Add("C:\\Binary64");
            context1.DebuggerSettings.BinaryPath64Bit.Add("C:\\Path64");

            context1.DebuggerSettings.SymbolPath64Bit = new StackHashSearchPath();
            context1.DebuggerSettings.SymbolPath64Bit.Add("C:\\Symbol64");
            context1.DebuggerSettings.SymbolPath64Bit.Add("C:\\Path264");

            context1.DebuggerSettings.DebuggerPathAndFileName      = "C:\\debugger64.exe";
            context1.DebuggerSettings.DebuggerPathAndFileName64Bit = "C:\\debugger64.exe";

            context1.PurgeOptionsCollection = new StackHashPurgeOptionsCollection();


            context1.BugTrackerSettings = new StackHashBugTrackerPlugInSettings();
            context1.BugTrackerSettings.PlugInSettings = new StackHashBugTrackerPlugInCollection();
            context1.BugTrackerSettings.PlugInSettings.Add(new StackHashBugTrackerPlugIn());
            context1.BugTrackerSettings.PlugInSettings[0].Enabled    = true;
            context1.BugTrackerSettings.PlugInSettings[0].Name       = "TestPlugIn";
            context1.BugTrackerSettings.PlugInSettings[0].Properties = new StackHashNameValueCollection();
            context1.BugTrackerSettings.PlugInSettings[0].Properties.Add(new StackHashNameValuePair("Name1", "Value1"));
            context1.BugTrackerSettings.PlugInSettings[0].Properties.Add(new StackHashNameValuePair("Longer name with spaces", "Longer text la la la la la "));
            context1.BugTrackerSettings.PlugInSettings[0].Properties.Add(new StackHashNameValuePair("$pec1al &^%$&\"£! mbols", "Hehhijugiuyhg*(&^%*&^%"));

            StackHashPurgeOptions purgeOptions = new StackHashPurgeOptions();

            purgeOptions.Id             = 22;
            purgeOptions.AgeToPurge     = 90;
            purgeOptions.PurgeCabFiles  = true;
            purgeOptions.PurgeDumpFiles = true;
            purgeOptions.PurgeObject    = StackHashPurgeObject.PurgeFile;
            context1.PurgeOptionsCollection.Add(purgeOptions);

            settings.ContextCollection.Add(context1);

            // Now save the settings to an XML file.
            string tempFile = m_TempPath + "\\testsettings.xml";

            StackHashSettings.Save(settings, tempFile);

            // Now load the new settings and compare them.
            StackHashSettings loadedSettings = StackHashSettings.Load(tempFile);

            Assert.AreEqual(settings.ProxySettings.UseProxy, loadedSettings.ProxySettings.UseProxy);
            Assert.AreEqual(settings.ProxySettings.UseProxyAuthentication, loadedSettings.ProxySettings.UseProxyAuthentication);
            Assert.AreEqual(settings.ProxySettings.ProxyHost, loadedSettings.ProxySettings.ProxyHost);
            Assert.AreEqual(settings.ProxySettings.ProxyPort, loadedSettings.ProxySettings.ProxyPort);
            Assert.AreEqual(settings.ProxySettings.ProxyDomain, loadedSettings.ProxySettings.ProxyDomain);
            Assert.AreEqual(settings.ProxySettings.ProxyUserName, loadedSettings.ProxySettings.ProxyUserName);
            Assert.AreEqual(settings.ProxySettings.ProxyPassword, loadedSettings.ProxySettings.ProxyPassword);


            Assert.AreEqual(settings.ContextCollection.Count, loadedSettings.ContextCollection.Count);

            for (int i = 0; i < settings.ContextCollection.Count; i++)
            {
                StackHashContextSettings contextOriginal = settings.ContextCollection[i];
                StackHashContextSettings contextLoaded   = loadedSettings.ContextCollection[i];

                Assert.AreEqual(contextOriginal.CabFilePurgeSchedule.Count, contextLoaded.CabFilePurgeSchedule.Count);

                for (int j = 0; j < contextOriginal.CabFilePurgeSchedule.Count; j++)
                {
                    Schedule scheduleOriginal = settings.ContextCollection[i].CabFilePurgeSchedule[0];
                    Schedule scheduleLoaded   = loadedSettings.ContextCollection[i].CabFilePurgeSchedule[0];

                    Assert.AreEqual(scheduleOriginal.DaysOfWeek, scheduleLoaded.DaysOfWeek);
                    Assert.AreEqual(scheduleOriginal.Period, scheduleLoaded.Period);
                    Assert.AreEqual(scheduleOriginal.Time.Hour, scheduleLoaded.Time.Hour);
                    Assert.AreEqual(scheduleOriginal.Time.Minute, scheduleLoaded.Time.Minute);
                    Assert.AreEqual(scheduleOriginal.Time.Second, scheduleLoaded.Time.Second);
                }

                Assert.AreEqual(contextOriginal.ErrorIndexSettings.Folder, contextLoaded.ErrorIndexSettings.Folder);
                Assert.AreEqual(contextOriginal.ErrorIndexSettings.Name, contextLoaded.ErrorIndexSettings.Name);
                Assert.AreEqual(contextOriginal.ErrorIndexSettings.Type, contextLoaded.ErrorIndexSettings.Type);

                Assert.AreEqual(contextOriginal.Id, contextLoaded.Id);

                Assert.AreEqual(contextOriginal.WinQualSettings.CompanyName, contextLoaded.WinQualSettings.CompanyName);
                Assert.AreEqual(contextOriginal.WinQualSettings.Password, contextLoaded.WinQualSettings.Password);
                Assert.AreEqual(contextOriginal.WinQualSettings.UserName, contextLoaded.WinQualSettings.UserName);
                Assert.AreEqual(1, contextOriginal.WinQualSettings.ProductsToSynchronize.Count);
                Assert.AreEqual(23, contextOriginal.WinQualSettings.ProductsToSynchronize[0].ProductId);
                Assert.AreEqual(true, contextOriginal.WinQualSettings.EnableNewProductsAutomatically);

                Assert.AreEqual(contextOriginal.WinQualSyncSchedule.Count, contextLoaded.WinQualSyncSchedule.Count);

                for (int j = 0; j < contextOriginal.CabFilePurgeSchedule.Count; j++)
                {
                    Schedule scheduleOriginal = settings.ContextCollection[i].CabFilePurgeSchedule[0];
                    Schedule scheduleLoaded   = loadedSettings.ContextCollection[i].CabFilePurgeSchedule[0];

                    Assert.AreEqual(scheduleOriginal.DaysOfWeek, scheduleLoaded.DaysOfWeek);
                    Assert.AreEqual(scheduleOriginal.Period, scheduleLoaded.Period);
                    Assert.AreEqual(scheduleOriginal.Time.Hour, scheduleLoaded.Time.Hour);
                    Assert.AreEqual(scheduleOriginal.Time.Minute, scheduleLoaded.Time.Minute);
                    Assert.AreEqual(scheduleOriginal.Time.Second, scheduleLoaded.Time.Second);
                }


                Assert.AreEqual(contextOriginal.DebuggerSettings.DebuggerPathAndFileName, contextLoaded.DebuggerSettings.DebuggerPathAndFileName);
                Assert.AreEqual(contextOriginal.DebuggerSettings.BinaryPath[0], contextLoaded.DebuggerSettings.BinaryPath[0]);
                Assert.AreEqual(contextOriginal.DebuggerSettings.BinaryPath[1], contextLoaded.DebuggerSettings.BinaryPath[1]);
                Assert.AreEqual(contextOriginal.DebuggerSettings.SymbolPath[0], contextLoaded.DebuggerSettings.SymbolPath[0]);
                Assert.AreEqual(contextOriginal.DebuggerSettings.SymbolPath[1], contextLoaded.DebuggerSettings.SymbolPath[1]);

                Assert.AreEqual(contextOriginal.DebuggerSettings.DebuggerPathAndFileName64Bit, contextLoaded.DebuggerSettings.DebuggerPathAndFileName64Bit);
                Assert.AreEqual(contextOriginal.DebuggerSettings.BinaryPath64Bit[0], contextLoaded.DebuggerSettings.BinaryPath64Bit[0]);
                Assert.AreEqual(contextOriginal.DebuggerSettings.BinaryPath64Bit[1], contextLoaded.DebuggerSettings.BinaryPath64Bit[1]);
                Assert.AreEqual(contextOriginal.DebuggerSettings.SymbolPath64Bit[0], contextLoaded.DebuggerSettings.SymbolPath64Bit[0]);
                Assert.AreEqual(contextOriginal.DebuggerSettings.SymbolPath64Bit[1], contextLoaded.DebuggerSettings.SymbolPath64Bit[1]);


                Assert.AreEqual(contextOriginal.PurgeOptionsCollection.Count, contextLoaded.PurgeOptionsCollection.Count);
                int purgeOptionIndex = 0;
                foreach (StackHashPurgeOptions oldPurgeOptions in contextOriginal.PurgeOptionsCollection)
                {
                    StackHashPurgeOptions loadedPurgeOptions = contextLoaded.PurgeOptionsCollection[purgeOptionIndex++];

                    Assert.AreEqual(oldPurgeOptions.Id, loadedPurgeOptions.Id);
                    Assert.AreEqual(oldPurgeOptions.AgeToPurge, loadedPurgeOptions.AgeToPurge);
                    Assert.AreEqual(oldPurgeOptions.PurgeCabFiles, loadedPurgeOptions.PurgeCabFiles);
                    Assert.AreEqual(oldPurgeOptions.PurgeDumpFiles, loadedPurgeOptions.PurgeDumpFiles);
                    Assert.AreEqual(oldPurgeOptions.PurgeObject, loadedPurgeOptions.PurgeObject);
                }


                if (contextOriginal.BugTrackerSettings != null)
                {
                    for (int j = 0; j < contextOriginal.BugTrackerSettings.PlugInSettings.Count; j++)
                    {
                        StackHashBugTrackerPlugIn bugTrackerSettings = contextOriginal.BugTrackerSettings.PlugInSettings[j];
                        Assert.AreEqual(contextOriginal.BugTrackerSettings.PlugInSettings[j].Enabled, bugTrackerSettings.Enabled);


                        for (int k = 0; k < bugTrackerSettings.Properties.Count; k++)
                        {
                            Assert.AreEqual(contextOriginal.BugTrackerSettings.PlugInSettings[j].Properties[k],
                                            bugTrackerSettings.Properties[k]);
                        }
                    }
                }
            }
        }
Example #22
0
        public void DownloadCabProductDoesNotExist()
        {
            String errorIndexFolder = Path.GetTempPath() + "StackHashCabDownloadTests";
            String errorIndexName   = "CabDownloads";
            String scriptFolder     = errorIndexFolder + "\\Scripts";

            if (Directory.Exists(errorIndexFolder))
            {
                PathUtils.SetFilesWritable(errorIndexFolder, true);
                PathUtils.DeleteDirectory(errorIndexFolder, true);
            }

            Directory.CreateDirectory(errorIndexFolder);
            Directory.CreateDirectory(scriptFolder);

            try
            {
                // Create a settings manager and a new context.
                SettingsManager          settingsManager = new SettingsManager(errorIndexFolder + "\\ServiceSettings.XML");
                StackHashContextSettings contextSettings = settingsManager.CreateNewContextSettings();

                contextSettings.WinQualSettings = new WinQualSettings("UserName", "Password", "Company", 10,
                                                                      new StackHashProductSyncDataCollection(), false, 0, 1, WinQualSettings.DefaultSyncsBeforeResync, false);

                contextSettings.ErrorIndexSettings        = new ErrorIndexSettings();
                contextSettings.ErrorIndexSettings.Folder = errorIndexFolder;
                contextSettings.ErrorIndexSettings.Name   = errorIndexName;

                ScriptManager scriptManager = new ScriptManager(scriptFolder);

                string         licenseFileName = string.Format("{0}\\License.bin", errorIndexFolder);
                LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_TestServiceGuid);
                licenseManager.SetLicense(s_LicenseId);

                ControllerContext controllerContext = new ControllerContext(contextSettings, scriptManager, new Windbg(),
                                                                            settingsManager, true, StackHashTestData.Default, licenseManager);

                // Activate the context and the associated index.
                controllerContext.Activate();

                // Hook up to receive admin reports.
                controllerContext.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport);

                // Run the download task.
                Guid guid = new Guid();

                StackHashClientData clientData = new StackHashClientData(guid, "GuidName", 1);


                StackHashProduct product  = new StackHashProduct(DateTime.Now, DateTime.Now, "www.files.com", 12345678, "CuckuBackup", 10, 1, "1.2.3.4");
                StackHashFile    file     = new StackHashFile(DateTime.Now, DateTime.Now, 23, DateTime.Now, "FileName", "2.3.4.5");
                StackHashEvent   theEvent = new StackHashEvent(DateTime.Now, DateTime.Now, "EventTypeName", 10, new StackHashEventSignature(), 1, 23);
                StackHashCab     cab      = new StackHashCab(DateTime.Now, DateTime.Now, 10, "EventTypeName", "this.cab", 100, 10000);


                try
                {
                    controllerContext.RunDownloadCabTask(clientData, product, file, theEvent, cab, false);
                }
                catch (ArgumentException ex)
                {
                    Assert.AreEqual(true, ex.Message.Contains("Product does not exist"));
                }
                controllerContext.Deactivate();
                controllerContext.AdminReports -= new EventHandler <AdminReportEventArgs>(this.OnAdminReport);
            }
            finally
            {
                if (Directory.Exists(errorIndexFolder))
                {
                    PathUtils.SetFilesWritable(errorIndexFolder, true);
                    PathUtils.DeleteDirectory(errorIndexFolder, true);
                }
            }
        }
Example #23
0
        public void DownloadCabAllOkDummy()
        {
            String errorIndexFolder = Path.GetTempPath() + "StackHashCabDownloadTests";
            String errorIndexName   = "CabDownloads";
            String scriptFolder     = errorIndexFolder + "\\Scripts";

            if (Directory.Exists(errorIndexFolder))
            {
                PathUtils.SetFilesWritable(errorIndexFolder, true);
                PathUtils.DeleteDirectory(errorIndexFolder, true);
            }

            Directory.CreateDirectory(errorIndexFolder);
            Directory.CreateDirectory(scriptFolder);

            try
            {
                // Create a settings manager and a new context.
                SettingsManager          settingsManager = new SettingsManager(errorIndexFolder + "\\ServiceSettings.XML");
                StackHashContextSettings contextSettings = settingsManager.CreateNewContextSettings();

                contextSettings.WinQualSettings = new WinQualSettings("UserName", "Password", "Company", 10,
                                                                      new StackHashProductSyncDataCollection(), false, 0, 1, WinQualSettings.DefaultSyncsBeforeResync, false);

                contextSettings.ErrorIndexSettings        = new ErrorIndexSettings();
                contextSettings.ErrorIndexSettings.Folder = errorIndexFolder;
                contextSettings.ErrorIndexSettings.Name   = errorIndexName;

                ScriptManager scriptManager = new ScriptManager(scriptFolder);

                string         licenseFileName = string.Format("{0}\\License.bin", errorIndexFolder);
                LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_TestServiceGuid);
                licenseManager.SetLicense(s_LicenseId);

                ControllerContext controllerContext = new ControllerContext(contextSettings, scriptManager, new Windbg(),
                                                                            settingsManager, true, StackHashTestData.Default, licenseManager);

                // Activate the context and the associated index.
                controllerContext.Activate();

                // Hook up to receive admin reports.
                controllerContext.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport);

                // Run the download task.
                Guid guid = new Guid();

                StackHashClientData clientData = new StackHashClientData(guid, "GuidName", 1);


                StackHashProduct product  = new StackHashProduct(DateTime.Now, DateTime.Now, "www.files.com", 12345678, "CuckuBackup", 10, 1, "1.2.3.4");
                StackHashFile    file     = new StackHashFile(DateTime.Now, DateTime.Now, 23, DateTime.Now, "FileName", "2.3.4.5");
                StackHashEvent   theEvent = new StackHashEvent(DateTime.Now, DateTime.Now, "EventTypeName", 10, new StackHashEventSignature(), 1, 23);
                StackHashCab     cab      = new StackHashCab(DateTime.Now, DateTime.Now, 10, "EventTypeName", "this.cab", 100, 10000);

                controllerContext.ErrorIndex.AddProduct(product);
                controllerContext.ErrorIndex.AddFile(product, file);
                controllerContext.ErrorIndex.AddEvent(product, file, theEvent);

                cab.DumpAnalysis = new StackHashDumpAnalysis();
                cab.DumpAnalysis.DotNetVersion = "xxx";
                controllerContext.ErrorIndex.AddCab(product, file, theEvent, cab, false);


                controllerContext.RunDownloadCabTask(clientData, product, file, theEvent, cab, false);

                // Wait for the download task to complete.
                waitForDownloadCompleted(30000);

                Assert.AreEqual(2, m_AdminReports.Count);

                Assert.AreEqual(null, m_AdminReports[0].Report.LastException);
                Assert.AreEqual(0, m_AdminReports[0].Report.ContextId);
                Assert.AreEqual(StackHashAdminOperation.DownloadCabStarted, m_AdminReports[0].Report.Operation);
                Assert.AreEqual(clientData.ApplicationGuid, m_AdminReports[0].Report.ClientData.ApplicationGuid);
                Assert.AreEqual(clientData.ClientId, m_AdminReports[0].Report.ClientData.ClientId);
                Assert.AreEqual(clientData.ClientName, m_AdminReports[0].Report.ClientData.ClientName);
                Assert.AreEqual(clientData.ClientRequestId, m_AdminReports[0].Report.ClientData.ClientRequestId);

                Assert.AreEqual(null, m_AdminReports[1].Report.LastException);
                Assert.AreEqual(0, m_AdminReports[1].Report.ContextId);
                Assert.AreEqual(StackHashAdminOperation.DownloadCabCompleted, m_AdminReports[1].Report.Operation);
                Assert.AreEqual(clientData.ApplicationGuid, m_AdminReports[1].Report.ClientData.ApplicationGuid);
                Assert.AreEqual(clientData.ClientId, m_AdminReports[1].Report.ClientData.ClientId);
                Assert.AreEqual(clientData.ClientName, m_AdminReports[1].Report.ClientData.ClientName);
                Assert.AreEqual(clientData.ClientRequestId, m_AdminReports[1].Report.ClientData.ClientRequestId);

                // Get the cab data to ensure that it is set to downloaded.
                StackHashCabCollection cabs = controllerContext.ErrorIndex.LoadCabList(product, file, theEvent);
                Assert.AreEqual(true, cabs[0].CabDownloaded);

                Assert.AreEqual("xxx", cabs[0].DumpAnalysis.DotNetVersion);

                controllerContext.Deactivate();
                controllerContext.AdminReports -= new EventHandler <AdminReportEventArgs>(this.OnAdminReport);
            }
            finally
            {
                if (Directory.Exists(errorIndexFolder))
                {
                    PathUtils.SetFilesWritable(errorIndexFolder, true);
                    PathUtils.DeleteDirectory(errorIndexFolder, true);
                }
            }
        }
Example #24
0
        public void DownloadCabIdInvalid()
        {
            String errorIndexFolder = Path.GetTempPath() + "StackHashCabDownloadTests";
            String errorIndexName   = "CabDownloads";
            String scriptFolder     = errorIndexFolder + "\\Scripts";

            if (Directory.Exists(errorIndexFolder))
            {
                PathUtils.SetFilesWritable(errorIndexFolder, true);
                PathUtils.DeleteDirectory(errorIndexFolder, true);
            }

            Directory.CreateDirectory(errorIndexFolder);
            Directory.CreateDirectory(scriptFolder);

            try
            {
                // Create a settings manager and a new context.
                SettingsManager          settingsManager = new SettingsManager(errorIndexFolder + "\\ServiceSettings.XML");
                StackHashContextSettings contextSettings = settingsManager.CreateNewContextSettings();

                contextSettings.WinQualSettings = new WinQualSettings(TestSettings.WinQualUserName, TestSettings.WinQualPassword, "Company", 10,
                                                                      new StackHashProductSyncDataCollection(), false, 0, 1, WinQualSettings.DefaultSyncsBeforeResync, false);

                contextSettings.ErrorIndexSettings        = new ErrorIndexSettings();
                contextSettings.ErrorIndexSettings.Folder = errorIndexFolder;
                contextSettings.ErrorIndexSettings.Name   = errorIndexName;

                ScriptManager scriptManager = new ScriptManager(scriptFolder);

                string         licenseFileName = string.Format("{0}\\License.bin", errorIndexFolder);
                LicenseManager licenseManager  = new LicenseManager(licenseFileName, s_TestServiceGuid);
                licenseManager.SetLicense(s_LicenseId);

                ControllerContext controllerContext = new ControllerContext(contextSettings, scriptManager, new Windbg(),
                                                                            settingsManager, false, null, licenseManager);

                // Activate the context and the associated index.
                controllerContext.Activate();

                // Hook up to receive admin reports.
                controllerContext.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport);

                // Run the download task.
                Guid guid = new Guid();

                StackHashClientData clientData = new StackHashClientData(guid, "GuidName", 1);


                // Most of these params are real taking from Crashy.
                StackHashProduct product = new StackHashProduct(DateTime.Parse("2010-04-16T22:31:02Z"), DateTime.Parse("2010-07-07T08:20:58Z"),
                                                                @"https://winqual.microsoft.com/Services/wer/user/files.aspx?productid=25299", 25299, "Crashy", 10, 0, "1.2.3.4");
                StackHashFile file = new StackHashFile(DateTime.Parse("2010-04-19T00:15:00Z"), DateTime.Parse("2010-04-19T00:15:00Z"),
                                                       4232330, DateTime.Parse("2010-04-17T05:21:32Z"), "Crashy.exe", "1.2.3.4");
                StackHashEvent theEvent = new StackHashEvent(DateTime.Parse("2010-04-19T10:20:00Z"), DateTime.Parse("2010-04-19T10:20:00Z"),
                                                             "CLR20 Managed Crash", 1099299922, new StackHashEventSignature(), 13, 4232330);
                StackHashCab cab = new StackHashCab(DateTime.Parse("2010-04-21T16:49:00Z"), DateTime.Parse("2010-04-21T16:49:00Z"),
                                                    1099299922, "CLR20 Managed Crash", "1099299922-CLR20ManagedCrash-0837914903.cab", 0x12345678, 9313620);

                controllerContext.ErrorIndex.AddProduct(product);
                controllerContext.ErrorIndex.AddFile(product, file);
                controllerContext.ErrorIndex.AddEvent(product, file, theEvent);
                controllerContext.ErrorIndex.AddCab(product, file, theEvent, cab, true);


                controllerContext.RunDownloadCabTask(clientData, product, file, theEvent, cab, false);

                // Wait for the download task to complete - could take 5 mins to download.
                waitForDownloadCompleted(5 * 60000);

                Assert.AreEqual(2, m_AdminReports.Count);

                Assert.AreEqual(null, m_AdminReports[0].Report.LastException);
                Assert.AreEqual(0, m_AdminReports[0].Report.ContextId);
                Assert.AreEqual(StackHashAdminOperation.DownloadCabStarted, m_AdminReports[0].Report.Operation);
                Assert.AreEqual(clientData.ApplicationGuid, m_AdminReports[0].Report.ClientData.ApplicationGuid);
                Assert.AreEqual(clientData.ClientId, m_AdminReports[0].Report.ClientData.ClientId);
                Assert.AreEqual(clientData.ClientName, m_AdminReports[0].Report.ClientData.ClientName);
                Assert.AreEqual(clientData.ClientRequestId, m_AdminReports[0].Report.ClientData.ClientRequestId);
                Assert.AreEqual(StackHashAsyncOperationResult.Success, m_AdminReports[0].Report.ResultData);

                Assert.AreEqual(0, m_AdminReports[1].Report.ContextId);
                Assert.AreEqual(StackHashAdminOperation.DownloadCabCompleted, m_AdminReports[1].Report.Operation);
                Assert.AreEqual(clientData.ApplicationGuid, m_AdminReports[1].Report.ClientData.ApplicationGuid);
                Assert.AreEqual(clientData.ClientId, m_AdminReports[1].Report.ClientData.ClientId);
                Assert.AreEqual(clientData.ClientName, m_AdminReports[1].Report.ClientData.ClientName);
                Assert.AreEqual(clientData.ClientRequestId, m_AdminReports[1].Report.ClientData.ClientRequestId);
                Assert.AreEqual(StackHashAsyncOperationResult.Failed, m_AdminReports[1].Report.ResultData);


                Assert.AreNotEqual(null, m_AdminReports[1].Report.LastException);
                Assert.AreEqual(StackHashServiceErrorCode.CabDoesNotExist, m_AdminReports[1].Report.ServiceErrorCode);

                controllerContext.Deactivate();
                controllerContext.AdminReports -= new EventHandler <AdminReportEventArgs>(this.OnAdminReport);
            }
            finally
            {
                if (Directory.Exists(errorIndexFolder))
                {
                    PathUtils.SetFilesWritable(errorIndexFolder, true);
                    PathUtils.DeleteDirectory(errorIndexFolder, true);
                }
            }
        }
Example #25
0
        private void buttonUpgrade_Click(object sender, RoutedEventArgs e)
        {
            StackHashContextSettings settings = listBoxProfiles.SelectedItem as StackHashContextSettings;

            if (settings != null)
            {
                try
                {
                    Mouse.OverrideCursor = Cursors.Wait;

                    DBConfigSettings.Settings.ResetSettings();
                    DBConfigSettings.Settings.IsNewProfile    = true;
                    DBConfigSettings.Settings.IsUpgrade       = true;
                    DBConfigSettings.Settings.ServiceHost     = ServiceProxy.Services.ServiceHost;
                    DBConfigSettings.Settings.ServicePort     = ServiceProxy.Services.ServicePort;
                    DBConfigSettings.Settings.ServiceUsername = UserSettings.Settings.ServiceUsername;
                    DBConfigSettings.Settings.ServicePassword = UserSettings.Settings.ServicePassword;
                    DBConfigSettings.Settings.ServiceDomain   = UserSettings.Settings.ServiceDomain;

                    if (_clientLogic.ContextCollection != null)
                    {
                        foreach (DisplayContext existingSettings in _clientLogic.ContextCollection)
                        {
                            DBConfigSettings.Settings.ExistingProfileFolders.Add(existingSettings.StackHashContextSettings.ErrorIndexSettings.Folder);
                            DBConfigSettings.Settings.ExistingProfileNames.Add(existingSettings.StackHashContextSettings.ErrorIndexSettings.Name);
                        }
                    }

                    DBConfigSettings.Settings.ProfileName      = settings.ErrorIndexSettings.Name;
                    DBConfigSettings.Settings.ProfileFolder    = null; // not populated as user is required to change this
                    DBConfigSettings.Settings.ConnectionString = null;
                    DBConfigSettings.Settings.Save();

                    _copyContextId       = settings.Id;
                    _copyContextIsActive = settings.IsActive;

                    _dbConfigProcess = Process.Start("StackHashDBConfig.exe");
                    _dbConfigProcess.EnableRaisingEvents = true;
                    _dbConfigProcess.Exited += new EventHandler(_dbConfigProcess_Exited);
                }
                catch (Exception ex)
                {
                    Mouse.OverrideCursor = null;

                    bool           userCancel = false;
                    Win32Exception win32ex    = ex as Win32Exception;
                    if (win32ex != null)
                    {
                        userCancel = (win32ex.NativeErrorCode == 1223);
                    }

                    if (!userCancel)
                    {
                        DiagnosticsHelper.LogException(DiagSeverity.ComponentFatal,
                                                       "Failed to launch StackHashDBConfig.exe",
                                                       ex);

                        StackHashMessageBox.Show(this,
                                                 Properties.Resources.DBConfigLaunchFailedMBMessage,
                                                 Properties.Resources.DBConfigLaunchFailedMBTitle,
                                                 StackHashMessageBoxType.Ok,
                                                 StackHashMessageBoxIcon.Error,
                                                 ex,
                                                 StackHashMessageBox.ParseServiceErrorFromException(ex));
                    }
                }
            }
        }
Example #26
0
        public void ChangeParamsWhileActive()
        {
            string settingsFileName = string.Format("{0}\\ServiceSettings.xml", m_TempPath);
            SettingsManager settingsManager = new SettingsManager(settingsFileName);
            settingsManager.ServiceGuid = s_TestServiceGuid;

            StackHashContextSettings settings = settingsManager.CreateNewContextSettings();
            settings.ErrorIndexSettings.Folder = m_TempPath;
            settings.ErrorIndexSettings.Name = "TestIndex";
            settings.ErrorIndexSettings.Type = ErrorIndexType.Xml;

            ScriptManager scriptManager = new ScriptManager(m_ScriptPath);
            IDebugger debugger = new Windbg();

            settings.WinQualSettings.UserName = "******";
            settings.WinQualSettings.Password = "******";
            settings.WinQualSyncSchedule = new ScheduleCollection();
            Schedule schedule = new Schedule();
            schedule.Period = SchedulePeriod.Daily;
            schedule.DaysOfWeek = Schedule.EveryDay;

            DateTime now = DateTime.Now; // Must get local time.
            DateTime syncTime = now.AddSeconds(100);

            schedule.Time = new ScheduleTime(syncTime.Hour, syncTime.Minute, syncTime.Second);
            settings.WinQualSyncSchedule.Add(schedule);

            string licenseFileName = string.Format("{0}\\License.bin", m_TempPath);
            LicenseManager licenseManager = new LicenseManager(licenseFileName, s_TestServiceGuid);
            licenseManager.SetLicense(s_LicenseId);


            ControllerContext context = new ControllerContext(settings, scriptManager, debugger, settingsManager, true, StackHashTestData.Default, licenseManager);
            context.AdminReports += new EventHandler<AdminReportEventArgs>(this.OnAdminReport);

            try
            {
                context.Activate();


                // Create and delete some new context settings - should have no effect.
                StackHashContextSettings settings2 = settingsManager.CreateNewContextSettings();
                settingsManager.RemoveContextSettings(settings2.Id, true);

                // Change the existing active context.
                settings2.Id = 0;
                settings2.ErrorIndexSettings.Folder = m_TempPath;
                settings2.ErrorIndexSettings.Name = "TestIndex";
                settings2.ErrorIndexSettings.Type = ErrorIndexType.Xml;

                settings2.WinQualSettings.UserName = "******";
                settings2.WinQualSettings.Password = "******";
                settings2.WinQualSyncSchedule = new ScheduleCollection();
                schedule = new Schedule();
                schedule.Period = SchedulePeriod.Hourly;
                schedule.DaysOfWeek = Schedule.EveryDay;

                now = DateTime.Now;
                syncTime = now.AddSeconds(5);

                schedule.Time = new ScheduleTime(syncTime.Hour, syncTime.Minute, syncTime.Second);
                settings2.WinQualSyncSchedule.Add(schedule);

                context.UpdateSettings(settings2);

                // Wait for the timer to expire.
                Assert.AreEqual(true, m_WinQualSyncEvent.WaitOne(10000));
                Assert.AreEqual(true, m_AnalyzeEvent.WaitOne(10000));

                Assert.AreEqual(1, m_SyncCount);
                Assert.AreEqual(1, m_AnalyzeCount);

                context.Deactivate();
                Assert.AreEqual(false, context.IsActive);
                Assert.AreEqual(null, context.WinQualSyncTimerTask);
            }
            finally
            {
                context.AdminReports -= new EventHandler<AdminReportEventArgs>(this.OnAdminReport);
                context.Dispose();
            }
        }