public virtual void HandleClientReq(ClientReq e) { m_livenessMonitor.ClientReq(e); m_dataToReplicate = e.DataToReplicate; foreach (var storageNode in m_storageNodes) { storageNode.ReplReq(new ReplReq(m_dataToReplicate)); } }
public void Machine_should_transit_its_state_according_to_passed_event() { // Arrange var configuration = Configuration.Create().WithMonitorsInProductionEnabled().WithVerbosityEnabled(2); var runtime = PSharpRuntime.Create(configuration); var runtimeHost = HostInfo.NewRuntimeHost(runtime); var logger = new SynchronizedLogger(new InMemoryLogger()); var setIfHandledSync = logger.MachineActionHandledSet((_1, _2, actionName) => actionName == "HandleSync"); logger.ApplySynchronization(setIfHandledSync); runtimeHost.SetLogger(logger); var server = runtimeHost.New(MachineInterface.Sender <IServerSender>().Bundler <IServerBundler>().Receiver <ServerReceiverWithoutBug>()); // Act var messages = new MessageCollection(); var safetyMonitorMock = new Mock <ISafetyMonitorSender>(); var livenessMonitorMock = new Mock <ILivenessMonitorSender>(); server.Configure(new ConfigureServer(messages, safetyMonitorMock.Object, livenessMonitorMock.Object)); var clientMock = new Mock <IClientSender>(); var clientId = runtime.CreateMachine(typeof(Client)); clientMock.SetupGet(_ => _.Id).Returns(clientId); var storageNodeMock = new Mock <IStorageNodeSender>(); var storageNodeId = runtime.CreateMachine(typeof(StorageNode)); storageNodeMock.Setup(_ => _.Id).Returns(storageNodeId); server.Handshake(new HandshakeServer(clientMock.Object, new[] { storageNodeMock.Object })); var clientReq = new ClientReq(42); server.ClientReq(clientReq); server.Sync(new Sync(storageNodeMock.Object, 0)); // Assert Assert.That(logger.WaitForWriting(3000), Does.Contain("handled action 'HandleSync'")); livenessMonitorMock.Verify(_ => _.ClientReq(clientReq)); storageNodeMock.Verify(_ => _.ReplReq(It.Is <ReplReq>(x => x.Data == clientReq.DataToReplicate))); }
public void HandleClientReq(ClientReq e) { Self.NotifyImmediately(new Notify()); }
public void HandleClientReq(ClientReq e) { Receiver.HandleClientReq(e); MachineHandledLog(nameof(HandleClientReq)); }
public void ClientReq(ClientReq e) { RuntimeHost.SendEvent(Id, e); }