static void Main(string[] args)
 {
     RemoteLoader.Run();
     Console.WriteLine();
     RemoteWithMacro.Run();
     Console.ReadKey();
 }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //RemoteControlTest.Run();

            RemoteLoader.Run();

            Console.Read();
        }
        public override HRESULT Initialize()
        {
            RemoteLoader remoteLoader = (RemoteLoader)this.AppDomain.CreateInstanceAndUnwrap(Assembly.GetAssembly(typeof(RemoteLoader)).FullName, typeof(RemoteLoader).FullName);

            this.assembly = remoteLoader.LoadAssembly(this.FileName);
            ;
            return(HRESULT.S_OK);
        }
Ejemplo n.º 4
0
        public void Start()
        {
            RemoteLoader rl = Assembleloader.GetRemoteLoader(this.assembly, taskCode);

            taskSender = rl.GetTaskSender();
            taskSender.Load(assembly, type);
            taskSender.Start();

            //sendMessage();
        }
        public static IDesignPattern GetInstance(String patternName)
        {
            IDesignPattern designPattern;

            switch (patternName)
            {
            case DesignPatternConstants.SINGLETON:
                designPattern = ChocolateBoiler.GetSynchronizedInstance();
                break;

            case DesignPatternConstants.STRATEGY:
                designPattern = new MiniDuckSimulator();
                break;

            case DesignPatternConstants.OBSERVER:
                designPattern = new WeatherStation();
                break;

            case DesignPatternConstants.DECORATOR:
                designPattern = new StarbuzzCoffee();
                break;

            case DesignPatternConstants.SIMPLE_FACTORY:
                SimplePizzaFactory factory = new SimplePizzaFactory();
                designPattern = new SimpleFactory.PizzaStore.PizzaStore(factory);
                break;

            case DesignPatternConstants.FACTORY_METHOD:
                designPattern = new PizzaStoreFranchisor();
                break;

            case DesignPatternConstants.ABSTRACT_FACTORY:
                designPattern = new PizzaTestDrive();
                break;

            case DesignPatternConstants.COMMAND:
                designPattern = new RemoteLoader();
                break;

            case DesignPatternConstants.ADAPTER:
                designPattern = new DuckTestDrive();
                break;

            case DesignPatternConstants.FACADE:
                designPattern = new HomeTheaterTestDrive();
                break;

            default:
                throw new NotImplementedException();
            }

            return(designPattern);
        }
Ejemplo n.º 6
0
        public void TestDurationReported()
        {
            AssemblyFactory.Type = typeof(AssemblyMock);
            var remoteLoader = new RemoteLoader();
            var listener     = new MyTestListener();

            remoteLoader.Listener = listener;
            remoteLoader.LoadAssembly(new AssemblyName {
                CodeBase = _assemblyPathName
            });
            remoteLoader.RunTests(new TestRun(new AllTestsCriterion()), new StringWriter());
            Assert.Greater(listener.Duration, 0);
        }
Ejemplo n.º 7
0
    /// <summary>
    /// Initializes a new instance of the <see cref="LocalLoader"/> class.
    /// </summary>
    public AssemblyDynamicLoader()
    {
        AppDomainSetup setup = new AppDomainSetup();

        setup.ApplicationName       = "ApplicationLoader";
        setup.ApplicationBase       = AppDomain.CurrentDomain.BaseDirectory;
        setup.PrivateBinPath        = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "private");
        setup.CachePath             = setup.ApplicationBase;
        setup.ShadowCopyFiles       = "true";
        setup.ShadowCopyDirectories = setup.ApplicationBase;

        this.appDomain = AppDomain.CreateDomain("ApplicationLoaderDomain", null, setup);
        string name = Assembly.GetExecutingAssembly().GetName().FullName;

        this.remoteLoader = (RemoteLoader)this.appDomain.CreateInstanceAndUnwrap(name, typeof(RemoteLoader).FullName);
    }
Ejemplo n.º 8
0
        private bool initExcuter(string taskCode)
        {
            this.Log().Info("初始构建Task执行器:task_code:" + taskCode);
            try
            {
                mq_task task = taskService.Find(taskCode);

                RemoteLoader rl = Loader.Instance.GetRemoteLoader(task.assembly, task.code);

                var excuter = rl.GetTaskExcuteer();
                excuter.Load(task.assembly, task.type);
                excuter.Start();

                taskExcuters.Add(task.code, excuter);

                return(true);
            }
            catch (Exception ex)
            {
                this.Log().Error(string.Format("构建Task执行器异常:taskCode:{0},异常:{1}", taskCode, ex.Message));
                return(false);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Creates the local loader class
        /// </summary>
        /// <param name="pluginDirectory">The plugin directory</param>
        public LocalLoader(string pluginDirectory)
        {
            var setup = new AppDomainSetup
            {
                ApplicationName = "Plugins",
                ApplicationBase = AppDomain.CurrentDomain.BaseDirectory,
                PrivateBinPath = "plugins",
                CachePath = Path.Combine(pluginDirectory, "cache" + Path.DirectorySeparatorChar),
                ShadowCopyFiles = "true",
                ShadowCopyDirectories = pluginDirectory
            };

            appDomain = AppDomain.CreateDomain("Plugins", null, setup);

            // Used for a Cross AppDomain Singleton
            //appDomain.SetData("PersistentMemoryInstance", PersistentMemory.Instance);
            appDomain.AssemblyResolve += AppDomainAssemblyResolve;

            appDomain.UnhandledException += AppDomainUnhandledException;
            appDomain.InitializeLifetimeService();

            remoteLoader = (RemoteLoader)appDomain.CreateInstanceAndUnwrap("Huffelpuff", "Huffelpuff.Plugins.RemoteLoader");
        }
Ejemplo n.º 10
0
            static void Main(string[] args)
            {
                RemoteLoader remoteLoader = new RemoteLoader();

                Console.WriteLine(remoteLoader.remoteControl.ToString());

                Console.WriteLine("\n\nRemote control test:");
                remoteLoader.remoteControl.OnButtonWasPushed(0);
                remoteLoader.remoteControl.OffButtonWasPushed(0);
                remoteLoader.remoteControl.OnButtonWasPushed(1);
                remoteLoader.remoteControl.OffButtonWasPushed(1);
                remoteLoader.remoteControl.OnButtonWasPushed(2);
                remoteLoader.remoteControl.OffButtonWasPushed(2);
                remoteLoader.remoteControl.OnButtonWasPushed(3);
                remoteLoader.remoteControl.OffButtonWasPushed(3);
                remoteLoader.remoteControl.OnButtonWasPushed(4);
                remoteLoader.remoteControl.OffButtonWasPushed(4);
                remoteLoader.remoteControl.OnButtonWasPushed(5);
                remoteLoader.remoteControl.OffButtonWasPushed(5);

                Console.WriteLine("\n\nFactory classes test:");
                remoteLoader.livingRoomLight.On();
                remoteLoader.kitchenLight.On();
                remoteLoader.stereo.On();
                remoteLoader.stereo.SetCD();
                remoteLoader.stereo.SetDVD();
                remoteLoader.stereo.Off();
                remoteLoader.kitchenLight.Off();
                remoteLoader.livingRoomCeilingFan.HighSpeed();
                remoteLoader.livingRoomCeilingFan.LowSpeed();
                remoteLoader.livingRoomCeilingFan.GetSpeed();
                remoteLoader.livingRoomLight.Off();
                remoteLoader.garageDoor.Open();

                Console.ReadKey();
            }
Ejemplo n.º 11
0
        //ISchedulerFactory sf = null;
        //IScheduler sched = null;
        public void Run()
        {
            //获取Trigger,如果出发,加载,执行
            //任务状态,时间设置,什么执行,设置一个时间点,
            //时间点设置表达式:day:1-5,time:15:20   1-5,15:20
            //w:6-7,t:1:00
            int i = 0;

            while (this.running)
            {
                mPause.WaitOne();
                var list = taskService.GetTaskList();
                foreach (var task in list)
                {
                    if (MatchTrigger(task.time))
                    {
                        if (task.status == (int)StockMan.Message.Model.TaskStatus.stop)
                        {
                            //触发,
                            if (!this.taskSenders.ContainsKey(task.code))
                            {
                                this.Log().Info("新建应用程序域:" + task.code);
                                RemoteLoader rl         = Loader.Instance.GetRemoteLoader(task.assembly, task.code);
                                var          taskSender = rl.GetTaskSender();
                                taskSender.Load(task.assembly, task.type);
                                this.taskSenders.Add(task.code, taskSender);
                            }
                            this.Log().Info("开始执行发送任务:" + task.code);
                            this.taskSenders[task.code].Start();
                        }
                    }
                }
                mPause.ReleaseMutex();
                Thread.Sleep(1000 * 3);
            }

            //sf = new StdSchedulerFactory();
            //sched = sf.GetScheduler();
            //TaskService taskService = new TaskService();
            //var list = taskService.GetTaskList();
            //int i = 1;
            //foreach (var task in list)
            //{
            //    IJobDetail job = JobBuilder
            //         .Create<SenderJob>()
            //         .WithIdentity("job_" + task.code, "group_1")
            //         .RequestRecovery() // ask scheduler to re-execute this job if it was in progress when the scheduler went down...
            //         .Build();

            //    // tell the job to delay some small amount... to simulate work...

            //    job.JobDataMap.Put("assembly", task.assembly);
            //    job.JobDataMap.Put("type", task.type);
            //    job.JobDataMap.Put("taskCode", task.code);
            //    ITrigger trigger = TriggerBuilder.Create()
            //        .WithIdentity("trigger_" + task.code, "group_1")
            //        .StartAt(DateBuilder.FutureDate(1000*i++, IntervalUnit.Millisecond)) // space fire times a small bit
            //        .Build();

            //    sched.ScheduleJob(job, trigger);

            //}
            //sched.Start();


            //var sender = new TaskSender();
            //sender.Load("StockMan.Message.TaskInstance", "StockMan.Message.TaskInstance.ThreeTask");
            //sender.Start();
            //var assembly = "StockMan.Message.TaskInstance";
            //var type = "StockMan.Message.TaskInstance.ThreeTask";
            //RemoteLoader rl = Loader.Instance.GetRemoteLoader("ThreeTask");
            //var taskSender = rl.GetTaskSender();
            ////taskSender.onStop += taskSender_onStop;
            //taskSender.Load(assembly, type);
            //taskSender.Start();
        }
Ejemplo n.º 12
0
 static void Main(string[] args)
 {
     RemoteLoader.Run();
     Console.ReadKey();
 }
Ejemplo n.º 13
0
            private TestResult RunTests(string assemblyPath)
            {
                AssemblyMetadata assemblyMetadata = AssemblyUtils.GetAssemblyMetadata(assemblyPath, AssemblyMetadataFields.Default);

                if (assemblyMetadata == null)
                {
                    ITestContext testContext = listOfTestCommands[0].StartPrimaryChildStep(topTestStep);
                    testContext.LifecyclePhase = LifecyclePhases.Execute;
                    testContext.LogWriter.Failures.WriteLine("Test assembly does not exist or is not a valid .Net assembly. [{0}]", assemblyPath ?? String.Empty);
                    return(testContext.FinishStep(TestOutcome.Error, null));
                }

                // Remark: We cannot use the RemoteLoader directly from this AppDomain.
                //   csUnit v2.5 contains a bug in its detection of the NUnitAdapter.  It tries
                //   to enumerate ALL types in ALL assemblies that are loaded in the AppDomain.
                //   Bad news for us because some of these types derived from other types in
                //   assemblies that cannot be loaded (eg. VisualStudio APIs).
                //   So csUnit promptly blows up.  The workaround is to create our own AppDomain.
                //   We cannot use the csUnit Loader because it does things like report
                //   events asynchronously and possibly out of order or even in parallel. -- Jeff.
                // See also: http://sourceforge.net/tracker/index.php?func=detail&aid=2111390&group_id=23919&atid=380010
                HostSetup hostSetup = new HostSetup();

                hostSetup.ApplicationBaseDirectory = Path.GetDirectoryName(assemblyPath);
                hostSetup.WorkingDirectory         = hostSetup.ApplicationBaseDirectory;
                hostSetup.ShadowCopy = true;
                hostSetup.ConfigurationFileLocation = ConfigurationFileLocation.AppBase;
                hostSetup.ProcessorArchitecture     = assemblyMetadata.ProcessorArchitecture;

                string configFile = assemblyPath + ".config";

                if (File.Exists(configFile))
                {
                    hostSetup.Configuration.ConfigurationXml = File.ReadAllText(configFile);
                }

                var hostFactory = (IHostFactory)RuntimeAccessor.ServiceLocator.ResolveByComponentId(IsolatedAppDomainHostFactory.ComponentId);

                using (IHost host = hostFactory.CreateHost(hostSetup, RuntimeAccessor.Logger))
                {
                    HostAssemblyResolverHook.InstallCallback(host);

                    Type loaderType = typeof(RemoteLoader);

                    using (RemoteLoader loader = (RemoteLoader)host.GetHostService().CreateInstance(
                               loaderType.Assembly.FullName,
                               loaderType.FullName).Unwrap())
                    {
                        // Attach ourself to get feedback
                        loader.Listener = this;

                        // Load the test assembly
                        loader.LoadAssembly(assemblyPath);

                        // Run the tests of that assembly
                        TextWriter consoleOutputWriter = new ContextualLogTextWriter(MarkupStreamNames.ConsoleOutput);
                        var        spec = new CallbackTestSpec(this);
                        loader.RunTests(spec, consoleOutputWriter);
                    }
                }

                return(topResult ?? new TestResult(TestOutcome.Error));
            }
Ejemplo n.º 14
0
 public void TestDurationReported() {
    AssemblyFactory.Type = typeof(AssemblyMock);
    var remoteLoader = new RemoteLoader();
    var listener = new MyTestListener();
    remoteLoader.Listener = listener;
    remoteLoader.LoadAssembly(new AssemblyName{CodeBase = _assemblyPathName});
    remoteLoader.RunTests(new TestRun(new AllTestsCriterion()), new StringWriter());
    Assert.Greater(listener.Duration, 0);
 }
Ejemplo n.º 15
0
 public void Init()
 {
     m_RemoteLoader    = new RemoteLoader();
     m_ResourcesLoader = new ResourcesLoader();
 }