use of org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE in project ignite by apache.
the class OpenCensusTxTracingConfigurationTest method testTxTraceIncludesCommunicationTracesInCaseOfCommunicationScopeInTxIncludedScopes.
/**
* Ensure that TX trace does include COMMUNICATION sub-traces in case of COMMUNICATION scope within the set
* of included scopes of the corresponding TX tracing configuration.
*
* @throws Exception If Failed.
*/
@Test
public void testTxTraceIncludesCommunicationTracesInCaseOfCommunicationScopeInTxIncludedScopes() throws Exception {
IgniteEx client = startGrid("client");
client.tracingConfiguration().set(new TracingConfigurationCoordinates.Builder(TX).build(), new TracingConfigurationParameters.Builder().withSamplingRate(SAMPLING_RATE_ALWAYS).withIncludedScopes(Collections.singleton(Scope.COMMUNICATION)).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());
assertFalse(gotSpans.isEmpty());
}
use of org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE in project ignite by apache.
the class OpenCensusTxTracingConfigurationTest method testThatLabelSpecificConfigurationIsUsedWheneverPossible.
/**
* Ensure that label specific configuration is used instead of scope specific if it's possible.
*
* @throws Exception If Failed.
*/
@Test
public void testThatLabelSpecificConfigurationIsUsedWheneverPossible() throws Exception {
IgniteEx client = startGrid("client");
final String txLbToBeTraced = "label1";
final String txLbNotToBeTraced = "label2";
client.tracingConfiguration().set(new TracingConfigurationCoordinates.Builder(TX).withLabel(txLbToBeTraced).build(), new TracingConfigurationParameters.Builder().withSamplingRate(SAMPLING_RATE_ALWAYS).build());
client.transactions().withLabel(txLbToBeTraced).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());
// Not to be traced, cause there's neither tracing configuration with given label
// nor scope specific tx configuration. In that case default tx tracing configuration will be used that
// actually disables tracing.
client.transactions().withLabel(txLbNotToBeTraced).txStart(PESSIMISTIC, SERIALIZABLE).commit();
handler().flush();
gotSpans = handler().allSpans().filter(span -> SpanType.TX.spanName().equals(span.getName())).collect(Collectors.toList());
// Still only one, previously detected, span is expected.
assertEquals(1, gotSpans.size());
}
use of org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE in project ignite by apache.
the class OpenCensusTxTracingConfigurationTest method testThatDefaultConfigurationIsUsedIfScopeSpecificNotFoundAndThatByDefaultTxTracingIsDisabled.
/**
* Ensure that default scope specific configuration is used if there's no neither label specif not custom scope specific ones.
* Also ensure that by default TX tracing is disabled.
*
* @throws Exception If Failed.
*/
@Test
public void testThatDefaultConfigurationIsUsedIfScopeSpecificNotFoundAndThatByDefaultTxTracingIsDisabled() throws Exception {
IgniteEx client = startGrid("client");
client.transactions().withLabel("label1").txStart(PESSIMISTIC, SERIALIZABLE).commit();
handler().flush();
java.util.List<SpanData> gotSpans = handler().allSpans().filter(span -> SpanType.TX.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 testTxConfigurationSamplingRateNeverPreventsTxTracing.
/**
* Ensure that in case of sampling rate equals to 0.0 (Never) no transactions are traced.
*
* @throws Exception If Failed.
*/
@Test
public void testTxConfigurationSamplingRateNeverPreventsTxTracing() throws Exception {
IgniteEx client = startGrid("client");
client.tracingConfiguration().set(new TracingConfigurationCoordinates.Builder(TX).build(), new TracingConfigurationParameters.Builder().withSamplingRate(SAMPLING_RATE_NEVER).build());
client.transactions().txStart(PESSIMISTIC, SERIALIZABLE).commit();
handler().flush();
Set<String> unexpectedTxSpanNames = Arrays.stream(SpanType.values()).filter(spanType -> spanType.scope() == TX).map(SpanType::spanName).collect(Collectors.toSet());
java.util.List<SpanData> gotSpans = handler().allSpans().filter(span -> unexpectedTxSpanNames.contains(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 testThatScopeSpecificConfigurationIsUsedIfLabelSpecificNotFound.
/**
* Ensure that scope specific configuration is used if corresponding label specific not found.
*
* @throws Exception If Failed.
*/
@Test
public void testThatScopeSpecificConfigurationIsUsedIfLabelSpecificNotFound() throws Exception {
IgniteEx client = startGrid("client");
client.tracingConfiguration().set(new TracingConfigurationCoordinates.Builder(TX).build(), new TracingConfigurationParameters.Builder().withSamplingRate(SAMPLING_RATE_ALWAYS).build());
client.transactions().withLabel("label1").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());
}
Aggregations