use of org.apache.ignite.spi.discovery.DiscoverySpi in project ignite by apache.
the class GridSpiAbstractTest method spiStart.
/**
* @throws Exception If failed.
*/
@SuppressWarnings({ "unchecked", "CastToIncompatibleInterface", "InstanceofIncompatibleInterface" })
protected final void spiStart() throws Exception {
GridSpiTest spiTest = GridTestUtils.getAnnotation(getClass(), GridSpiTest.class);
assert spiTest != null;
T spi = (T) spiTest.spi().newInstance();
// Set spi into test data.
getTestData().setSpi(spi);
if (!(spi instanceof DiscoverySpi)) {
if (spiTest.triggerDiscovery())
configureDiscovery(spiTest);
} else
getTestData().setDiscoverySpi((DiscoverySpi) spi);
getTestResources().inject(spi);
spiConfigure(spi);
Map<String, Object> attrs = spi.getNodeAttributes();
// Set up SPI class name and SPI version.
Map<String, Serializable> spiAttrs = initSpiClassAndVersionAttributes(spi);
if (attrs != null)
getTestData().getAttributes().putAll(attrs);
if (spiAttrs != null)
getTestData().getAttributes().putAll(spiAttrs);
Map<String, Serializable> nodeAttrs = getNodeAttributes();
if (nodeAttrs != null)
getTestData().getAttributes().putAll(nodeAttrs);
DiscoverySpi discoSpi = getTestData().getDiscoverySpi();
if (spiTest.triggerDiscovery() && !getTestData().isDiscoveryTest()) {
getTestData().getAttributes().putAll(initSpiClassAndVersionAttributes(discoSpi));
// Set all local node attributes into discovery SPI.
discoSpi.setNodeAttributes(getTestData().getAttributes(), VERSION);
discoSpi.setMetricsProvider(createMetricsProvider());
discoSpi.setDataExchange(new DiscoverySpiDataExchange() {
@Override
public DiscoveryDataBag collect(DiscoveryDataBag dataBag) {
return dataBag;
}
@Override
public void onExchange(DiscoveryDataBag dataBag) {
// No-op.
}
});
try {
spiStart(discoSpi);
} catch (Exception e) {
spiStop(discoSpi);
throw e;
}
}
if (spi instanceof DiscoverySpi) {
getTestData().getAttributes().putAll(initSpiClassAndVersionAttributes(spi));
((DiscoverySpi) spi).setNodeAttributes(getTestData().getAttributes(), VERSION);
((DiscoverySpi) spi).setMetricsProvider(createMetricsProvider());
}
try {
spiStart(spi);
} catch (Exception e) {
spiStop(spi);
if (discoSpi != null && !discoSpi.equals(spi))
spiStop(discoSpi);
afterSpiStopped();
throw e;
}
// Initialize SPI context.
getTestData().setSpiContext(initSpiContext());
// Initialize discovery SPI only once.
if (discoSpi != null && !discoSpi.equals(spi))
discoSpi.onContextInitialized(getSpiContext());
spi.onContextInitialized(getTestData().getSpiContext());
}
use of org.apache.ignite.spi.discovery.DiscoverySpi in project ignite by apache.
the class CacheConfigurationP2PTest method testCacheConfigurationP2P.
/**
* @throws Exception If failed.
*/
public void testCacheConfigurationP2P() throws Exception {
fail("Enable when IGNITE-537 is fixed.");
try (Ignite ignite = Ignition.start(createConfiguration())) {
final CountDownLatch srvsReadyLatch = new CountDownLatch(2);
final CountDownLatch clientReadyLatch = new CountDownLatch(1);
GridJavaProcess node1 = null;
GridJavaProcess node2 = null;
GridJavaProcess clientNode = null;
Collection<String> jvmArgs = Arrays.asList("-ea", "-DIGNITE_QUIET=false");
try {
node1 = GridJavaProcess.exec(CacheConfigurationP2PTestServer.class.getName(), null, log, new CI1<String>() {
@Override
public void apply(String s) {
info("Server node1: " + s);
if (s.contains(NODE_START_MSG))
srvsReadyLatch.countDown();
}
}, null, null, jvmArgs, null);
node2 = GridJavaProcess.exec(CacheConfigurationP2PTestServer.class.getName(), null, log, new CI1<String>() {
@Override
public void apply(String s) {
info("Server node2: " + s);
if (s.contains(NODE_START_MSG))
srvsReadyLatch.countDown();
}
}, null, null, jvmArgs, null);
assertTrue(srvsReadyLatch.await(60, SECONDS));
String cp = U.getIgniteHome() + "/modules/extdata/p2p/target/classes/";
clientNode = GridJavaProcess.exec(CLIENT_CLS_NAME, null, log, new CI1<String>() {
@Override
public void apply(String s) {
info("Client node: " + s);
if (s.contains(NODE_START_MSG))
clientReadyLatch.countDown();
}
}, null, null, jvmArgs, cp);
assertTrue(clientReadyLatch.await(60, SECONDS));
int exitCode = clientNode.getProcess().waitFor();
assertEquals("Unexpected exit code", 0, exitCode);
node1.killProcess();
node2.killProcess();
final DiscoverySpi spi = ignite.configuration().getDiscoverySpi();
boolean wait = GridTestUtils.waitForCondition(new GridAbsPredicate() {
@Override
public boolean apply() {
Map p2pLdrs = GridTestUtils.getFieldValue(spi, "p2pLdrs");
log.info("p2pLdrs: " + p2pLdrs.size());
return p2pLdrs.isEmpty();
}
}, 10_000);
assertTrue(wait);
} finally {
if (node1 != null)
node1.killProcess();
if (node2 != null)
node2.killProcess();
if (clientNode != null)
clientNode.killProcess();
}
}
}
use of org.apache.ignite.spi.discovery.DiscoverySpi in project ignite by apache.
the class GridFailFastNodeFailureDetectionSelfTest method failNode.
/**
* @param ignite Ignite.
* @throws Exception In case of error.
*/
private void failNode(Ignite ignite) throws Exception {
DiscoverySpi disco = ignite.configuration().getDiscoverySpi();
U.invoke(disco.getClass(), disco, "simulateNodeFailure");
CommunicationSpi comm = ignite.configuration().getCommunicationSpi();
U.invoke(comm.getClass(), comm, "simulateNodeFailure");
}
use of org.apache.ignite.spi.discovery.DiscoverySpi in project ignite by apache.
the class GridManagerStopSelfTest method testStopDiscoveryManager.
/**
* @throws Exception If failed.
*/
public void testStopDiscoveryManager() throws Exception {
DiscoverySpi spi = new TcpDiscoverySpi();
injectLogger(spi);
ctx.config().setDiscoverySpi(spi);
GridDiscoveryManager mgr = new GridDiscoveryManager(ctx);
mgr.stop(true);
}
Aggregations