use of org.apache.ignite.testframework.ListeningTestLogger in project ignite by apache.
the class ClusterStateOnStartPropertyTest method getConfiguration.
/**
* {@inheritDoc}
*/
@Override
protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName).setClusterStateOnStart(state).setCacheConfiguration(new CacheConfiguration().setName(DEFAULT_CACHE_NAME)).setConsistentId(igniteInstanceName).setDataStorageConfiguration(new DataStorageConfiguration().setDefaultDataRegionConfiguration(new DataRegionConfiguration().setPersistenceEnabled(persistence)));
if (autoActivation != null)
cfg.setAutoActivationEnabled(autoActivation);
if (activeOnStart != null)
cfg.setActiveOnStart(activeOnStart);
// Warn messages must be printed only if both options (old and new) are presented.
if (autoActivation != null || activeOnStart != null) {
ListeningTestLogger testLog = new ListeningTestLogger(false, log);
LogListener lsnr = LogListener.matches(persistence ? "Property `autoActivation` will be ignored due to the property `clusterStateOnStart` is presented." : "Property `activeOnStart` will be ignored due to the property `clusterStateOnStart` is presented.").build();
testLog.registerListener(lsnr);
logListeners.put(igniteInstanceName, lsnr);
cfg.setGridLogger(testLog);
}
return cfg;
}
use of org.apache.ignite.testframework.ListeningTestLogger in project ignite by apache.
the class GridCacheLongRunningTransactionDiagnosticsTest method getConfiguration.
/**
* {@inheritDoc}
*/
@Override
protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
cfg.setConsistentId(igniteInstanceName);
cfg.setCommunicationSpi(new TestRecordingCommunicationSpi());
boolean isClient = "client".equals(igniteInstanceName);
if (!isClient) {
CacheConfiguration ccfg = new CacheConfiguration(CACHE_NAME);
ccfg.setAtomicityMode(TRANSACTIONAL);
ccfg.setBackups(2);
ccfg.setWriteSynchronizationMode(FULL_SYNC);
cfg.setCacheConfiguration(ccfg);
}
ListeningTestLogger testLog = new ListeningTestLogger(false, log);
testLog.registerListener(dumpLsnr);
cfg.setGridLogger(testLog);
return cfg;
}
use of org.apache.ignite.testframework.ListeningTestLogger in project ignite by apache.
the class WarningOnBigQueryResultsBaseTest method getConfiguration.
/**
* {@inheritDoc}
*/
@Override
protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName).setCacheConfiguration(new CacheConfiguration().setName(CACHE0).setSqlSchema("TEST0").setQueryEntities(Collections.singleton(new QueryEntity(Long.class, Long.class).setTableName("test0").addQueryField("id", Long.class.getName(), null).addQueryField("val", Long.class.getName(), null).setKeyFieldName("id").setValueFieldName("val"))).setAffinity(new RendezvousAffinityFunction(false, 10)).setNodeFilter((IgnitePredicate<ClusterNode>) node -> node.attribute(TEST0_ATTR) != null && (boolean) node.attribute(TEST0_ATTR)), new CacheConfiguration().setName(CACHE1).setSqlSchema("TEST1").setQueryEntities(Collections.singleton(new QueryEntity(Long.class, Long.class).setTableName("test1").addQueryField("id", Long.class.getName(), null).addQueryField("val", Long.class.getName(), null).setKeyFieldName("id").setValueFieldName("val"))).setAffinity(new RendezvousAffinityFunction(false, 10)).setNodeFilter((IgnitePredicate<ClusterNode>) node -> node.attribute(TEST1_ATTR) != null && (boolean) node.attribute(TEST1_ATTR)));
if (igniteInstanceName.startsWith("cli")) {
cfg.setClientMode(true).setClientConnectorConfiguration(new ClientConnectorConfiguration().setPort(CLI_PORT));
} else {
cfg.setUserAttributes(Collections.singletonMap(getTestIgniteInstanceIndex(igniteInstanceName) < 2 ? TEST0_ATTR : TEST1_ATTR, true));
}
ListeningTestLogger testLog = new ListeningTestLogger(false, log);
BigResultsLogListener lst = new BigResultsLogListener();
testLog.registerListener(lst);
logListeners.put(igniteInstanceName, lst);
cfg.setGridLogger(new ListeningTestLogger(false, testLog));
return cfg;
}
use of org.apache.ignite.testframework.ListeningTestLogger in project ignite by apache.
the class RebalanceStatisticsTest method testRebalanceStatistics.
/**
* Test statistics of a rebalance.
*
* Steps:
* 1)Creating and filling a cluster;
* 2)Starting a new node with listening for logs and supply messages;
* 3)Check that number of supply messages is equal to number of logs received +1;
* 4)Find corresponding message in log for each supply message;
* 5)Find log message after all of groups and to check its correctness.
*
* @throws Exception if any error occurs.
*/
@Test
public void testRebalanceStatistics() throws Exception {
createCluster(3);
ListeningTestLogger listeningTestLog = new ListeningTestLogger(log);
IgniteConfiguration cfg = getConfiguration(getTestIgniteInstanceName(3)).setGridLogger(listeningTestLog);
// Collect log messages with rebalance statistics.
Collection<String> logMsgs = new ConcurrentLinkedQueue<>();
listeningTestLog.registerListener(new CallbackExecutorLogListener("Completed( \\(final\\))? rebalanc(ing|e chain).*", logMsgs::add));
Map<Ignite, Collection<T2<ClusterNode, Message>>> recordMsgs = new ConcurrentHashMap<>();
G.allGrids().forEach(n -> TestRecordingCommunicationSpi.spi(n).record((node, msg) -> {
if (GridDhtPartitionSupplyMessage.class.isInstance(msg))
recordMsgs.computeIfAbsent(n, n1 -> new ConcurrentLinkedQueue<>()).add(new T2<>(node, msg));
return false;
}));
IgniteEx node = startGrid(cfg);
awaitPartitionMapExchange();
// Collect supply messages only for new node.
Map<Ignite, List<GridDhtPartitionSupplyMessage>> supplyMsgs = G.allGrids().stream().filter(n -> !n.equals(node)).collect(toMap(identity(), n -> recordMsgs.get(n).stream().filter(t2 -> t2.get1().id().equals(node.localNode().id())).map(IgniteBiTuple::get2).map(GridDhtPartitionSupplyMessage.class::cast).collect(toList())));
// +1 because one message about end of rebalance for all groups.
assertEquals(supplyMsgs.values().stream().mapToInt(List::size).sum() + 1, logMsgs.size());
IgniteClosure2X<GridCacheEntryInfo, CacheObjectContext, Long> getSize = new IgniteClosure2X<GridCacheEntryInfo, CacheObjectContext, Long>() {
/**
* {@inheritDoc}
*/
@Override
public Long applyx(GridCacheEntryInfo info, CacheObjectContext ctx) throws IgniteCheckedException {
return (long) info.marshalledSize(ctx);
}
};
for (Map.Entry<Ignite, List<GridDhtPartitionSupplyMessage>> supplyMsg : supplyMsgs.entrySet()) {
List<String> supplierMsgs = logMsgs.stream().filter(s -> s.contains("supplier=" + supplyMsg.getKey().cluster().localNode().id())).collect(toList());
List<GridDhtPartitionSupplyMessage> msgs = supplyMsg.getValue();
assertEquals(msgs.size(), supplierMsgs.size());
for (GridDhtPartitionSupplyMessage msg : msgs) {
Map<Integer, CacheEntryInfoCollection> infos = U.field(msg, "infos");
CacheGroupContext grpCtx = node.context().cache().cacheGroup(msg.groupId());
long bytes = 0;
for (CacheEntryInfoCollection c : infos.values()) {
for (GridCacheEntryInfo i : c.infos()) bytes += getSize.apply(i, grpCtx.cacheObjectContext());
}
String[] checVals = { "grp=" + grpCtx.cacheOrGroupName(), "partitions=" + infos.size(), "entries=" + infos.values().stream().mapToInt(i -> i.infos().size()).sum(), "topVer=" + msg.topologyVersion(), "rebalanceId=" + U.field(msg, "rebalanceId"), "bytesRcvd=" + U.humanReadableByteCount(bytes), "fullPartitions=" + infos.size(), "fullEntries=" + infos.values().stream().mapToInt(i -> i.infos().size()).sum(), "fullBytesRcvd=" + U.humanReadableByteCount(bytes), "histPartitions=0", "histEntries=0", "histBytesRcvd=0" };
assertTrue("msgs=" + supplierMsgs.toString() + ", checVals=" + asList(checVals).toString(), supplierMsgs.stream().anyMatch(s -> Stream.of(checVals).allMatch(s::contains)));
}
}
String rebChainMsg = logMsgs.stream().filter(s -> s.startsWith("Completed rebalance chain")).findAny().get();
long rebId = -1;
int parts = 0;
int entries = 0;
long bytes = 0;
for (List<GridDhtPartitionSupplyMessage> msgs : supplyMsgs.values()) {
for (GridDhtPartitionSupplyMessage msg : msgs) {
Map<Integer, CacheEntryInfoCollection> infos = U.field(msg, "infos");
rebId = U.field(msg, "rebalanceId");
parts += infos.size();
entries += infos.values().stream().mapToInt(i -> i.infos().size()).sum();
CacheObjectContext cacheObjCtx = node.context().cache().cacheGroup(msg.groupId()).cacheObjectContext();
for (CacheEntryInfoCollection c : infos.values()) {
for (GridCacheEntryInfo i : c.infos()) bytes += getSize.apply(i, cacheObjCtx);
}
}
}
String[] checVals = { "partitions=" + parts, "entries=" + entries, "rebalanceId=" + rebId, "bytesRcvd=" + U.humanReadableByteCount(bytes) };
assertTrue(rebChainMsg, Stream.of(checVals).allMatch(rebChainMsg::contains));
}
use of org.apache.ignite.testframework.ListeningTestLogger in project ignite by apache.
the class GridCacheRebalancingUnmarshallingFailedSelfTest method runTest.
/**
* @throws Exception e.
*/
private void runTest() throws Exception {
customLog = new ListeningTestLogger(log);
LogListener unmarshalErrorLogListener = LogListener.matches(UNMARSHALING_ERROR_PATTERN).atLeast(1).build();
customLog.registerListener(unmarshalErrorLogListener);
assert marshaller != null;
readCnt.set(Integer.MAX_VALUE);
startGrid(0);
for (int i = 0; i < 100; i++) grid(0).cache(CACHE).put(new TestKey(String.valueOf(i)), i);
readCnt.set(1);
startGrid(1);
readCnt.set(Integer.MAX_VALUE);
for (int i = 0; i < 50; i++) assert grid(1).cache(CACHE).get(new TestKey(String.valueOf(i))) != null;
stopGrid(0);
for (int i = 50; i < 100; i++) assertNull(grid(1).cache(CACHE).get(new TestKey(String.valueOf(i))));
assertTrue("Unmarshal log error message is not valid.", unmarshalErrorLogListener.check());
}
Aggregations