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;
        }
예제 #2
0
 public void TestInitialize()
 {
     logger.Info("TestInitialize - {0}", TestContext.TestName);
     watcher = GrainClient.GrainFactory.GetGrain<IActivateDeactivateWatcherGrain>(0);
     StreamId = Guid.NewGuid();
     StreamProviderName = StreamTestsConstants.SMS_STREAM_PROVIDER_NAME;
     StreamNamespace = StreamTestsConstants.StreamLifecycleTestsNamespace;
 }
예제 #3
0
 public StreamLifecycleTests(ITestOutputHelper output)
 {
     this.output = output;
     watcher = GrainClient.GrainFactory.GetGrain<IActivateDeactivateWatcherGrain>(0);
     StreamId = Guid.NewGuid();
     StreamProviderName = StreamTestsConstants.SMS_STREAM_PROVIDER_NAME;
     StreamNamespace = StreamTestsConstants.StreamLifecycleTestsNamespace;
 }
예제 #4
0
 public void TestCleanup()
 {
     if (watcher != null)
     {
         watcher.Clear().Wait();
         watcher = null;
     }
 }
 public void TestCleanup()
 {
     if (watcher != null)
     {
         watcher.Clear().Wait();
         watcher = null;
     }
 }
예제 #6
0
 public void TestInitialize()
 {
     logger.Info("TestInitialize - {0}", TestContext.TestName);
     watcher            = GrainClient.GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
     StreamId           = Guid.NewGuid();
     StreamProviderName = StreamTestsConstants.SMS_STREAM_PROVIDER_NAME;
     StreamNamespace    = StreamTestsConstants.StreamLifecycleTestsNamespace;
 }
예제 #7
0
 public StreamLifecycleTests(ITestOutputHelper output)
 {
     this.output        = output;
     watcher            = GrainClient.GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
     StreamId           = Guid.NewGuid();
     StreamProviderName = StreamTestsConstants.SMS_STREAM_PROVIDER_NAME;
     StreamNamespace    = StreamTestsConstants.StreamLifecycleTestsNamespace;
 }
예제 #8
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;
        }
예제 #9
0
        public override async Task InitializeAsync()
        {
            await base.InitializeAsync();

            this.watcher       = this.GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
            StreamId           = Guid.NewGuid();
            StreamProviderName = StreamTestsConstants.SMS_STREAM_PROVIDER_NAME;
            StreamNamespace    = StreamTestsConstants.StreamLifecycleTestsNamespace;
        }
        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);
        }
예제 #12
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;
        }
예제 #13
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;
        }
 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;
 }
예제 #15
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;
     }));
 }
예제 #16
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;
     }));
 }
 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 Task OnActivateAsync()
        {
            logger = GetLogger();

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

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

                        Assert.IsFalse(doingActivate, "Not doing Activate");
                        Assert.IsFalse(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.IsTrue(doingActivate, "Doing Activate");
                    Assert.IsFalse(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.Fail(msg);
                    }

                    Assert.IsTrue(doingActivate, "Doing Activate");
                    Assert.IsFalse(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;
        }
 public void TestInitialize()
 {
     watcher = GrainClient.GrainFactory.GetGrain<IActivateDeactivateWatcherGrain>(0);
     watcher.Clear().Wait();
 }
예제 #20
0
 public GrainActivateDeactivateTests()
 {
     watcher = GrainClient.GrainFactory.GetGrain<IActivateDeactivateWatcherGrain>(0);
     watcher.Clear().Wait();
 }
예제 #21
0
 public async Task WatcherGrain_GetGrain()
 {
     IActivateDeactivateWatcherGrain grain = GrainClient.GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(1);
     await grain.Clear();
 }
예제 #22
0
 public void TestInitialize()
 {
     watcher = GrainClient.GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
     watcher.Clear().Wait();
 }
 public GrainActivateDeactivateTests(DefaultClusterFixture fixture) : base(fixture)
 {
     watcher = this.GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
     watcher.Clear().Wait();
 }
예제 #24
0
 public GrainActivateDeactivateTests()
 {
     watcher = GrainClient.GrainFactory.GetGrain <IActivateDeactivateWatcherGrain>(0);
     watcher.Clear().Wait();
 }
        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;
        }