Example #1
0
        public void SerializationTests_Exception_Orleans()
        {
            ActivationAddress activationAddress        = ActivationAddress.NewActivationAddress(SiloAddress.NewLocalAddress(12345), GrainId.NewId());
            SiloAddress       primaryDirectoryForGrain = SiloAddress.NewLocalAddress(6789);

            Catalog.DuplicateActivationException original = new Catalog.DuplicateActivationException(activationAddress, primaryDirectoryForGrain);
            Catalog.DuplicateActivationException output   = SerializationManager.RoundTripSerializationForTesting(original);

            Assert.Equal(original.Message, output.Message);
            Assert.Equal(original.ActivationToUse, output.ActivationToUse);
            Assert.Equal(original.PrimaryDirectoryForGrain, output.PrimaryDirectoryForGrain);
        }
Example #2
0
        public void SerializationTests_Exception_DotNet()
        {
            ActivationAddress activationAddress        = ActivationAddress.NewActivationAddress(SiloAddress.NewLocalAddress(12345), GrainId.NewId());
            SiloAddress       primaryDirectoryForGrain = SiloAddress.NewLocalAddress(6789);

            Catalog.DuplicateActivationException original = new Catalog.DuplicateActivationException(activationAddress, primaryDirectoryForGrain);
            Catalog.DuplicateActivationException output   = TestingUtils.RoundTripDotNetSerializer(original, this.fixture.GrainFactory);

            Assert.Equal(original.Message, output.Message);
            Assert.Equal(original.ActivationToUse, output.ActivationToUse);
            Assert.Equal(original.PrimaryDirectoryForGrain, output.PrimaryDirectoryForGrain);
        }
Example #3
0
        private async Task SetupAsync()
        {
            _silos = new List <MembershipEntry>();
            for (var i = 0; i < SiloCount; ++i)
            {
                _silos.Add(new MembershipEntry
                {
                    SiloAddress = SiloAddress.NewLocalAddress(i)
                });
            }
            _siloDetails = _silos.Select(x => new SiloDetails()
            {
                SiloAddress = x.SiloAddress.ToParsableString()
            }).ToArray();

            _grainTypes = new List <string>();
            for (int i = 0; i < GrainTypeCount; i++)
            {
                _grainTypes.Add("Grain" + Guid.NewGuid());
            }

            _simpleGrainStatistics = new List <SimpleGrainStatistic>();
            foreach (var silo in _silos)
            {
                foreach (var grainType in _grainTypes)
                {
                    _simpleGrainStatistics.Add(new SimpleGrainStatistic
                    {
                        ActivationCount = GrainActivationPerSiloCount,
                        GrainType       = grainType,
                        SiloAddress     = silo.SiloAddress
                    });
                }
            }

            _totalActivationCount = _simpleGrainStatistics.Sum(s => s.ActivationCount);

            _dashboardGrain = new TestDashboardGrain();

            var grainMethods = new List <string>();

            for (var i = 0; i < GrainMethodCount; i++)
            {
                grainMethods.Add("Method" + Guid.NewGuid());
            }

            await _dashboardGrain.OnActivateAsync().ConfigureAwait(false);

            var now = DateTime.UtcNow;

            foreach (var silo in _silos)
            {
                var grainTracings = new List <GrainTraceEntry>();
                foreach (var grainType in _grainTypes)
                {
                    foreach (var grainMethod in grainMethods)
                    {
                        grainTracings.Add(new GrainTraceEntry
                        {
                            Count       = GrainCallsPerActivationCount * GrainActivationPerSiloCount,
                            ElapsedTime = 50,
                            Grain       = grainType,
                            Method      = grainMethod,
                            Period      = now,
                            SiloAddress = silo.SiloAddress.ToParsableString()
                        });
                    }
                }
                await _dashboardGrain.SubmitTracing(silo.SiloAddress.ToParsableString(), grainTracings.ToArray())
                .ConfigureAwait(false);
            }
        }
Example #4
0
        internal async Task Run_ActivationSched_Test1(TaskScheduler scheduler, bool bounceToThreadPool)
        {
            var grainId = GrainId.GetGrainId(0, Guid.NewGuid());
            var silo    = new MockSiloDetails
            {
                SiloAddress = SiloAddress.NewLocalAddress(23)
            };
            var grain = NonReentrentStressGrainWithoutState.Create(grainId, new GrainRuntime(new GlobalConfiguration(), silo, null, null, null, null, null, null));
            await grain.OnActivateAsync();

            Task        wrapped     = null;
            var         wrapperDone = new TaskCompletionSource <bool>();
            var         wrappedDone = new TaskCompletionSource <bool>();
            Task <Task> wrapper     = new Task <Task>(() =>
            {
                output.WriteLine("#0 - new Task - SynchronizationContext.Current={0} TaskScheduler.Current={1}",
                                 SynchronizationContext.Current, TaskScheduler.Current);

                Task t1 = grain.Test1();

                Action wrappedDoneAction = () => { wrappedDone.SetResult(true); };

                if (bounceToThreadPool)
                {
                    wrapped = t1.ContinueWith(_ => wrappedDoneAction(),
                                              CancellationToken.None,
                                              TaskContinuationOptions.ExecuteSynchronously,
                                              TaskScheduler.Default);
                }
                else
                {
                    wrapped = t1.ContinueWith(_ => wrappedDoneAction());
                }
                wrapperDone.SetResult(true);
                return(wrapped);
            });

            wrapper.Start(scheduler);
            await wrapper;

            var timeoutLimit = TimeSpan.FromSeconds(1);

            try
            {
                await wrapperDone.Task.WithTimeout(timeoutLimit);
            }
            catch (TimeoutException)
            {
                Assert.True(false, "Result did not arrive before timeout " + timeoutLimit);
            }
            bool done = wrapperDone.Task.Result;

            Assert.True(done, "Wrapper Task finished");
            Assert.True(wrapper.IsCompleted, "Wrapper Task completed");

            //done = wrapped.Wait(TimeSpan.FromSeconds(12));
            //Assert.True(done, "Wrapped Task not timeout");
            await wrapped;

            try
            {
                await wrappedDone.Task.WithTimeout(timeoutLimit);
            }
            catch (TimeoutException)
            {
                Assert.True(false, "Result did not arrive before timeout " + timeoutLimit);
            }
            done = wrappedDone.Task.Result;
            Assert.True(done, "Wrapped Task should be finished");
            Assert.True(wrapped.IsCompleted, "Wrapped Task completed");
        }
Example #5
0
        public async Task SqlStatisticsPublisher_MySql_ReportMetrics_Silo()
        {
            GlobalConfiguration config = new GlobalConfiguration
            {
                DeploymentId         = "statisticsDeployment",
                AdoInvariant         = adoInvariant,
                DataConnectionString = connectionString
            };

            IMembershipTable mbr = new SqlMembershipTable();
            await mbr.InitializeMembershipTable(config, true, logger).WithTimeout(timeout);

            await Initialize();

            statisticsPublisher.AddConfiguration("statisticsDeployment", true, "statisticsSiloId", SiloAddress.NewLocalAddress(0), new IPEndPoint(IPAddress.Loopback, 12345), "statisticsHostName");
            await RunParallel(10, () => statisticsPublisher.ReportMetrics((ISiloPerformanceMetrics) new DummyPerformanceMetrics()));
        }
        protected async Task SqlStatisticsPublisher_ReportMetrics_Silo()
        {
            GlobalConfiguration config = new GlobalConfiguration
            {
                DeploymentId         = "statisticsDeployment",
                AdoInvariant         = AdoInvariant,
                DataConnectionString = ConnectionString
            };

            IMembershipTable mbr = new SqlMembershipTable(this.environment.Services.GetRequiredService <IGrainReferenceConverter>());
            await mbr.InitializeMembershipTable(config, true, logger).WithTimeout(TimeSpan.FromMinutes(1));

            StatisticsPublisher.AddConfiguration("statisticsDeployment", true, "statisticsSiloId", SiloAddress.NewLocalAddress(0), new IPEndPoint(IPAddress.Loopback, 12345), "statisticsHostName");
            await RunParallel(10, () => StatisticsPublisher.ReportMetrics((ISiloPerformanceMetrics) new DummyPerformanceMetrics()));
        }