Beispiel #1
0
        public void ModuleDomainTest()
        {
            using DataTarget dt = TestTargets.AppDomains.LoadFullDump();
            ClrRuntime runtime = dt.ClrVersions.Single().CreateRuntime();

            ClrAppDomain appDomainExe = runtime.GetDomainByName("AppDomains.exe");
            ClrAppDomain nestedDomain = runtime.GetDomainByName("Second AppDomain");

            ClrModule mscorlib = runtime.GetModule("mscorlib.dll");

            AssertModuleContainsDomains(mscorlib, runtime.SharedDomain, appDomainExe, nestedDomain);
            AssertModuleDoesntContainDomains(mscorlib, runtime.SystemDomain);

            // SharedLibrary.dll is loaded into both domains but not as shared library like mscorlib.
            // This means it will not be in the shared domain.
            ClrModule sharedLibrary = runtime.GetModule("sharedlibrary.dll");

            AssertModuleContainsDomains(sharedLibrary, appDomainExe, nestedDomain);
            AssertModuleDoesntContainDomains(sharedLibrary, runtime.SharedDomain, runtime.SystemDomain);

            ClrModule appDomainsExeModule = runtime.GetModule("AppDomains.exe");

            AssertModuleContainsDomains(appDomainsExeModule, appDomainExe);
            AssertModuleDoesntContainDomains(appDomainsExeModule, runtime.SystemDomain, runtime.SharedDomain, nestedDomain);

            ClrModule nestedExeModule = runtime.GetModule("NestedException.exe");

            AssertModuleContainsDomains(nestedExeModule, nestedDomain);
            AssertModuleDoesntContainDomains(nestedExeModule, runtime.SystemDomain, runtime.SharedDomain, appDomainExe);
        }
Beispiel #2
0
        public void ModuleAppDomainEqualityTest()
        {
            using DataTarget dt = TestTargets.AppDomains.LoadFullDump();
            ClrRuntime runtime = dt.ClrVersions.Single().CreateRuntime();

            ClrAppDomain appDomainsExe      = runtime.GetDomainByName("AppDomains.exe");
            ClrAppDomain nestedExceptionExe = runtime.GetDomainByName("Second AppDomain");

            Dictionary <string, ClrModule> appDomainsModules = GetDomainModuleDictionary(appDomainsExe);

            Assert.True(appDomainsModules.ContainsKey("appdomains.exe"));
            Assert.True(appDomainsModules.ContainsKey("mscorlib.dll"));
            Assert.True(appDomainsModules.ContainsKey("sharedlibrary.dll"));

            Assert.False(appDomainsModules.ContainsKey("nestedexception.exe"));

            Dictionary <string, ClrModule> nestedExceptionModules = GetDomainModuleDictionary(nestedExceptionExe);

            Assert.True(nestedExceptionModules.ContainsKey("nestedexception.exe"));
            Assert.True(nestedExceptionModules.ContainsKey("mscorlib.dll"));
            Assert.True(nestedExceptionModules.ContainsKey("sharedlibrary.dll"));

            Assert.False(nestedExceptionModules.ContainsKey("appdomains.exe"));

            // Ensure that we use the same ClrModule in each AppDomain.
            Assert.Equal(appDomainsModules["mscorlib.dll"], nestedExceptionModules["mscorlib.dll"]);
            Assert.Equal(appDomainsModules["sharedlibrary.dll"], nestedExceptionModules["sharedlibrary.dll"]);
        }