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); }
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"]); }