public override async Task OnActivateAsync()
        {
            logger  = this.GetLogger();
            watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);

            Assert.False(doingActivate, "Not doing Activate yet");
            Assert.False(doingDeactivate, "Not doing Deactivate yet");
            doingActivate = true;

            logger.Info("OnActivateAsync");

            // Spawn Task to run on default .NET thread pool
            var task = Task.Factory.StartNew(() =>
            {
                logger.Info("Started-OnActivateAsync-SubTask");
                Assert.True(TaskScheduler.Current == TaskScheduler.Default,
                            "Running under default .NET Task scheduler");
                Assert.True(doingActivate, "Still doing Activate in Sub-Task");
                logger.Info("Finished-OnActivateAsync-SubTask");
            }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
            await task;

            logger.Info("Started-OnActivateAsync");

            await watcher.RecordActivateCall(Data.ActivationId.ToString());

            Assert.True(doingActivate, "Doing Activate");

            logger.Info("OnActivateAsync-Sleep");
            Thread.Sleep(TimeSpan.FromSeconds(1));
            Assert.True(doingActivate, "Still doing Activate after Sleep");

            logger.Info("Finished-OnActivateAsync");
            doingActivate = false;
        }
Exemple #2
0
        public override async Task OnActivateAsync(CancellationToken cancellationToken)
        {
            Assert.NotNull(TaskScheduler.Current);
            Assert.NotEqual(TaskScheduler.Current, TaskScheduler.Default);
            var startMe =
                new Task(
                    () =>
            {
                Assert.NotNull(TaskScheduler.Current);
                Assert.NotEqual(TaskScheduler.Current, TaskScheduler.Default);
                logger.Info("OnActivateAsync");

                watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);

                Assert.False(doingActivate, "Not doing Activate");
                Assert.False(doingDeactivate, "Not doing Deactivate");
                doingActivate = true;
            });
            // we want to use Task.ContinueWith with an async lambda, an explicitly typed variable is required to avoid
            // writing code that doesn't do what i think it is doing.
            Func <Task> asyncCont =
                async() =>
            {
                Assert.NotNull(TaskScheduler.Current);
                Assert.NotEqual(TaskScheduler.Current, TaskScheduler.Default);
                logger.Info("Started-OnActivateAsync");

                Assert.True(doingActivate, "Doing Activate 1");
                Assert.False(doingDeactivate, "Not doing Deactivate");

                try
                {
                    logger.Info("Calling RecordActivateCall");
                    await watcher.RecordActivateCall(RuntimeHelpers.GetHashCode(this).ToString("X"));

                    logger.Info("Returned from calling RecordActivateCall");
                }
                catch (Exception exc)
                {
                    var msg = "RecordActivateCall failed with error " + exc;
                    logger.Error(0, msg);
                    Assert.True(false, msg);
                }

                Assert.True(doingActivate, "Doing Activate 2");
                Assert.False(doingDeactivate, "Not doing Deactivate");

                await Task.Delay(TimeSpan.FromSeconds(1));

                doingActivate = false;

                logger.Info("Finished-OnActivateAsync");
            };
            var awaitMe = startMe.ContinueWith(_ => asyncCont()).Unwrap();

            startMe.Start();
            await awaitMe;
        }
        protected Task RecordActivate()
        {
#if COUNT_ACTIVATE_DEACTIVATE
            watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
            return(watcher.RecordActivateCall(IdentityString));
#else
            return(Task.CompletedTask);
#endif
        }
        public override Task OnActivateAsync()
        {
            logger = this.GetLogger();

            var startMe =
                new Task(
                    () =>
            {
                logger.Info("OnActivateAsync");

                watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);

                Assert.False(doingActivate, "Not doing Activate");
                Assert.False(doingDeactivate, "Not doing Deactivate");
                doingActivate = true;
            });
            // we want to use Task.ContinueWith with an async lambda, an explicitly typed variable is required to avoid
            // writing code that doesn't do what i think it is doing.
            Func <Task> asyncCont =
                async() =>
            {
                logger.Info("Started-OnActivateAsync");

                Assert.True(doingActivate, "Doing Activate");
                Assert.False(doingDeactivate, "Not doing Deactivate");

                try
                {
                    logger.Info("Calling RecordActivateCall");
                    await watcher.RecordActivateCall(Data.ActivationId.ToString());

                    logger.Info("Returned from calling RecordActivateCall");
                }
                catch (Exception exc)
                {
                    var msg = "RecordActivateCall failed with error " + exc;
                    logger.Error(0, msg);
                    Assert.True(false, msg);
                }

                Assert.True(doingActivate, "Doing Activate");
                Assert.False(doingDeactivate, "Not doing Deactivate");

                await Task.Delay(TimeSpan.FromSeconds(1));

                doingActivate = false;

                logger.Info("Finished-OnActivateAsync");
            };
            var awaitMe = startMe.ContinueWith(_ => asyncCont()).Unwrap();

            startMe.Start();
            return(awaitMe);
        }
Exemple #5
0
        public override async Task OnActivateAsync()
        {
            logger.Info("OnActivateAsync");
            watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
            Assert.False(doingActivate, "Activate method should have finished");
            Assert.False(doingDeactivate, "Not doing Deactivate yet");
            doingActivate = true;
            await watcher.RecordActivateCall(Data.ActivationId.ToString());

            Assert.True(doingActivate, "Activate method still running");
            doingActivate = false;
        }
Exemple #6
0
        public override async Task OnActivateAsync(CancellationToken cancellationToken)
        {
            logger.LogInformation("OnActivateAsync");
            watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
            Assert.False(doingActivate, "Activate method should have finished");
            Assert.False(doingDeactivate, "Not doing Deactivate yet");
            doingActivate = true;
            await watcher.RecordActivateCall(RuntimeHelpers.GetHashCode(this).ToString("X"));

            Assert.True(doingActivate, "Activate method still running");
            doingActivate = false;
        }
 public override async Task OnActivateAsync()
 {
     logger = GetLogger();
     logger.Info("OnActivateAsync");
     watcher = GrainFactory.GetGrain<IActivateDeactivateWatcherGrain>(0);
     Assert.IsFalse(doingActivate, "Activate method should have finished");
     Assert.IsFalse(doingDeactivate, "Not doing Deactivate yet");
     doingActivate = true;
     await watcher.RecordActivateCall(Data.ActivationId.ToString());
     Assert.IsTrue(doingActivate, "Activate method still running");
     doingActivate = false;
 }
Exemple #8
0
 public override Task OnActivateAsync()
 {
     logger.Info("OnActivateAsync");
     watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
     Assert.False(doingActivate, "Activate method should have finished");
     Assert.False(doingDeactivate, "Not doing Deactivate yet");
     doingActivate = true;
     return(watcher.RecordActivateCall(Data.ActivationId.ToString())
            .ContinueWith((Task t) =>
     {
         Assert.False(t.IsFaulted, "RecordActivateCall failed");
         Assert.True(doingActivate, "Doing Activate");
         doingActivate = false;
     }));
 }
Exemple #9
0
 public override Task OnActivateAsync(CancellationToken cancellationToken)
 {
     logger.LogInformation("OnActivateAsync");
     watcher = GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
     Assert.False(doingActivate, "Activate method should have finished");
     Assert.False(doingDeactivate, "Not doing Deactivate yet");
     doingActivate = true;
     return(watcher.RecordActivateCall(RuntimeHelpers.GetHashCode(this).ToString("X"))
            .ContinueWith((Task t) =>
     {
         Assert.False(t.IsFaulted, "RecordActivateCall failed");
         Assert.True(doingActivate, "Doing Activate");
         doingActivate = false;
     }));
 }
 public override Task OnActivateAsync()
 {
     logger = GetLogger();
     logger.Info("OnActivateAsync");
     watcher = GrainFactory.GetGrain<IActivateDeactivateWatcherGrain>(0);
     Assert.IsFalse(doingActivate, "Activate method should have finished");
     Assert.IsFalse(doingDeactivate, "Not doing Deactivate yet");
     doingActivate = true;
     return watcher.RecordActivateCall(Data.ActivationId.ToString())
         .ContinueWith((Task t) =>
         {
             Assert.IsFalse(t.IsFaulted, "RecordActivateCall failed");
             Assert.IsTrue(doingActivate, "Doing Activate");
             doingActivate = false;
         });
 }
        public override async Task OnActivateAsync()
        {
            logger = GetLogger();
            watcher = GrainFactory.GetGrain<IActivateDeactivateWatcherGrain>(0);

            Assert.IsFalse(doingActivate, "Not doing Activate yet");
            Assert.IsFalse(doingDeactivate, "Not doing Deactivate yet");
            doingActivate = true;

            logger.Info("OnActivateAsync");

            // Spawn Task to run on default .NET thread pool
            var task = Task.Factory.StartNew(() =>
            {
                logger.Info("Started-OnActivateAsync-SubTask");
                Assert.IsTrue(TaskScheduler.Current == TaskScheduler.Default,
                    "Running under default .NET Task scheduler");
                Assert.IsTrue(doingActivate, "Still doing Activate in Sub-Task");
                logger.Info("Finished-OnActivateAsync-SubTask");
            }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
            await task;

            logger.Info("Started-OnActivateAsync");

            await watcher.RecordActivateCall(Data.ActivationId.ToString());
            Assert.IsTrue(doingActivate, "Doing Activate");

            logger.Info("OnActivateAsync-Sleep");
            Thread.Sleep(TimeSpan.FromSeconds(1));
            Assert.IsTrue(doingActivate, "Still doing Activate after Sleep");

            logger.Info("Finished-OnActivateAsync");
            doingActivate = false;
        }