示例#1
0
        private static void RunAutoexecs(string[] strIncludes, string[] strExcludes)
        {
            HashSet <string> setIncludes = null;
            HashSet <string> setExcludes = null;

            if (strIncludes != null && strIncludes.Length > 0)
            {
                setIncludes = new HashSet <string>();
                foreach (string strInclude in strIncludes)
                {
                    setIncludes.Add(strInclude);
                }
            }
            if (strExcludes != null && strExcludes.Length > 0)
            {
                setExcludes = new HashSet <string>();
                foreach (string strExclude in strExcludes)
                {
                    setExcludes.Add(strExclude);
                }
            }
            if (m_eventLoad == null)
            {
                m_eventLoad = new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
                AppDomain.CurrentDomain.AssemblyLoad += m_eventLoad;
            }
            foreach (Assembly ass in CGestionnaireAssemblies.GetAssemblies())
            {
                RunAutoexec(ass, setIncludes, setExcludes);
            }
        }
示例#2
0
        public void CanLoadInjectionAdapter()
        {
            //-- arrange

            var bootConfig = CreateBootConfiguration(
                frameworkModules: new MicroserviceConfig.ModuleConfig[0],
                applicationModules: new MicroserviceConfig.ModuleConfig[0]);

            var assemlyLoadHandler    = new AssemblyLoadEventHandler();
            var logger                = new MicroserviceHostLoggerMock();
            var microserviceUnderTest = new MicroserviceHost(bootConfig, logger);

            microserviceUnderTest.AssemblyLoad += assemlyLoadHandler.Handle;

            //-- act

            microserviceUnderTest.Configure();

            //-- assert

            assemlyLoadHandler.EventList.Count.Should().Be(2);

            assemlyLoadHandler.EventList[0].ImplementedInterface.Should().Be(typeof(IComponentContainerBuilder));
            assemlyLoadHandler.EventList[0].AssemblyName.Should().Be("InjectionAdapter");

            assemlyLoadHandler.EventList[1].ImplementedInterface.Should().Be(typeof(IFeatureLoader));
            assemlyLoadHandler.EventList[1].AssemblyName.Should().Be("NWheels.Implementation");
        }
示例#3
0
        public void ModulesLoadedInOrder()
        {
            //-- arrange

            var logger     = new MicroserviceHostLoggerMock();
            var host       = new MicroserviceHost(CreateBootConfiguration(), logger);
            var handler    = new AssemblyLoadEventHandler();
            var assemblies = new List <string>();

            host.AssemblyLoad += handler.Handle;
            host.AssemblyLoad += (object sender, AssemblyLoadEventArgs e) =>
            {
                assemblies.Add(e.AssemblyName);
            };

            //-- act

            host.Configure();

            //-- assert

            assemblies.ToArray().Should().Equal(new string[] {
                "InjectionAdapter",
                "NWheels.Implementation",
                "FrameworkModule",
                "FirstModuleAssembly",
                "SecondModuleAssembly",
            });
        }
示例#4
0
        //===================================================================
        // Initialization performed on startup of the Python runtime. Here we
        // scan all of the currently loaded assemblies to determine exported
        // names, and register to be notified of new assembly loads.
        //===================================================================

        internal static void Initialize()
        {
            namespaces = new
                Dictionary<string, Dictionary<Assembly, string>>(32);
            probed = new Dictionary<string, int>(32);
            //generics = new Dictionary<string, Dictionary<string, string>>();
            assemblies = new List<Assembly>(16);
            pypath = new List<string>(16);

            AppDomain domain = AppDomain.CurrentDomain;

            lhandler = new AssemblyLoadEventHandler(AssemblyLoadHandler);
            domain.AssemblyLoad += lhandler;

            rhandler = new ResolveEventHandler(ResolveHandler);
            domain.AssemblyResolve += rhandler;

            Assembly[] items = domain.GetAssemblies();
            foreach (var a in items)
            {
                try
                {
                    ScanAssembly(a);
                    assemblies.Add(a);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(string.Format("Error scanning assembly {0}. {1}", a, ex));
                }
            }
        }
        public void CheckMicroserviceConfigOnConfiguring()
        {
            //-- arrange

            var host    = new MicroserviceHost(CreateBootConfiguration(), new MicroserviceHostLoggerMock());
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;

            //-- act

            host.Configure();

            //-- assert

            var config = CreateBootConfiguration();

            handler.ContainerEventArgs.Should().NotBeNull();
            handler.ContainerEventArgs.AssemblyName.Should().Be(config.MicroserviceConfig.InjectionAdapter.Assembly);
            handler.ContainerEventArgs.Destination.Count.Should().Be(1);

            handler.FeatureLoaderEventArgsList.Should().HaveCount(
                1 + config.MicroserviceConfig.FrameworkModules.Length + config.MicroserviceConfig.ApplicationModules.Length);
            handler.FeatureLoaderEventArgsList.Should().ContainSingle(
                x => x.AssemblyName == config.MicroserviceConfig.ApplicationModules[0].Assembly);
            handler.FeatureLoaderEventArgsList.Should().ContainSingle(
                x => x.AssemblyName == config.MicroserviceConfig.ApplicationModules[1].Assembly);
            handler.FeatureLoaderEventArgsList.Should().ContainSingle(
                x => x.AssemblyName == config.MicroserviceConfig.FrameworkModules[0].Assembly);
        }
        public void TryDiscoverDuplicatedFeatureLoaderOnConfiguring()
        {
            //-- arrange

            var logger  = new MicroserviceHostLoggerMock();
            var config  = CreateBootConfiguration();
            var host    = new MicroserviceHost(config, logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;
            host.AssemblyLoad += (object sender, AssemblyLoadEventArgs e) =>
            {
                if (e.ImplementedInterface == typeof(IFeatureLoader))
                {
                    if (e.AssemblyName == "FirstModuleAssembly")
                    {
                        e.Destination.Add(typeof(DuplicatedFeatureLoader));
                    }
                }
            };

            //-- act

            Action configuring = () => host.Configure();

            //-- assert

            configuring.ShouldThrow <Exception>();
        }
示例#7
0
        public void InjectionAdapterModuleFeatureLoadersWereNotLoaded()
        {
            //-- arrange

            var logger = new MicroserviceHostLoggerMock();
            var config = CreateBootConfiguration();
            var host   = new MicroserviceHost(config, logger);

            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;
            host.AssemblyLoad += (object sender, AssemblyLoadEventArgs e) =>
            {
                if ((e.AssemblyName == config.MicroserviceConfig.InjectionAdapter.Assembly &&
                     e.ImplementedInterface != typeof(IComponentContainerBuilder)) ||
                    (e.AssemblyName != config.MicroserviceConfig.InjectionAdapter.Assembly &&
                     e.ImplementedInterface == typeof(IComponentContainerBuilder)))
                {
                    throw new Exception("AssemblyLoadEventHandler.Handle check haven't passed.");
                }
            };

            //-- act

            Action act = () => host.Configure();

            //-- assert

            act.ShouldNotThrow <Exception>();
        }
示例#8
0
        public void InjectionAdapterCtorWithoutArgumentExceptionThrown()
        {
            //-- arrange

            var logger = new MicroserviceHostLoggerMock();
            var config = CreateBootConfiguration();

            config.MicroserviceConfig.InjectionAdapter.Assembly = "AdapterInjectionCtorWithoutArgument";
            var host    = new MicroserviceHost(config, logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;
            host.AssemblyLoad += (object sender, AssemblyLoadEventArgs e) =>
            {
                if (e.ImplementedInterface == typeof(IComponentContainerBuilder))
                {
                    if (e.AssemblyName == "AdapterInjectionCtorWithoutArgument")
                    {
                        e.Destination.Add(typeof(ComponentContainerBuilderCtorWithoutArgument));
                    }
                }
            };

            //-- act

            Action act = () => host.Configure();

            //-- assert

            act.ShouldThrow <Exception>();
        }
示例#9
0
        //===================================================================
        // Initialization performed on startup of the Python runtime. Here we
        // scan all of the currently loaded assemblies to determine exported
        // names, and register to be notified of new assembly loads.
        //===================================================================

        internal static void Initialize()
        {
            namespaces = new
                         Dictionary <string, Dictionary <Assembly, string> >(32);
            probed = new Dictionary <string, int>(32);
            //generics = new Dictionary<string, Dictionary<string, string>>();
            assemblies = new List <Assembly>(16);
            pypath     = new List <string>(16);

            AppDomain domain = AppDomain.CurrentDomain;

            lhandler             = new AssemblyLoadEventHandler(AssemblyLoadHandler);
            domain.AssemblyLoad += lhandler;

            rhandler = new ResolveEventHandler(ResolveHandler);
            domain.AssemblyResolve += rhandler;

            Assembly[] items = domain.GetAssemblies();
            for (int i = 0; i < items.Length; i++)
            {
                Assembly a = items[i];
                assemblies.Add(a);
                ScanAssembly(a);
            }
        }
示例#10
0
        public void CheckDefaultFeatureLoadersDiscoveredOnConfiguring()
        {
            //-- arrange

            var logger  = new MicroserviceHostLoggerMock();
            var host    = new MicroserviceHost(CreateBootConfiguration(), logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;

            //-- act

            host.Configure();

            //-- assert

            var logs = logger.TakeLog();

            logs.Should().Contain(new string[] {
                "FoundFeatureLoaderComponent(component=FirstFeatureLoader)",
                "FoundFeatureLoaderComponent(component=SecondFeatureLoader)",

                "FoundFeatureLoaderComponent(component=SeventhFeatureLoader)",
            });
        }
示例#11
0
        /// <summary>
        /// Initialization performed on startup of the Python runtime. Here we
        /// scan all of the currently loaded assemblies to determine exported
        /// names, and register to be notified of new assembly loads.
        /// </summary>
        internal static void Initialize()
        {
            namespaces = new ConcurrentDictionary <string, ConcurrentDictionary <Assembly, string> >();
            probed     = new Dictionary <string, int>(32);
            //generics = new Dictionary<string, Dictionary<string, string>>();
            assemblies = new ConcurrentQueue <Assembly>();
            pypath     = new List <string>(16);

            AppDomain domain = AppDomain.CurrentDomain;

            lhandler             = new AssemblyLoadEventHandler(AssemblyLoadHandler);
            domain.AssemblyLoad += lhandler;

            rhandler = new ResolveEventHandler(ResolveHandler);
            domain.AssemblyResolve += rhandler;

            Assembly[] items = domain.GetAssemblies();
            foreach (Assembly a in items)
            {
                try
                {
                    ScanAssembly(a);
                    assemblies.Enqueue(a);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Error scanning assembly {0}. {1}", a, ex);
                }
            }
        }
示例#12
0
        public override void GenerateCode(AssemblyBuilder assemblyBuilder)
        {
            base.GenerateCode(assemblyBuilder);
            WXMLModel model = null;

            using (XmlReader xr = new XmlTextReader(_fileName))
            {
                model = WXMLModel.LoadFromXml(xr);
            }

            IRepositoryProvider prov = WmsDefinitionManager.GetRepositoryProvider();

            foreach (CodeCompileUnit unit in prov.CreateCompileUnits(model))
            {
                assemblyBuilder.AddCodeCompileUnit(this, unit);
            }

            string fn = Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(assemblyBuilder.GetTempFilePhysicalPath("dll")));

            AssemblyLoadEventHandler d = null;

            d = delegate(object sender, AssemblyLoadEventArgs args)
            {
                if (args.LoadedAssembly.ManifestModule.Name.StartsWith(fn))
                {
                    prov.SetRepositoryAssembly(args.LoadedAssembly);
                    AppDomain.CurrentDomain.AssemblyLoad -= d;
                }
            };

            AppDomain.CurrentDomain.AssemblyLoad += d;
        }
示例#13
0
        public void AssemblyLoad()
        {
            RemoteInvoke(() => {
                bool AssemblyLoadFlag            = false;
                AssemblyLoadEventHandler handler = (sender, args) =>
                {
                    if (args.LoadedAssembly.FullName.Equals(typeof(AppDomainTests).Assembly.FullName))
                    {
                        AssemblyLoadFlag = !AssemblyLoadFlag;
                    }
                };

                AppDomain.CurrentDomain.AssemblyLoad += handler;

                try
                {
                    Assembly.LoadFile(typeof(AppDomainTests).Assembly.Location);
                }
                finally
                {
                    AppDomain.CurrentDomain.AssemblyLoad -= handler;
                }
                Assert.True(AssemblyLoadFlag);
                return(SuccessExitCode);
            }).Dispose();
        }
示例#14
0
        public void EmptyBootConfig_DefaultKernelFeaturesLoaded()
        {
            //-- arrange

            var bootConfig = CreateBootConfiguration(
                frameworkModules: new MicroserviceConfig.ModuleConfig[0],
                applicationModules: new MicroserviceConfig.ModuleConfig[0]);

            var assemlyLoadHandler    = new AssemblyLoadEventHandler();
            var logger                = new MicroserviceHostLoggerMock();
            var microserviceUnderTest = new MicroserviceHost(bootConfig, logger);

            microserviceUnderTest.AssemblyLoad += assemlyLoadHandler.Handle;

            var featureLog = new List <string>();

            InterceptAllFeatureLoadersLogs(featureLog);

            //-- act

            microserviceUnderTest.Configure();

            //-- assert

            featureLog.Should().Contain($"{typeof(Kernel_FeatureOne).Name}.{nameof(IFeatureLoader.ContributeComponents)}");
            featureLog.Should().Contain($"{typeof(Kernel_FeatureTwo).Name}.{nameof(IFeatureLoader.ContributeComponents)}");
            featureLog.Should().NotContain($"{typeof(Kernel_FeatureThree).Name}.{nameof(IFeatureLoader.ContributeComponents)}");
        }
示例#15
0
        public void AssemblyLoad()
        {
            RemoteExecutor.Invoke(() => {
                bool AssemblyLoadFlag            = false;
                AssemblyLoadEventHandler handler = (sender, args) =>
                {
                    Assert.Same(AppDomain.CurrentDomain, sender);
                    Assert.NotNull(args);
                    Assert.NotNull(args.LoadedAssembly);

                    if (args.LoadedAssembly.FullName.Equals(typeof(AppDomainTests).Assembly.FullName))
                    {
                        AssemblyLoadFlag = true;
                    }
                };

                AppDomain.CurrentDomain.AssemblyLoad += handler;

                try
                {
                    Assembly.LoadFile(typeof(AppDomainTests).Assembly.Location);
                }
                finally
                {
                    AppDomain.CurrentDomain.AssemblyLoad -= handler;
                }
                Assert.True(AssemblyLoadFlag);
            }).Dispose();
        }
 public static void Autoexec()
 {
     if (m_eventLoad == null)
     {
         m_eventLoad = new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
         AppDomain.CurrentDomain.AssemblyLoad += m_eventLoad;
     }
     CAnalyseurSyntaxiqueExpression.RegisterFournisseurExpressionsDynamiques(new CFournisseurConstantesObjetDonneeAIdAuto());
 }
示例#17
0
        /// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// assemblyloadeventhandler.BeginInvoke(sender, args, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this AssemblyLoadEventHandler assemblyloadeventhandler, Object sender, AssemblyLoadEventArgs args, AsyncCallback callback)
        {
            if (assemblyloadeventhandler == null)
            {
                throw new ArgumentNullException("assemblyloadeventhandler");
            }

            return(assemblyloadeventhandler.BeginInvoke(sender, args, callback, null));
        }
示例#18
0
        private void OnAssemblyLoadEvent(RuntimeAssembly LoadedAssembly)
        {
            AssemblyLoadEventHandler eventHandler = AssemblyLoad;

            if (eventHandler != null)
            {
                AssemblyLoadEventArgs ea = new AssemblyLoadEventArgs(LoadedAssembly);
                eventHandler(this, ea);
            }
        }
示例#19
0
 public static void Test_SetAssemblyEvent_01()
 {
     Test_UnsetAssemblyEvent_01();
     _tr.WriteLine("Test_SetAssemblyEvent_01");
     ResolveEventHandler resolveEventHandler = new ResolveEventHandler(CurrentDomain_AssemblyResolve);
     AssemblyLoadEventHandler assemblyLoadEventHandler = new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
     _rs.Data.Add("ResolveEventHandler", resolveEventHandler);
     _rs.Data.Add("AssemblyLoadEventHandler", assemblyLoadEventHandler);
     AppDomain.CurrentDomain.AssemblyResolve += resolveEventHandler;
     AppDomain.CurrentDomain.AssemblyLoad += assemblyLoadEventHandler;
 }
示例#20
0
        public static void Test_SetAssemblyEvent_01()
        {
            Test_UnsetAssemblyEvent_01();
            _tr.WriteLine("Test_SetAssemblyEvent_01");
            ResolveEventHandler      resolveEventHandler      = new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            AssemblyLoadEventHandler assemblyLoadEventHandler = new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);

            _rs.Data.Add("ResolveEventHandler", resolveEventHandler);
            _rs.Data.Add("AssemblyLoadEventHandler", assemblyLoadEventHandler);
            AppDomain.CurrentDomain.AssemblyResolve += resolveEventHandler;
            AppDomain.CurrentDomain.AssemblyLoad    += assemblyLoadEventHandler;
        }
示例#21
0
 public static void Test_UnsetAssemblyEvent_01()
 {
     if (_rs.Data.ContainsKey("ResolveEventHandler"))
     {
         ResolveEventHandler resolveEventHandler = (ResolveEventHandler)_rs.Data["ResolveEventHandler"];
         AppDomain.CurrentDomain.AssemblyResolve -= resolveEventHandler;
         _rs.Data.Remove("ResolveEventHandler");
     }
     if (_rs.Data.ContainsKey("AssemblyLoadEventHandler"))
     {
         AssemblyLoadEventHandler assemblyLoadEventHandler = (AssemblyLoadEventHandler)_rs.Data["AssemblyLoadEventHandler"];
         AppDomain.CurrentDomain.AssemblyLoad -= assemblyLoadEventHandler;
         _rs.Data.Remove("AssemblyLoadEventHandler");
     }
 }
示例#22
0
            public UdonSharpAssemblyLoadStripScope()
            {
                FieldInfo info = AppDomain.CurrentDomain.GetType().GetField("AssemblyLoad", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance);

                AssemblyLoadEventHandler handler = info.GetValue(AppDomain.CurrentDomain) as AssemblyLoadEventHandler;

                originalDelegates = handler?.GetInvocationList();

                if (originalDelegates != null)
                {
                    foreach (Delegate del in originalDelegates)
                    {
                        AppDomain.CurrentDomain.AssemblyLoad -= (AssemblyLoadEventHandler)del;
                    }
                }
            }
示例#23
0
        public void NamedKernelModuleLoadedFirstInFrameworkModules()
        {
            //-- arrange

            var logger = new MicroserviceHostLoggerMock();
            var config = CreateBootConfiguration();

            config.MicroserviceConfig.FrameworkModules = new MicroserviceConfig.ModuleConfig[]
            {
                new MicroserviceConfig.ModuleConfig()
                {
                    Assembly = "NWheels.Implementation",
                    Features = new MicroserviceConfig.ModuleConfig.FeatureConfig[] {
                        new MicroserviceConfig.ModuleConfig.FeatureConfig()
                        {
                            Name = "NamedKernelFeatureLoader"
                        }
                    }
                }
            };
            var host    = new MicroserviceHost(config, logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += (object sender, AssemblyLoadEventArgs e) =>
            {
                if (e.ImplementedInterface == typeof(IFeatureLoader))
                {
                    if (e.AssemblyName == "NWheels.Implementation")
                    {
                        e.Destination.Add(typeof(NamedKernelFeatureLoader));
                    }
                }
            };
            host.AssemblyLoad += handler.Handle;

            //-- act

            host.Configure();

            //-- assert

            var logs = logger.TakeLog();

            logs.Skip(1 + 2).First().Should().Be(
                "FoundFeatureLoaderComponent(component=NamedKernelFeatureLoader)");
        }
        public void RegisterMetadataDelayed(string assemblyName, Action<AttributeTableBuilder> delayedWork)
        {
            Fx.Assert(assemblyName != null, "Checked by caller");
            Fx.Assert(delayedWork != null, "Checked by caller");
            if (this.onAssemblyLoadedEventHandler == null)
            {
                this.onAssemblyLoadedEventHandler = new AssemblyLoadEventHandler(this.OnAssemblyLoaded);
                AppDomain.CurrentDomain.AssemblyLoad += this.onAssemblyLoadedEventHandler;
            }

            List<Action<AttributeTableBuilder>> currentDelayedWorkItems;
            if (!this.DelayedWorkItems.TryGetValue(assemblyName, out currentDelayedWorkItems))
            {
                currentDelayedWorkItems = new List<Action<AttributeTableBuilder>>();
                this.DelayedWorkItems.Add(assemblyName, currentDelayedWorkItems);
            }

            currentDelayedWorkItems.Add(delayedWork);
        }
示例#25
0
        public void GetCompileRegistredComponentAfterConfiguring()
        {
            //-- arrange

            var logger  = new MicroserviceHostLoggerMock();
            var host    = new MicroserviceHost(CreateBootConfiguration(), logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;

            //-- act

            host.Configure();
            var container = host.GetContainer();
            var component = container.Resolve <ICompileRegistered>();

            //-- assert

            component.Should().NotBeNull();
        }
        public void RegisterMetadataDelayed(string assemblyName, Action <AttributeTableBuilder> delayedWork)
        {
            Fx.Assert(assemblyName != null, "Checked by caller");
            Fx.Assert(delayedWork != null, "Checked by caller");
            if (this.onAssemblyLoadedEventHandler == null)
            {
                this.onAssemblyLoadedEventHandler     = new AssemblyLoadEventHandler(this.OnAssemblyLoaded);
                AppDomain.CurrentDomain.AssemblyLoad += this.onAssemblyLoadedEventHandler;
            }

            List <Action <AttributeTableBuilder> > currentDelayedWorkItems;

            if (!this.DelayedWorkItems.TryGetValue(assemblyName, out currentDelayedWorkItems))
            {
                currentDelayedWorkItems = new List <Action <AttributeTableBuilder> >();
                this.DelayedWorkItems.Add(assemblyName, currentDelayedWorkItems);
            }

            currentDelayedWorkItems.Add(delayedWork);
        }
示例#27
0
        public void TryDiscoverUnexistedFeatureLoaderOnConfiguring()
        {
            //-- arrange

            var logger = new MicroserviceHostLoggerMock();
            var config = CreateBootConfiguration();

            config.MicroserviceConfig.ApplicationModules[0].Features[0].Name = "Abracadabra";
            var host    = new MicroserviceHost(config, logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;

            //-- act

            Action configuring = () => host.Configure();

            //-- assert

            configuring.ShouldThrow <Exception>();
        }
示例#28
0
        public void InjectionAdapterLoadedFirst()
        {
            //-- arrange

            var logger  = new MicroserviceHostLoggerMock();
            var host    = new MicroserviceHost(CreateBootConfiguration(), logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;

            //-- act

            host.Configure();

            //-- assert

            var logs = logger.TakeLog();
            var firstLoadedComponent = logs.FirstOrDefault(x => x.StartsWith("FoundFeatureLoaderComponent"));

            firstLoadedComponent.Should().Be("FoundFeatureLoaderComponent(component=ComponentContainerBuilder)");
        }
示例#29
0
	//===================================================================
	// Initialization performed on startup of the Python runtime.
	//===================================================================

	internal static void Initialize() {
	    pypath = new StringCollection();
	    namespaces = new Hashtable();
	    assemblies = new ArrayList();
	    probed = new Hashtable();

	    AppDomain domain = AppDomain.CurrentDomain;

	    lh = new AssemblyLoadEventHandler(AssemblyLoadHandler);
	    domain.AssemblyLoad += lh;

	    rh = new ResolveEventHandler(ResolveHandler);	
	    domain.AssemblyResolve += rh;

	    Assembly[] items = domain.GetAssemblies();
	    for (int i = 0; i < items.Length; i++) {
		Assembly a = items[i];
		assemblies.Add(a);
		ScanAssembly(a);
	    }
	}
示例#30
0
        public void CanExecuteFeatureLoadersLifecycle()
        {
            //-- arrange

            var host    = new MicroserviceHost(CreateBootConfiguration(), new MicroserviceHostLoggerMock());
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;

            var featureLoaderLog = new List <string>();

            AddFeatureLoaderLoggingInterceptor <FirstFeatureLoader>(featureLoaderLog);
            AddFeatureLoaderLoggingInterceptor <SecondFeatureLoader>(featureLoaderLog);

            //-- act

            host.Configure();

            //-- assert

            featureLoaderLog.Should().Equal(
                $"{typeof(FirstFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeConfigSections)}",
                $"{typeof(SecondFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeConfigSections)}",

                $"{typeof(FirstFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeConfiguration)}",
                $"{typeof(SecondFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeConfiguration)}",

                $"{typeof(FirstFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeComponents)}",
                $"{typeof(SecondFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeComponents)}",

                $"{typeof(FirstFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeAdapterComponents)}",
                $"{typeof(SecondFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeAdapterComponents)}",

                $"{typeof(FirstFeatureLoader).Name}.{nameof(IFeatureLoader.CompileComponents)}",
                $"{typeof(SecondFeatureLoader).Name}.{nameof(IFeatureLoader.CompileComponents)}",

                $"{typeof(FirstFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeCompiledComponents)}",
                $"{typeof(SecondFeatureLoader).Name}.{nameof(IFeatureLoader.ContributeCompiledComponents)}"
                );
        }
示例#31
0
        //===================================================================
        // Initialization performed on startup of the Python runtime.
        //===================================================================

        internal static void Initialize()
        {
            pypath     = new StringCollection();
            namespaces = new Hashtable();
            assemblies = new ArrayList();
            probed     = new Hashtable();

            AppDomain domain = AppDomain.CurrentDomain;

            lh = new AssemblyLoadEventHandler(AssemblyLoadHandler);
            domain.AssemblyLoad += lh;

            rh = new ResolveEventHandler(ResolveHandler);
            domain.AssemblyResolve += rh;

            Assembly[] items = domain.GetAssemblies();
            for (int i = 0; i < items.Length; i++)
            {
                Assembly a = items[i];
                assemblies.Add(a);
                ScanAssembly(a);
            }
        }
示例#32
0
        //===================================================================
        // Initialization performed on startup of the Python runtime. Here we
        // scan all of the currently loaded assemblies to determine exported
        // names, and register to be notified of new assembly loads.
        //===================================================================

        internal static void Initialize() {
            namespaces = new 
                         Dictionary<string, Dictionary<Assembly, string>>(32);
            probed = new Dictionary<string, int>(32);
            //generics = new Dictionary<string, Dictionary<string, string>>();
            assemblies = new List<Assembly>(16);
            pypath = new List<string>(16);

            AppDomain domain = AppDomain.CurrentDomain;

            lhandler = new AssemblyLoadEventHandler(AssemblyLoadHandler);
            domain.AssemblyLoad += lhandler;

            rhandler = new ResolveEventHandler(ResolveHandler);        
            domain.AssemblyResolve += rhandler;

            Assembly[] items = domain.GetAssemblies();
            for (int i = 0; i < items.Length; i++) {
                Assembly a = items[i];
                assemblies.Add(a);
                ScanAssembly(a);
            }
        }
示例#33
0
        public void KernelModulesDefaultFeatureLoadersLoadedFirstAfterInjectionAdapter()
        {
            //-- arrange

            var logger  = new MicroserviceHostLoggerMock();
            var host    = new MicroserviceHost(CreateBootConfiguration(), logger);
            var handler = new AssemblyLoadEventHandler();

            host.AssemblyLoad += handler.Handle;

            //-- act

            host.Configure();

            //-- assert

            var logs = logger.TakeLog();

            logs.Skip(1).Take(2).OrderBy(x => x).Should().Equal(new string[] {
                "FoundFeatureLoaderComponent(component=CompilationFeatureLoader)",
                "FoundFeatureLoaderComponent(component=InvocationSchedulerFeatureLoader)",
            });
        }
示例#34
0
        public void AssemblyLoad()
        {
            bool AssemblyLoadFlag            = false;
            AssemblyLoadEventHandler handler = (sender, args) =>
            {
                if (args.LoadedAssembly.FullName.Equals(typeof(AppDomainTests).Assembly.FullName))
                {
                    AssemblyLoadFlag = !AssemblyLoadFlag;
                }
            };

            AppDomain.CurrentDomain.AssemblyLoad += handler;

            try
            {
                Assembly.LoadFile(typeof(AppDomainTests).Assembly.Location);
            }
            finally
            {
                AppDomain.CurrentDomain.AssemblyLoad -= handler;
            }
            Assert.True(AssemblyLoadFlag);
        }
        private static void HookUpWeakClearingDelegate(WeakReference weakRef)
        {
            AssemblyLoadEventHandler ret = null;

            ret = delegate(object sender, AssemblyLoadEventArgs args)
            {
                var target = (MemoizingTypeMappingStrategy)weakRef.Target;
                if (target == null)
                {
                    //Unhook us, multiple unhooks is fine
                    AppDomain.CurrentDomain.AssemblyLoad -= ret;
                }
                else
                {
                    // Since we cache even null returns but we would like to keep the the dynamic behaviour
                    // If the type request is being proccessed whilst this is called then we might cache the old value
                    //  but that would be mad
                    target._getTypeCache.Clear();
                }
            };
            Thread.MemoryBarrier();
            AppDomain.CurrentDomain.AssemblyLoad += ret;
        }
 public EventHandler<AssemblyLoadEventArgs> Convert(AssemblyLoadEventHandler handler)
 {
     // The unit test will weave valid code in here.
     throw new NotImplementedException();
 }
示例#37
0
		public void DummyAddMethod (object o, AssemblyLoadEventHandler h)
		{
		}