TestRecordingCommunicationSpi spi = TestRecordingCommunicationSpi.spi(grid(1)); spi.blockMessages((node, msg) -> { if (msg instanceof GridDhtPartitionsSingleMessage) { latch.countDown(); spi.stopBlock();
/** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { IgniteConfiguration dfltCfg = super.getConfiguration(igniteInstanceName); dfltCfg.setCommunicationSpi(new TestRecordingCommunicationSpi()); return dfltCfg; }
@Override public boolean apply() { return commSpiClient.hasBlockedMessages(); } }, 5000);
/** {@inheritDoc} */ @Override protected void execute() { for (IgniteEx server : baseline) { TestRecordingCommunicationSpi spi = TestRecordingCommunicationSpi.spi(server); spi.blockMessages(this::blockMessage); } block.run(); }
/** * @param spi SPI. * @param cacheName Cache name. */ private void blockSupplySend(TestRecordingCommunicationSpi spi, final String cacheName) { final int grpId = groupIdForCache(spi.ignite(), cacheName); spi.blockMessages(new IgniteBiPredicate<ClusterNode, Message>() { @Override public boolean apply(ClusterNode node, Message msg) { if (!msg.getClass().equals(GridDhtPartitionSupplyMessage.class)) return false; return ((GridDhtPartitionSupplyMessage)msg).groupId() == grpId; } }); }
Ignite ignite = ignite(1); TestRecordingCommunicationSpi spi = TestRecordingCommunicationSpi.spi(ignite); spi.blockMessages(GridDhtPartitionsSingleMessage.class, ignite.name()); spi.blockMessages(new IgniteBiPredicate<ClusterNode, Message>() { @Override public boolean apply(ClusterNode node, Message msg) { return (msg instanceof GridDhtPartitionsSingleMessage) && spi.waitForBlocked(); spi.stopBlock();
/** * @param cls Message class. * @param nodeToBlock Node to block. * @param block Block. */ private void toggleBlocking(Class<? extends Message> cls, Ignite nodeToBlock, boolean block) { for (Ignite ignite : G.allGrids()) { if (ignite == nodeToBlock) continue; final TestRecordingCommunicationSpi spi = (TestRecordingCommunicationSpi)ignite.configuration().getCommunicationSpi(); if (block) spi.blockMessages(cls, nodeToBlock.name()); else spi.stopBlock(true); } }
TestRecordingCommunicationSpi srvSpi = TestRecordingCommunicationSpi.spi(srv); srvSpi.blockMessages(GridNearGetResponse.class, getTestIgniteInstanceName(1)); TestRecordingCommunicationSpi.spi(client).blockMessages(MvccAckRequestQueryCntr.class, getTestIgniteInstanceName(0)); srvSpi.waitForBlocked();
/** * Stops block messages and sends all already blocked messages if sndMsgs is 'true'. * * @param sndMsgs {@code True} to send blocked messages. */ public void stopBlock(boolean sndMsgs) { stopBlock(sndMsgs, null); }
/** * @param spi SPI. * @param cacheName Cache name. */ private void blockSupplySend(TestRecordingCommunicationSpi spi, final String cacheName) { final int grpId = CU.cacheId(cacheName); spi.blockMessages(new IgniteBiPredicate<ClusterNode, Message>() { @Override public boolean apply(ClusterNode node, Message msg) { return msg.getClass().equals(GridDhtPartitionSupplyMessage.class) && ((GridDhtPartitionSupplyMessage)msg).groupId() == grpId; } }); }
TestRecordingCommunicationSpi crdSpi = TestRecordingCommunicationSpi.spi(grid(0)); TestRecordingCommunicationSpi clientSpi = TestRecordingCommunicationSpi.spi(client); clientSpi.closure(new IgniteBiInClosure<ClusterNode, Message>() { @Override public void apply(ClusterNode node, Message msg) { if (msg instanceof MvccAckRequestTx) crdSpi.closure(new IgniteBiInClosure<ClusterNode, Message>() {
commSpi0.record(GridDhtTxFinishRequest.class); commSpi0.blockMessages(new IgniteBiPredicate<ClusterNode, Message>() { @Override public boolean apply(ClusterNode node, Message msg) { return msg instanceof GridDhtTxFinishRequest; commSpi0.stopBlock(true); List<Object> msgs = commSpi0.recordedMessages(true);
final TestRecordingCommunicationSpi spi1 = transition ? TestRecordingCommunicationSpi.spi(ignite(1)) : null; spi1.waitForBlocked(); spi1.stopBlock();
/** * @param exp If {@code true} there should be recorded messages. */ private void checkRecordedMessages(boolean exp) { for (Ignite node : G.allGrids()) { List<Object> recorded = TestRecordingCommunicationSpi.spi(node).recordedMessages(false); if (exp) assertFalse(F.isEmpty(recorded)); else assertTrue(F.isEmpty(recorded)); } }
victimComm.blockMessages(GridNearTxFinishResponse.class, nearNode.name()); else victimComm.blockMessages(GridDhtTxPrepareRequest.class, grid(victimBackup).name()); assert victimComm.hasBlockedMessages();
TestRecordingCommunicationSpi commSpi = new TestRecordingCommunicationSpi(); commSpi.blockMessages(blockMessagePredicate);
@Override public Void call() throws Exception { spi.waitForBlocked(); final IgniteFuture<?> fut = txRef.get().rollbackAsync(); doSleep(500); spi.stopBlock(true); fut.get(); return null; } }, "tx-rollback-thread");
/** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { MvccFeatureChecker.skipIfNotSupported(MvccFeatureChecker.Feature.NEAR_CACHE); IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName); ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setForceServerMode(true); if (getTestIgniteInstanceName(0).equals(igniteInstanceName)) cfg.setClientMode(true); TestRecordingCommunicationSpi commSpi = new TestRecordingCommunicationSpi(); commSpi.record(GridNearLockRequest.class); cfg.setCommunicationSpi(commSpi); return cfg; }
TestRecordingCommunicationSpi spi = TestRecordingCommunicationSpi.spi(ignite(idx)); spi.waitForBlocked();