Exemplo n.º 1
0
            private static TestShellRuntimeInfo GetBestMatchRuntimeInfo(IEnumerable <TestShellRuntimeInfo> runtimeInfos)
            {
                TestShellRuntimeInfo bestMatchRuntimeInfo = runtimeInfos.
                                                            OrderBy(r => VersionStringToComparableNumber(r.Version)).FirstOrDefault();//best match

                return(bestMatchRuntimeInfo);
            }
Exemplo n.º 2
0
            private static TestShellRuntimeInfo SelectRuntimeVersionInfo(IEnumerable <TestShellRuntimeInfo> runtimeInfos, string targetRuntimeVersion)
            {
                TestShellRuntimeInfo runtimeInfo = GetCurrentlyLoadedRuntimeInfo(runtimeInfos);

                if (runtimeInfo != null)
                {
                    if (!IsGreaterOrEqualVersion(runtimeInfo.Version, targetRuntimeVersion))
                    {
                        throw IncompatibleRuntimeLoaded(targetRuntimeVersion, runtimeInfo.Version);
                    }
                }
                else
                {
                    var matchingRuntimeInfos = GetMatchingRuntimeInfos(runtimeInfos, targetRuntimeVersion);
                    if (!matchingRuntimeInfos.Any())
                    {
                        throw NoMatchingRuntimeException(targetRuntimeVersion);
                    }

                    var licensedRuntimeInfos = GetLicensedRuntimeInfos(matchingRuntimeInfos);
                    if (!licensedRuntimeInfos.Any())
                    {
                        throw NoRuntimeLicenseException(targetRuntimeVersion);
                    }

                    runtimeInfo = GetBestMatchRuntimeInfo(licensedRuntimeInfos);
                }
                return(runtimeInfo);
            }
Exemplo n.º 3
0
            private static bool IsLicenseValid(TestShellRuntimeInfo testShellRuntimeInfo)
            {
                string         runtimeAssemblyPath = Path.Combine(testShellRuntimeInfo.Path, testShellRuntimeInfo.RuntimeAssemblyName);
                AppDomainSetup appDomainSetup      = new AppDomainSetup();

                appDomainSetup.ApplicationBase = testShellRuntimeInfo.Path;
                AppDomain appDomain = AppDomain.CreateDomain("LicenseValidationDomain", AppDomain.CurrentDomain.Evidence, appDomainSetup);
                UnloadableLicenseValidator unloadableLicenseValidator = (UnloadableLicenseValidator)appDomain.CreateInstanceFromAndUnwrap(
                    Assembly.GetExecutingAssembly().CodeBase, "QualiSystems.Driver.IXN+TestShellRuntimeLocator+UnloadableLicenseValidator");
                bool isRuntimeLicenseValid = unloadableLicenseValidator.IsLicenseValid(runtimeAssemblyPath, testShellRuntimeInfo.RuntimeLicenseValidatorTypeName);

                AppDomain.Unload(appDomain);
                Trace.WriteLine("Quali Runtime: Runtime at " + testShellRuntimeInfo.Path + " is " + (isRuntimeLicenseValid ? "Licensed" : "Unlicenced"));
                return(isRuntimeLicenseValid);
            }
Exemplo n.º 4
0
            public TestShellRuntimeLocator(string targetRuntimeVersion)
            {
                Trace.WriteLine("Quali Runtime: Target runtime version is " + targetRuntimeVersion + ", searching for matching installed versions...");
                var runtimeInfos = ReadInstalledTestShellRuntimeInfos(targetRuntimeVersion);
                TestShellRuntimeInfo selectedRuntimeInfo = SelectRuntimeVersionInfo(runtimeInfos, targetRuntimeVersion);

                RuntimeTypeName = selectedRuntimeInfo.RuntimeTypeName;
                string runtimeAssemblyPath = Path.Combine(selectedRuntimeInfo.Path, selectedRuntimeInfo.RuntimeAssemblyName);

                if (!System.IO.File.Exists(runtimeAssemblyPath))
                {
                    throw RuntimeAssemblyNotFound(runtimeAssemblyPath);
                }
                Trace.WriteLine("Quali Runtime: Loading runtime version " + selectedRuntimeInfo.Version + " from " + runtimeAssemblyPath);
                RuntimeAssembly = Assembly.LoadFrom(runtimeAssemblyPath);
            }
Exemplo n.º 5
0
            private static TestShellRuntimeInfo GetCurrentlyLoadedRuntimeInfo(IEnumerable <TestShellRuntimeInfo> readTestShellRuntimeInfo)
            {
                TestShellRuntimeInfo matchingRuntime = null;

                foreach (var loadedAssembly in AppDomain.CurrentDomain.GetAssemblies())
                {
                    try
                    {
                        matchingRuntime = readTestShellRuntimeInfo.FirstOrDefault(r => string.Equals(loadedAssembly.Location, Path.Combine(r.Path, r.RuntimeAssemblyName), StringComparison.InvariantCultureIgnoreCase));
                        if (matchingRuntime != null)
                        {
                            Trace.WriteLine("Quali Runtime: " + string.Format("Runtime version {0} already loaded.", matchingRuntime.Version));
                            break;
                        }
                    }
                    catch (NotSupportedException)
                    {}
                }
                return(matchingRuntime);
            }
Exemplo n.º 6
0
            private static IEnumerable <TestShellRuntimeInfo> ReadInstalledTestShellRuntimeInfos(string targetRuntimeVersion)
            {
                RegistryKey testShellRuntimeRepositoryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(RuntimeRepositoryPath);

                if (testShellRuntimeRepositoryKey == null || testShellRuntimeRepositoryKey.SubKeyCount == 0)
                {
                    throw NoMatchingRuntimeException(targetRuntimeVersion);
                }

                List <TestShellRuntimeInfo> testShellRuntimeInfos = new List <TestShellRuntimeInfo>();

                foreach (var subKeyName in testShellRuntimeRepositoryKey.GetSubKeyNames())
                {
                    var runtimeKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(Path.Combine(RuntimeRepositoryPath, subKeyName));
                    TestShellRuntimeInfo testShellRuntimeInfo = new TestShellRuntimeInfo();
                    testShellRuntimeInfo.Path                            = (string)runtimeKey.GetValue("Path");
                    testShellRuntimeInfo.Version                         = (string)runtimeKey.GetValue("RuntimeVersion") ?? (string)runtimeKey.GetValue("Version");
                    testShellRuntimeInfo.RuntimeAssemblyName             = (string)runtimeKey.GetValue("RuntimeAssembly");
                    testShellRuntimeInfo.RuntimeTypeName                 = (string)runtimeKey.GetValue("RuntimeType");
                    testShellRuntimeInfo.RuntimeLicenseValidatorTypeName = (string)runtimeKey.GetValue("RuntimeLicenseValidatorType");
                    testShellRuntimeInfos.Add(testShellRuntimeInfo);
                }
                return(testShellRuntimeInfos);
            }