Created
April 10, 2017 20:33
-
-
Save tomliversidge/184f925879dc284c012a933aebd75a9b to your computer and use it in GitHub Desktop.
watch_test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [Fact] | |
| public async void CanWatchRemoteActor() | |
| { | |
| var props = Actor.FromProducer(() => new LocalActor()); | |
| var localActor = Actor.SpawnNamed(props, "local watcher"); | |
| var remoteActorName = Guid.NewGuid().ToString(); | |
| var remoteActor = await Remote.SpawnNamedAsync("127.0.0.1:12000", remoteActorName, "remote", TimeSpan.FromSeconds(5)); | |
| remoteActor.Tell(new Watch { Watcher = localActor }); | |
| await Task.Delay(TimeSpan.FromSeconds(3)); | |
| remoteActor.Stop(); | |
| await Task.Delay(TimeSpan.FromSeconds(3)); //wait for stop to happen before assertion | |
| var terminatedMessageReceived = await localActor.RequestAsync<bool>("terminate received?", TimeSpan.FromSeconds(5)); | |
| Assert.True(terminatedMessageReceived); | |
| } | |
| public class LocalActor : IActor | |
| { | |
| private bool _terminateReceived; | |
| public Task ReceiveAsync(IContext context) | |
| { | |
| switch (context.Message) | |
| { | |
| case string msg when msg == "terminate received?": | |
| context.Sender.Tell(_terminateReceived); | |
| break; | |
| case Terminated msg: | |
| _terminateReceived = true; | |
| break; | |
| } | |
| return Actor.Done; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment