DBZ-2834 Make OT enabled by default & add supporting test cases

This commit is contained in:
Anisha Mohanty 2021-06-08 21:17:46 +05:30 committed by Gunnar Morling
parent f83ee3f8b9
commit 58dc09caff
9 changed files with 49 additions and 40 deletions

View File

@ -71,9 +71,9 @@ public class DebeziumOutboxConfig {
public DebeziumOutboxConfigTracingSpan tracingSpan;
/**
* Whether or not smallrye-opentracing extension is present.
* smallrye-opentracing configuration option
*/
@ConfigItem(name = "tracing.enabled", defaultValue = "false")
@ConfigItem(name = "tracing.enabled", defaultValue = "true")
public boolean tracingEnabled;
@ConfigGroup

View File

@ -1,26 +0,0 @@
/*
* Copyright Debezium Authors.
*
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package io.debezium.outbox.quarkus.deployment;
import io.quarkus.builder.item.SimpleBuildItem;
/**
* A build item that represents data relevant to OpenTracing dependency.
*
* @author Anisha Mohanty
*/
public final class OutboxOpenTracingBuildItem extends SimpleBuildItem {
private final boolean enabled;
public OutboxOpenTracingBuildItem(boolean enabled) {
this.enabled = enabled;
}
public boolean isEnabled() {
return enabled;
}
}

View File

@ -145,11 +145,9 @@ public void build(OutboxEventEntityBuildItem outboxBuildItem,
BuildProducer<AdditionalBeanBuildItem> additionalBeanProducer,
BuildProducer<GeneratedResourceBuildItem> generatedResourcesProducer,
BuildProducer<ReflectiveClassBuildItem> reflectiveClassProducer,
BuildProducer<OutboxOpenTracingBuildItem> buildItemBuildProducer,
Capabilities capabilities) {
if (debeziumOutboxConfig.tracingEnabled && capabilities.isPresent(Capability.OPENTRACING)) {
additionalBeanProducer.produce(AdditionalBeanBuildItem.unremovableOf(DebeziumTracerEventDispatcher.class));
buildItemBuildProducer.produce(new OutboxOpenTracingBuildItem(true));
}
else {
additionalBeanProducer.produce(AdditionalBeanBuildItem.unremovableOf(DefaultEventDispatcher.class));

View File

@ -23,12 +23,12 @@ public static class Default implements QuarkusTestProfile {
}
/**
* Enables OpenTracing support that is disabled by default.
* Disables OpenTracing support that is enabled by default.
*/
public static class OpenTracing implements QuarkusTestProfile {
public static class OpenTracingDisabled implements QuarkusTestProfile {
@Override
public Map<String, String> getConfigOverrides() {
return Collections.singletonMap("quarkus.debezium-outbox.tracing.enabled", "true");
return Collections.singletonMap("quarkus.debezium-outbox.tracing.enabled", "false");
}
}
}

View File

@ -5,6 +5,21 @@
*/
package io.debezium.outbox.quarkus.it;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.UUID;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.junit.jupiter.api.Test;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.TestProfile;
@ -16,5 +31,26 @@
@QuarkusTest
@TestProfile(OutboxProfiles.Default.class)
public class OutboxTest extends AbstractOutboxTest {
@Inject
EntityManager entityManager;
@Inject
MyService myService;
@Test
public void firedEventGetsPersistedInOutboxTable() {
myService.doSomething();
Query q = entityManager
.createNativeQuery("SELECT CAST(id as varchar), aggregateId, aggregateType, type, timestamp, payload, tracingspancontext FROM OutboxEvent");
Object[] row = (Object[]) q.getSingleResult();
assertNotNull(UUID.fromString((String) row[0]));
assertEquals(BigInteger.valueOf(1L), row[1]);
assertEquals("MyOutboxEvent", row[2]);
assertEquals("SomeType", row[3]);
assertTrue(((Timestamp) row[4]).toInstant().isBefore(Instant.now()));
assertEquals("Some amazing payload", row[5]);
assertNotNull(row[6]);
}
}

View File

@ -5,16 +5,18 @@
*/
package io.debezium.outbox.quarkus.it;
import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.TestProfile;
/**
* Integration tests for the Debezium Outbox extension, enabling OpenTracing behavior by default.
* Integration tests for the Debezium Outbox extension, disabling OpenTracing behavior.
*
* @author Chris Cranford
*/
@QuarkusTest
@TestProfile(OutboxProfiles.OpenTracing.class)
public class OutboxOpenTracingTest extends AbstractOutboxTest {
@TestProfile(OutboxProfiles.OpenTracingDisabled.class)
@QuarkusTestResource(DatabaseTestResource.class)
public class OutboxWithoutOpenTracingTest extends AbstractOutboxTest {
}