示例#1
0
        /// <summary>
        /// Start the default Primary and Secondary test silos, plus client in-process,
        /// using the specified silo and client config options.
        /// </summary>
        public UnitTestSiloHost(UnitTestSiloOptions siloOptions, UnitTestClientOptions clientOptions)
        {
            this.siloInitOptions   = siloOptions;
            this.clientInitOptions = clientOptions;

            AppDomain.CurrentDomain.UnhandledException += _ReportUnobservedException;

            try
            {
                _Initialize(siloOptions, clientOptions);
                string startMsg = "----------------------------- STARTING NEW UNIT TEST BASE: " + this.GetType().FullName + " -------------------------------------";
                Console.WriteLine(startMsg);
            }
            catch (TimeoutException te)
            {
                throw new TimeoutException("Timeout during test initialization", te);
            }
            catch (Exception ex)
            {
                Exception baseExc = ex.GetBaseException();
                if (baseExc is TimeoutException)
                {
                    throw new TimeoutException("Timeout during test initialization", ex);
                }
                throw new AggregateException(
                          string.Format("Exception during test initialization: {0}",
                                        TraceLogger.PrintException(ex)), ex);
            }
        }
示例#2
0
        private void _Initialize(UnitTestSiloOptions options, UnitTestClientOptions clientOptions = null)
        {
            bool doStartPrimary   = false;
            bool doStartSecondary = false;

            if (options.StartFreshOrleans)
            {
                // the previous test was !startFresh, so we need to cleanup after it.
                if (Primary != null || Secondary != null || GrainClient.IsInitialized)
                {
                    StopDefaultSilos();
                }

                StopAdditionalSilos();

                if (options.StartPrimary)
                {
                    doStartPrimary = true;
                }
                if (options.StartSecondary)
                {
                    doStartSecondary = true;
                }
            }
            else
            {
                if (options.StartPrimary && Primary == null)
                {
                    // first time.
                    doStartPrimary = true;
                }
                if (options.StartSecondary && Secondary == null)
                {
                    doStartSecondary = true;
                }
            }
            if (options.PickNewDeploymentId && String.IsNullOrEmpty(DeploymentId))
            {
                DeploymentId = _GetDeploymentId();
            }

            if (doStartPrimary)
            {
                Primary = _StartOrleansSilo(Silo.SiloType.Primary, options);
            }
            if (doStartSecondary)
            {
                Secondary = _StartOrleansSilo(Silo.SiloType.Secondary, options);
            }

            if (!GrainClient.IsInitialized && options.StartClient)
            {
                if (clientOptions != null && clientOptions.ClientConfigFile != null)
                {
                    clientConfig = ClientConfiguration.LoadFromFile(clientOptions.ClientConfigFile.FullName);
                }
                else
                {
                    clientConfig = ClientConfiguration.StandardLoad();
                }

                if (clientOptions != null)
                {
                    clientConfig.ResponseTimeout = clientOptions.ResponseTimeout;
                    if (clientOptions.ProxiedGateway && clientOptions.Gateways != null)
                    {
                        clientConfig.Gateways = clientOptions.Gateways;
                        if (clientOptions.PreferedGatewayIndex >= 0)
                        {
                            clientConfig.PreferedGatewayIndex = clientOptions.PreferedGatewayIndex;
                        }
                    }
                    clientConfig.PropagateActivityId = clientOptions.PropagateActivityId;
                    if (!String.IsNullOrEmpty(DeploymentId))
                    {
                        clientConfig.DeploymentId = DeploymentId;
                    }
                }
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    // Test is running inside debugger - Make timeout ~= infinite
                    clientConfig.ResponseTimeout = TimeSpan.FromMilliseconds(1000000);
                }
                if (options.LargeMessageWarningThreshold > 0)
                {
                    clientConfig.LargeMessageWarningThreshold = options.LargeMessageWarningThreshold;
                }
                GrainClient.Initialize(clientConfig);
            }
        }