Пример #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();
        }
Пример #2
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();
        }
Пример #3
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();
            }
        }
Пример #4
0
        void IProtocol.Handle(TcpSocket.TcpSocketAsyncEventArgs e, byte[] data)
        {
            HttpRequest Request = e.UserToken as HttpRequest;

            if (Request == null)
            {
                Request = HttpParser.ParseRequest(data);
            }
            else
            {
                HttpParser.ParseContent(Request, data, 0, data.Length);
            }
            // ******************************************* //
            // КОСТЫЛЬ?!?!?!?!
            // ******************************************* //
            if (Request.IsContentContinueRead)
            {
                e.UserToken = Request;
                return;
            }
            e.UserToken = null;
            // ******************************************* //
            // END КОСТЫЛЬ?!?!?!?!
            // ******************************************* //

            IControllerContext context = new ControllerContext(Request);

            try
            {
                string dpasKey;
                if (!context.Request.Cookies.TryGetValue("dpas", out dpasKey))
                {
                    dpasKey = Guid.NewGuid().ToString();
                    context.Response.Cookies.Add("dpas", dpasKey);
                }

                context.SetState(dpasKey);

                if (!RequestMvcHandle(context))
                {
                    RequestHandle(context);
                }
            }
            catch (Exception ex)
            {
                RequestError(context, ex, HttpStatusCode.InternalServerError);
            }
            SendResponse(e, context);

            if (!context.Request.Header.IsSupportShouldKeepAlive)
            {
                _server.CloseConnection(e);
            }

            context.Dispose();
        }
Пример #5
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();
        }
Пример #6
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();
        }
Пример #7
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();
            }
        }