use of org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE in project ignite by apache.
the class OpenCensusTxTracingConfigurationTest method testTxConfigurationSamplingRateAlwaysEnablesTxTracing.
/**
* Ensure that in case of sampling rate equals to 1.0 (Always) transactions are successfully traced.
*
* @throws Exception If Failed.
*/
@Test
public void testTxConfigurationSamplingRateAlwaysEnablesTxTracing() throws Exception {
IgniteEx client = startGrid("client");
client.tracingConfiguration().set(new TracingConfigurationCoordinates.Builder(TX).build(), new TracingConfigurationParameters.Builder().withSamplingRate(SAMPLING_RATE_ALWAYS).build());
client.transactions().txStart(PESSIMISTIC, SERIALIZABLE).commit();
handler().flush();
java.util.List<SpanData> gotSpans = handler().allSpans().filter(span -> SpanType.TX.spanName().equals(span.getName())).collect(Collectors.toList());
assertEquals(1, gotSpans.size());
}
use of org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE in project ignite by apache.
the class OpenCensusTxTracingConfigurationTest method testTxTraceDoesNotIncludeCommunicationTracesInCaseOfEmptyIncludedScopes.
/**
* Ensure that TX traces doesn't include COMMUNICATION sub-traces in case of empty set of included scopes.
*
* @throws Exception If Failed.
*/
@Test
public void testTxTraceDoesNotIncludeCommunicationTracesInCaseOfEmptyIncludedScopes() throws Exception {
IgniteEx client = startGrid("client");
client.tracingConfiguration().set(new TracingConfigurationCoordinates.Builder(TX).build(), new TracingConfigurationParameters.Builder().withSamplingRate(SAMPLING_RATE_ALWAYS).build());
Transaction tx = client.transactions().txStart(PESSIMISTIC, SERIALIZABLE);
client.cache(DEFAULT_CACHE_NAME).put(1, 1);
tx.commit();
handler().flush();
SpanId parentSpanId = handler().allSpans().filter(span -> SpanType.TX_NEAR_PREPARE.spanName().equals(span.getName())).collect(Collectors.toList()).get(0).getContext().getSpanId();
java.util.List<SpanData> gotSpans = handler().allSpans().filter(span -> parentSpanId.equals(span.getParentSpanId()) && SpanType.COMMUNICATION_SOCKET_WRITE.spanName().equals(span.getName())).collect(Collectors.toList());
assertTrue(gotSpans.isEmpty());
}
use of org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE in project ignite by apache.
the class OpenCensusTxTracingConfigurationTest method testTxConfigurationSamplingRateHalfSamplesSomethingAboutHalfTransactions.
/**
* Ensure that specifying 0 < sapling rate < 1 within TX scope will trace some but not all transactions.
* Cause of probability nature of sampling, it's not possible to check that 0.5 sampling rate
* will result in exactly half of the transactions being traced.
*
* @throws Exception If Failed.
*/
@Test
public void testTxConfigurationSamplingRateHalfSamplesSomethingAboutHalfTransactions() throws Exception {
IgniteEx client = startGrid("client");
client.tracingConfiguration().set(new TracingConfigurationCoordinates.Builder(TX).build(), new TracingConfigurationParameters.Builder().withSamplingRate(0.5).build());
final int txAmount = 100;
for (int i = 0; i < txAmount; i++) client.transactions().txStart(PESSIMISTIC, SERIALIZABLE).commit();
handler().flush();
java.util.List<SpanData> gotSpans = handler().allSpans().filter(span -> SpanType.TX.spanName().equals(span.getName())).collect(Collectors.toList());
// Cause of probability nature of sampling, it's not possible to check that 0.5 sampling rate will end with
// 5 sampling transactions out of {@code txAmount},
// so we just check that some and not all transactions were traced.
assertTrue(!gotSpans.isEmpty() && gotSpans.size() < txAmount);
}
Aggregations