Search in sources :

Example 16 with DiscoverySpi

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());
}
Also used : Serializable(java.io.Serializable) DiscoveryDataBag(org.apache.ignite.spi.discovery.DiscoveryDataBag) DiscoverySpiDataExchange(org.apache.ignite.spi.discovery.DiscoverySpiDataExchange) DiscoverySpi(org.apache.ignite.spi.discovery.DiscoverySpi) TcpDiscoverySpi(org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi) IgniteProductVersion.fromString(org.apache.ignite.lang.IgniteProductVersion.fromString) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 17 with DiscoverySpi

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();
        }
    }
}
Also used : GridJavaProcess(org.apache.ignite.internal.util.GridJavaProcess) GridAbsPredicate(org.apache.ignite.internal.util.lang.GridAbsPredicate) DiscoverySpi(org.apache.ignite.spi.discovery.DiscoverySpi) TcpDiscoverySpi(org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi) Ignite(org.apache.ignite.Ignite) CI1(org.apache.ignite.internal.util.typedef.CI1) CountDownLatch(java.util.concurrent.CountDownLatch) Map(java.util.Map)

Example 18 with DiscoverySpi

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");
}
Also used : CommunicationSpi(org.apache.ignite.spi.communication.CommunicationSpi) DiscoverySpi(org.apache.ignite.spi.discovery.DiscoverySpi) TcpDiscoverySpi(org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi)

Example 19 with DiscoverySpi

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);
}
Also used : GridDiscoveryManager(org.apache.ignite.internal.managers.discovery.GridDiscoveryManager) DiscoverySpi(org.apache.ignite.spi.discovery.DiscoverySpi) TcpDiscoverySpi(org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi) TcpDiscoverySpi(org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi)

Aggregations

DiscoverySpi (org.apache.ignite.spi.discovery.DiscoverySpi)19 TcpDiscoverySpi (org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi)15 IgniteConfiguration (org.apache.ignite.configuration.IgniteConfiguration)5 Ignite (org.apache.ignite.Ignite)4 CommunicationSpi (org.apache.ignite.spi.communication.CommunicationSpi)4 TcpCommunicationSpi (org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi)4 IgniteSpiException (org.apache.ignite.spi.IgniteSpiException)3 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 Method (java.lang.reflect.Method)2 Map (java.util.Map)2 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)2 CI1 (org.apache.ignite.internal.util.typedef.CI1)2 IgniteProductVersion.fromString (org.apache.ignite.lang.IgniteProductVersion.fromString)2 DiscoveryDataBag (org.apache.ignite.spi.discovery.DiscoveryDataBag)2 DiscoverySpiDataExchange (org.apache.ignite.spi.discovery.DiscoverySpiDataExchange)2 Serializable (java.io.Serializable)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 HashMap (java.util.HashMap)1 List (java.util.List)1