Skip to content

Commit

Permalink
fix integration test injection
Browse files Browse the repository at this point in the history
  • Loading branch information
yifan-c committed Feb 21, 2025
1 parent ea6f6c1 commit 5fbc063
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ CassandraInputValidationConfiguration validationConfiguration(SidecarConfigurati
@Provides
@Singleton
CQLSessionProvider cqlSessionProvider(Vertx vertx,
SidecarConfiguration sidecarConfiguration,
DriverUtils driverUtils)
SidecarConfiguration sidecarConfiguration,
DriverUtils driverUtils)
{
CQLSessionProviderImpl cqlSessionProvider = new CQLSessionProviderImpl(sidecarConfiguration,
NettyOptions.DEFAULT_INSTANCE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import com.google.inject.multibindings.ProvidesIntoMap;
import io.vertx.core.Vertx;
import org.apache.cassandra.sidecar.cluster.InstancesMetadata;
import org.apache.cassandra.sidecar.cluster.instance.InstanceMetadata;
Expand Down Expand Up @@ -59,6 +60,12 @@
import org.apache.cassandra.sidecar.db.SidecarLeaseDatabaseAccessor;
import org.apache.cassandra.sidecar.exceptions.NoSuchCassandraInstanceException;
import org.apache.cassandra.sidecar.metrics.SidecarMetrics;
import org.apache.cassandra.sidecar.modules.multibindings.IdentityMultiBindingTypeResolver;
import org.apache.cassandra.sidecar.modules.multibindings.Key;
import org.apache.cassandra.sidecar.modules.multibindings.KeyClassMapKey;
import org.apache.cassandra.sidecar.modules.multibindings.MultiBindingTypeResolver;
import org.apache.cassandra.sidecar.modules.multibindings.PeriodicTaskMapKeys;
import org.apache.cassandra.sidecar.tasks.PeriodicTask;
import org.apache.cassandra.sidecar.tasks.ScheduleDecision;
import org.jetbrains.annotations.NotNull;

Expand Down Expand Up @@ -133,14 +140,15 @@ public SidecarConfiguration configuration(CoordinationConfiguration clusterLease
.build();
}

@Provides
@Singleton
public ClusterLeaseClaimTask clusterLeaseClaimTask(Vertx vertx,
ServiceConfiguration serviceConfiguration,
ElectorateMembership electorateMembership,
SidecarLeaseDatabaseAccessor accessor,
ClusterLease clusterLease,
SidecarMetrics metrics)
public static class TestClusterLeaseClaimTaskKey implements Key {}
@ProvidesIntoMap
@KeyClassMapKey(TestClusterLeaseClaimTaskKey.class)
public PeriodicTask clusterLeaseClaimTask(Vertx vertx,
ServiceConfiguration serviceConfiguration,
ElectorateMembership electorateMembership,
SidecarLeaseDatabaseAccessor accessor,
ClusterLease clusterLease,
SidecarMetrics metrics)
{
return new ClusterLeaseClaimTask(vertx,
serviceConfiguration,
Expand Down Expand Up @@ -174,6 +182,27 @@ public ScheduleDecision scheduleDecision()
};
}

/**
* This is the example of replacing a bound objet. In the resolver below, the ClusterLeaseClaimTask from production code is removed and replaced by
* the ClusterLeaseClaimTask provided in this module.
* See {@link #clusterLeaseClaimTask(Vertx, ServiceConfiguration, ElectorateMembership, SidecarLeaseDatabaseAccessor, ClusterLease, SidecarMetrics)}
*/
@Provides
@Singleton
MultiBindingTypeResolver<PeriodicTask> periodicTaskTypeResolver(Map<Class<? extends Key>, PeriodicTask> periodicTaskMap)
{
return new MultiBindingTypeResolver<>()
{
@Override
public @NotNull Map<Class<? extends Key>, PeriodicTask> resolve()
{
Map<Class<? extends Key>, PeriodicTask> map = new HashMap<>(periodicTaskMap);
map.remove(PeriodicTaskMapKeys.ClusterLeaseClaimTaskKey.class);
return map;
}
};
}

@Provides
@Singleton
public CoordinationConfiguration clusterLeaseClaimTaskConfiguration()
Expand Down

0 comments on commit 5fbc063

Please sign in to comment.