/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.livedata.server; import static org.testng.AssertJUnit.assertEquals; import net.sf.ehcache.CacheManager; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import com.opengamma.id.ExternalScheme; import com.opengamma.util.ehcache.EHCacheUtils; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = {TestGroup.INTEGRATION, "ehcache"}) public class ReconnectManagerTest { private CacheManager _cacheManager; @BeforeClass public void setUpClass() { _cacheManager = EHCacheUtils.createTestCacheManager(getClass()); } @AfterClass public void tearDownClass() { EHCacheUtils.shutdownQuiet(_cacheManager); } //------------------------------------------------------------------------- @Test public void reconnection() throws Exception { MockLiveDataServer server = new MockLiveDataServer(ExternalScheme.of("BLOOMBERG_BUID"), _cacheManager); ReconnectManager manager = new ReconnectManager(server, 20); try { server.subscribe("foo"); Assert.fail("Not connected yet"); } catch (RuntimeException e) { // ok } manager.start(); assertEquals(0, server.getNumConnections()); server.connect(); assertEquals(1, server.getNumConnections()); server.subscribe("foo"); assertEquals(1, server.getActualSubscriptions().size()); Thread.sleep(50); // shouldn't reconnect assertEquals(1, server.getNumConnections()); assertEquals(0, server.getNumDisconnections()); manager.stop(); server.disconnect(); assertEquals(1, server.getNumDisconnections()); assertEquals(1, server.getNumConnections()); Thread.sleep(1000); manager.start(); // should reconnect and reestablish subscriptions Thread.sleep(1000); assertEquals(1, server.getNumDisconnections()); assertEquals(2, server.getNumConnections()); assertEquals(2, server.getActualSubscriptions().size()); } }