예제 #1
0
        public void ImmutablilityTest()
        {
            // builder methods return copies; the original module is immutable
            ConfigurationModule builder1 = MyConfigurationModule.Conf
                                           .Set(MyConfigurationModule.TheFoo, GenericType <FooImpl> .Class);

            Assert.IsFalse(builder1 == MyConfigurationModule.Conf);

            IConfiguration config1 = builder1.Build();

            // reusable
            IConfiguration config2 = MyConfigurationModule.Conf
                                     .Set(MyConfigurationModule.TheFoo, GenericType <FooAltImpl> .Class)
                                     .Build();

            // instantiation of each just to be sure everything is fine in this situation
            IInjector i1 = TangFactory.GetTang().NewInjector(config1);
            IInjector i2 = TangFactory.GetTang().NewInjector(config2);

            Assert.AreEqual(42, ((IFoo)i1.GetInstance(typeof(IFoo))).getFooness());
            Assert.AreEqual(7, ((IFoo)i2.GetInstance(typeof(IFoo))).getFooness());
        }
예제 #2
0
        public void OnNext(IAllocatedEvaluator eval)
        {
            try
            {
                _taskId = _failTaskName + "_" + eval.Id;
                Log.Log(Level.Info, "Submit task: {0}", _taskId);

                IConfiguration contextConfig =
                    ContextConfiguration.ConfigurationModule.Set(ContextConfiguration.Identifier, _taskId).Build();

                ConfigurationModule taskConfig =
                    TaskConfiguration.ConfigurationModule.Set(TaskConfiguration.Identifier, _taskId);

                switch (_failTaskName)
                {
                case "FailTask":
                    taskConfig = taskConfig.Set(TaskConfiguration.Task, GenericType <FailTask> .Class);
                    break;

                case "FailTaskCall":
                    taskConfig = taskConfig.Set(TaskConfiguration.Task, GenericType <FailTaskCall> .Class);
                    break;

                case "FailTaskMsg":
                    taskConfig = taskConfig
                                 .Set(TaskConfiguration.Task, GenericType <FailTaskMsg> .Class)
                                 .Set(TaskConfiguration.OnMessage, GenericType <FailTaskMsg> .Class);
                    break;

                case "FailTaskSuspend":
                    taskConfig = taskConfig
                                 .Set(TaskConfiguration.Task, GenericType <FailTaskSuspend> .Class)
                                 .Set(TaskConfiguration.OnSuspend, GenericType <FailTaskSuspend> .Class);
                    break;

                case "FailTaskStart":
                    taskConfig = taskConfig
                                 .Set(TaskConfiguration.Task, GenericType <FailTaskStart> .Class)
                                 .Set(TaskConfiguration.OnTaskStart, GenericType <FailTaskStart> .Class);
                    break;

                case "FailTaskStop":
                    taskConfig = taskConfig
                                 .Set(TaskConfiguration.Task, GenericType <FailTaskStop> .Class)
                                 .Set(TaskConfiguration.OnTaskStop, GenericType <FailTaskStop> .Class)
                                 .Set(TaskConfiguration.OnClose, GenericType <FailTaskStop> .Class);
                    break;

                case "FailTaskClose":
                    taskConfig = taskConfig
                                 .Set(TaskConfiguration.Task, GenericType <FailTaskClose> .Class)
                                 .Set(TaskConfiguration.OnClose, GenericType <FailTaskClose> .Class);
                    break;

                default:
                    break;
                }

                eval.SubmitContextAndTask(contextConfig, taskConfig.Build());
            }
            catch (BindException ex)
            {
                Log.Log(Level.Warning, "Configuration error", ex);
                throw new DriverSideFailure("Configuration error", ex);
            }
        }