ExpirationManager expirationManager = dataServer.getExpirationManager();
// Set expiration timeout artificially low
expirationManager.setTimeoutExtension(300);
HeartbeatReceiver receiver = new HeartbeatReceiver(expirationManager);
DirectInvocationByteArrayMessageSender conduit = new DirectInvocationByteArrayMessageSender(receiver);
ValueDistributor valueDistributor = new ValueDistributor();
Timer t = new Timer("HeartbeatConduitTest");
new Heartbeater(valueDistributor, new HeartbeatSender(conduit, OpenGammaFudgeContext.getInstance()), t, 100);
// subscribe on the client side - starts sending heartbeats
LiveDataSpecification subscription = new LiveDataSpecification(
dataServer.getDefaultNormalizationRuleSetId(),
ExternalId.of(identificationDomain, "USSw5 Curncy"));
CollectingLiveDataListener listener = new CollectingLiveDataListener();
valueDistributor.addListener(subscription, listener);
// subscribe on the server side
dataServer.subscribe(subscription, false);
// Send a couple of heartbeats
Thread.sleep(300);
// Stop sending heartbeats
valueDistributor.removeListener(subscription, listener);
// Wait for expiry
Thread.sleep(500);
expirationManager.housekeep(dataServer);