示例#1
0
        public void HandlerSelector_HasDefault()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For <TestMain2>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve <TestMain2>().Resolved);

            var h = new TestHandlerSelector_HasDefault();

            windsor.Kernel.AddHandlerSelector(h);
            //原始默认组件
            windsor.Register(Component.For <ITest>().ImplementedBy <Test1>());
            //新组件
            windsor.Register(Component.For <ITest>().ImplementedBy <Test2>());

            //通过HandlerSelector启用新组件为默认组件
            h.Enable = true;
            Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved);
            Assert.IsInstanceOf <Test2>(windsor.Resolve <TestMain2>().Dependency);

            //通过HandlerSelector取消新组件
            h.Enable = false;
            Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved);
            //切换回原默认组件
            Assert.IsInstanceOf <Test1>(windsor.Resolve <TestMain2>().Dependency);
        }
示例#2
0
        public void ConstructorDependency()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For<TestMain1>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve<TestMain1>().Resolved);

            windsor.Register(Component.For<ITest>().ImplementedBy<Test1>());
            Assert.IsTrue(windsor.Resolve<TestMain1>().Resolved);
        }
示例#3
0
        public void ConstructorDependency()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For <TestMain1>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve <TestMain1>().Resolved);

            windsor.Register(Component.For <ITest>().ImplementedBy <Test1>());
            Assert.IsTrue(windsor.Resolve <TestMain1>().Resolved);
        }
示例#4
0
        public void HandlerSelector()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            ServiceFramework.Configuration.Configure().Castle(windsor).Endpoint();
            var c = (ServiceFramework.Configuration.Instance() as ConfigurationWithCastle).WindsorContainer;

            windsor.Resolve <RemoteServiceInterceptor>();
            Assert.Throws(typeof(Castle.MicroKernel.Handlers.HandlerException)
                          , () => windsor.Resolve <CodeSharp.ServiceFramework.Castles.WindsorContainer.RemovedInterceptor>());

            //首次依赖不满足
            windsor.Register(Component.For <TestMain2>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve <TestMain2>().Resolved);
            //注册远程组件
            c.RegisterRemoteServices(typeof(ITest));
            Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved);
            //卸载远程组件
            c.ClearRemoteServices(typeof(ITest));
            Assert.IsFalse(windsor.Resolve <TestMain2>().Resolved);
            //本地实现注册
            windsor.Register(Component.For <ITest>().ImplementedBy <Test1>().IsDefault());
            Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved);
            Assert.IsInstanceOf <Test1>(windsor.Resolve <TestMain2>().Dependency);
            //重新注册远程组件
            c.RegisterRemoteServices(typeof(ITest));
            Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved);
            Assert.IsNotInstanceOf <Test1>(windsor.Resolve <TestMain2>().Dependency);
        }
示例#5
0
        public void IsDefault()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For <ITest>().ImplementedBy <Test1>());
            Assert.IsInstanceOf <Test1>(windsor.Resolve <ITest>());

            windsor.Register(Component.For <ITest>().ImplementedBy <Test2>().IsDefault());
            Assert.IsInstanceOf <Test2>(windsor.Resolve <ITest>());

            //不支持注册Null
            Assert.Throws(typeof(ArgumentNullException), () => windsor.Register(Component.For <ITest>().Instance(null).IsDefault()));

            //覆盖默认组件为“没有设置proxy”
            //非法的注册总是导致失败
            windsor.Register(Component.For <ITest>().IsDefault());
            Assert.Throws(typeof(Castle.MicroKernel.ComponentRegistrationException), () => windsor.Resolve <ITest>());
        }
示例#6
0
文件: Tests.cs 项目: lafar6502/cogmon
 public static void TestTask(string serializedTaskFile)
 {
     string json = null;
     using (var sr = new StreamReader(serializedTaskFile, Encoding.UTF8))
     {
         json = sr.ReadToEnd();
     }
     var tsk = JsonConvert.DeserializeObject<ScheduledTask>(json);
     var st = new JobScheduler.SchedTask
     {
         Id = tsk.Id,
         NextTrigger = DateTime.Now,
         TaskData = tsk
     };
     var wc = new Castle.Windsor.WindsorContainer();
     ServiceConfigurator.Begin(wc)
         .FinishConfiguration();
     wc.Resolve<JobScheduler>().RunTask(st);
 }
示例#7
0
文件: Tests.cs 项目: lafar6502/cogmon
 public static void TestJob(string jobId)
 {
     var wc = new Castle.Windsor.WindsorContainer();
     ServiceConfigurator.Begin(wc)
         .FinishConfiguration();
     var js = wc.Resolve<JobScheduler>();
     js.TestJobId = jobId;
     foreach (var st in wc.ResolveAll<NGinnBPM.MessageBus.Impl.IStartableService>())
     {
         st.Start();
     }
     Console.WriteLine("Testing job {0}. Hit enter to stop", jobId);
     Console.ReadLine();
     foreach (var st in wc.ResolveAll<NGinnBPM.MessageBus.Impl.IStartableService>())
     {
         st.Stop();
     }
     wc.Dispose();
 }
示例#8
0
        public void HandlerSelector()
        {
            var windsor = new Castle.Windsor.WindsorContainer();
            ServiceFramework.Configuration.Configure().Castle(windsor).Endpoint();
            var c = (ServiceFramework.Configuration.Instance() as ConfigurationWithCastle).WindsorContainer;
            windsor.Resolve<RemoteServiceInterceptor>();
            Assert.Throws(typeof(Castle.MicroKernel.Handlers.HandlerException)
                , () => windsor.Resolve<CodeSharp.ServiceFramework.Castles.WindsorContainer.RemovedInterceptor>());

            //首次依赖不满足
            windsor.Register(Component.For<TestMain2>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve<TestMain2>().Resolved);
            //注册远程组件
            c.RegisterRemoteServices(typeof(ITest));
            Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved);
            //卸载远程组件
            c.ClearRemoteServices(typeof(ITest));
            Assert.IsFalse(windsor.Resolve<TestMain2>().Resolved);
            //本地实现注册
            windsor.Register(Component.For<ITest>().ImplementedBy<Test1>().IsDefault());
            Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved);
            Assert.IsInstanceOf<Test1>(windsor.Resolve<TestMain2>().Dependency);
            //重新注册远程组件
            c.RegisterRemoteServices(typeof(ITest));
            Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved);
            Assert.IsNotInstanceOf<Test1>(windsor.Resolve<TestMain2>().Dependency);
        }
示例#9
0
        public void IsDefault()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For<ITest>().ImplementedBy<Test1>());
            Assert.IsInstanceOf<Test1>(windsor.Resolve<ITest>());

            windsor.Register(Component.For<ITest>().ImplementedBy<Test2>().IsDefault());
            Assert.IsInstanceOf<Test2>(windsor.Resolve<ITest>());

            //不支持注册Null
            Assert.Throws(typeof(ArgumentNullException), () => windsor.Register(Component.For<ITest>().Instance(null).IsDefault()));

            //覆盖默认组件为“没有设置proxy”
            //非法的注册总是导致失败
            windsor.Register(Component.For<ITest>().IsDefault());
            Assert.Throws(typeof(Castle.MicroKernel.ComponentRegistrationException), () => windsor.Resolve<ITest>());
        }
示例#10
0
        public void HandlerSelector_HasDefault()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For<TestMain2>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve<TestMain2>().Resolved);

            var h = new TestHandlerSelector_HasDefault();
            windsor.Kernel.AddHandlerSelector(h);
            //原始默认组件
            windsor.Register(Component.For<ITest>().ImplementedBy<Test1>());
            //新组件
            windsor.Register(Component.For<ITest>().ImplementedBy<Test2>());

            //通过HandlerSelector启用新组件为默认组件
            h.Enable = true;
            Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved);
            Assert.IsInstanceOf<Test2>(windsor.Resolve<TestMain2>().Dependency);

            //通过HandlerSelector取消新组件
            h.Enable = false;
            Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved);
            //切换回原默认组件
            Assert.IsInstanceOf<Test1>(windsor.Resolve<TestMain2>().Dependency);
        }
示例#11
0
        /// <summary>
        /// main entry point of the application
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //setup Dependency Container
            SetupContainer();
            //register Dependencies
            RegisterComponents();

            int exitCode = 0x0;

            try
            {
                var cmdCollection = _container.Resolve <SpreadsheetCmdCollection>();
                var sheetPrinter  = _container.Resolve <ISheetPrinter>();

                //variable that hold the current sheet
                ISheet currentSheet = null;
                while (true)
                {
                    Console.Write("enter command:");

                    //extract a series of parameters in user input with a space separator
                    //format of the command line: <command key> <param1> <param2> <param3> ...
                    //e.g. N 5 6
                    string[] input = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                    //command key is the first parameter
                    string cmdKey = input.Length > 0 ? input[0] : "";

                    if (cmdKey.Equals("Q"))
                    {
                        //break the loop amd end this application
                        break;
                    }

                    //the subsequent parameters will be used as command arguments
                    string[] cmdArgs = input.Length > 1 ? input.Skip(1).ToArray() : new string[] { };

                    //start matching the command key with the registered commands
                    if (cmdCollection.CommandCollection.ContainsKey(cmdKey))
                    {
                        var cmd    = cmdCollection.CommandCollection[cmdKey];
                        var result = cmd.Execute(currentSheet, cmdArgs);
                        if (result.Success)
                        {
                            currentSheet = result.Spreadsheet;
                            sheetPrinter.PrintContent(currentSheet, Console.Out);
                        }
                        else
                        {
                            Console.WriteLine(result.ErrorMessage);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Invalid Command");
                    }
                }
            }
            catch (Exception ex)
            {
                //unexpected error goes to here
                exitCode = ex.HResult;
            }
            finally
            {
                //set exit code
                Environment.ExitCode = exitCode;
                //dispose dependencies
                _container.Dispose();
            }
        }
示例#12
0
        /// <summary>
        /// Fires when the windows service starts.
        /// </summary>
        /// <param name="args">The arguments passed, if any.</param>
        protected override void OnStart(string[] args)
        {
            LoggerContainer.Instance.Info("Cache Host is starting", "Cache Host is starting");

            // Configure the thread pool's minimum threads
            ThreadPool.SetMinThreads(128, 128);

            LoggerContainer.Instance.Info("Cache Host is starting", "Verifying settings");

            try
            {
                IWindsorContainer container = new Castle.Windsor.WindsorContainer();
                // Initialize the mem cache container instance
                var physicalMemoryLimitPercentage = CacheHostConfigurationSection.Settings.CacheMemoryLimitPercentage;

                var cacheConfig = new NameValueCollection();
                cacheConfig.Add("pollingInterval", "00:00:15");
                cacheConfig.Add("physicalMemoryLimitPercentage", physicalMemoryLimitPercentage.ToString());

                // Initialize the client to cache service host
                ServiceHost clientToCacheServiceHost = SetupServiceHost();
                Uri serviceHostAddress = clientToCacheServiceHost.Description.Endpoints.First().Address.Uri;
                container.Install(new MemcacheInstaller(string.Format("{0}_{1}", serviceHostAddress.Host, serviceHostAddress.Port), false));
                CustomPerformanceCounterManagerContainer.Instance = container.Resolve<CustomPerformanceCounterManager>();
                IMemCache memCache = container.Resolve<IMemCache>(new { cacheName = "Dache", cacheConfig = cacheConfig });

                // Initialize the cache host information poller
                var cacheHostInformationPoller = new CacheHostInformationPoller(1000);

                // Instantiate the cache host engine
                _cacheHostEngine = new CacheHostEngine(cacheHostInformationPoller, memCache, clientToCacheServiceHost);
            }
            catch (Exception ex)
            {
                // The inner exception has the actual details of the configuration error
                if (ex.InnerException != null && ex.InnerException.Message != null && ex.InnerException.Message.StartsWith("The value for the property", StringComparison.OrdinalIgnoreCase))
                {
                    ex = ex.InnerException;
                }

                // Log the error
                LoggerContainer.Instance.Error("Cache Host failed to start", ex.Message);

                // Stop the service
                Stop();
            }

            LoggerContainer.Instance.Info("Cache Host is starting", "Settings verified successfully");

            _cacheHostEngine.Start();
        }
示例#13
0
        public void Setup()
        {
            IWindsorContainer container = new Castle.Windsor.WindsorContainer();
            container.Install(new MemcacheInstaller("Dache_Test",false));

            _memCache = container.Resolve<IMemCache>(new { cacheName = TestName, cacheConfig = Config });
        }