Skip to content

Commit e92360c

Browse files
committed
spotbugs again
Signed-off-by: Lukas Kral <[email protected]>
1 parent 39bc29f commit e92360c

File tree

4 files changed

+17
-185
lines changed

4 files changed

+17
-185
lines changed

cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import io.strimzi.api.kafka.model.kafka.KafkaResources;
4141
import io.strimzi.api.kafka.model.kafka.listener.GenericKafkaListenerBuilder;
4242
import io.strimzi.api.kafka.model.kafka.listener.KafkaListenerType;
43-
import io.strimzi.operator.cluster.ClusterOperatorConfig;
4443
import io.strimzi.operator.cluster.KafkaVersionTestUtils;
4544
import io.strimzi.operator.cluster.ResourceUtils;
4645
import io.strimzi.operator.common.Annotations;
@@ -784,15 +783,16 @@ public void testUserOperatorAndTopicOperatorNetworkPolicy() {
784783

785784
@ParallelTest
786785
public void testFeatureGateEnvVars() {
787-
ClusterOperatorConfig config = new ClusterOperatorConfig.ClusterOperatorConfigBuilder(ResourceUtils.dummyClusterOperatorConfig(), VERSIONS)
788-
.with(ClusterOperatorConfig.FEATURE_GATES.key(), "")
789-
.build();
790-
791-
EntityOperator eo = EntityOperator.fromCrd(new Reconciliation("test", KAFKA.getKind(), KAFKA.getMetadata().getNamespace(), KAFKA.getMetadata().getName()), KAFKA, SHARED_ENV_PROVIDER, config);
792-
Deployment dep = eo.generateDeployment(Map.of(), false, null, null);
793-
794-
assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(0).getEnv().stream().filter(env -> "STRIMZI_FEATURE_GATES".equals(env.getName())).map(EnvVar::getValue).findFirst().orElseThrow(), is(""));
795-
assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(1).getEnv().stream().filter(env -> "STRIMZI_FEATURE_GATES".equals(env.getName())).map(EnvVar::getValue).findFirst().orElseThrow(), is(""));
786+
// TODO: Once we have new FeatureGate, we should implement this test based on the example below
787+
// ClusterOperatorConfig config = new ClusterOperatorConfig.ClusterOperatorConfigBuilder(ResourceUtils.dummyClusterOperatorConfig(), VERSIONS)
788+
// .with(ClusterOperatorConfig.FEATURE_GATES.key(), "-ContinueReconciliationOnManualRollingUpdateFailure")
789+
// .build();
790+
//
791+
// EntityOperator eo = EntityOperator.fromCrd(new Reconciliation("test", KAFKA.getKind(), KAFKA.getMetadata().getNamespace(), KAFKA.getMetadata().getName()), KAFKA, SHARED_ENV_PROVIDER, config);
792+
// Deployment dep = eo.generateDeployment(Map.of(), false, null, null);
793+
//
794+
// assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(0).getEnv().stream().filter(env -> "STRIMZI_FEATURE_GATES".equals(env.getName())).map(EnvVar::getValue).findFirst().orElseThrow(), is(""));
795+
// assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(1).getEnv().stream().filter(env -> "STRIMZI_FEATURE_GATES".equals(env.getName())).map(EnvVar::getValue).findFirst().orElseThrow(), is(""));
796796
}
797797

798798
////////////////////

cluster-operator/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorPodSetTest.java

-82
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import io.strimzi.api.kafka.model.connector.KafkaConnector;
3030
import io.strimzi.api.kafka.model.connector.KafkaConnectorList;
3131
import io.strimzi.api.kafka.model.podset.StrimziPodSet;
32-
import io.strimzi.operator.cluster.ClusterOperatorConfig;
3332
import io.strimzi.operator.cluster.KafkaVersionTestUtils;
3433
import io.strimzi.operator.cluster.PlatformFeaturesAvailability;
3534
import io.strimzi.operator.cluster.ResourceUtils;
@@ -93,7 +92,6 @@
9392
import static org.mockito.ArgumentMatchers.isNull;
9493
import static org.mockito.ArgumentMatchers.startsWith;
9594
import static org.mockito.Mockito.mock;
96-
import static org.mockito.Mockito.never;
9795
import static org.mockito.Mockito.times;
9896
import static org.mockito.Mockito.verify;
9997
import static org.mockito.Mockito.when;
@@ -2207,86 +2205,6 @@ public void testManualRollingUpdatePerPod(VertxTestContext context) {
22072205
})));
22082206
}
22092207

2210-
@Test
2211-
public void testFailingManualRollingUpdate(VertxTestContext context) {
2212-
StrimziPodSet oldPodSet = CLUSTER.generatePodSet(3, null, null, false, null, null, null);
2213-
List<Pod> oldPods = PodSetUtils.podSetToPods(oldPodSet);
2214-
oldPods.get(1).getMetadata().getAnnotations().put(Annotations.ANNO_STRIMZI_IO_MANUAL_ROLLING_UPDATE, "true"); // We want the pod to roll manually
2215-
2216-
ResourceOperatorSupplier supplier = ResourceUtils.supplierWithMocks(false);
2217-
2218-
// Mock PodSets
2219-
StrimziPodSetOperator mockPodSetOps = supplier.strimziPodSetOperator;
2220-
when(mockPodSetOps.getAsync(eq(NAMESPACE), eq(COMPONENT_NAME))).thenReturn(Future.succeededFuture(oldPodSet));
2221-
when(mockPodSetOps.readiness(any(), eq(NAMESPACE), eq(COMPONENT_NAME), anyLong(), anyLong())).thenReturn(Future.succeededFuture());
2222-
ArgumentCaptor<StrimziPodSet> podSetCaptor = ArgumentCaptor.forClass(StrimziPodSet.class);
2223-
when(mockPodSetOps.reconcile(any(), eq(NAMESPACE), eq(COMPONENT_NAME), podSetCaptor.capture())).thenAnswer(i -> Future.succeededFuture(ReconcileResult.created(i.getArgument(3))));
2224-
2225-
// Mock PDBs
2226-
PodDisruptionBudgetOperator mockPdbOps = supplier.podDisruptionBudgetOperator;
2227-
ArgumentCaptor<PodDisruptionBudget> pdbCaptor = ArgumentCaptor.forClass(PodDisruptionBudget.class);
2228-
when(mockPdbOps.reconcile(any(), eq(NAMESPACE), eq(COMPONENT_NAME), pdbCaptor.capture())).thenReturn(Future.succeededFuture());
2229-
2230-
// Mock Config Maps
2231-
ConfigMapOperator mockCmOps = supplier.configMapOperations;
2232-
when(mockCmOps.reconcile(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), any())).thenReturn(Future.succeededFuture());
2233-
2234-
// Mock Services
2235-
ServiceOperator mockServiceOps = supplier.serviceOperations;
2236-
ArgumentCaptor<Service> serviceCaptor = ArgumentCaptor.forClass(Service.class);
2237-
when(mockServiceOps.reconcile(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), serviceCaptor.capture())).thenReturn(Future.succeededFuture());
2238-
2239-
// Mock Network Policies
2240-
NetworkPolicyOperator mockNetPolOps = supplier.networkPolicyOperator;
2241-
when(mockNetPolOps.reconcile(any(), eq(NAMESPACE), eq(COMPONENT_NAME), any())).thenReturn(Future.succeededFuture());
2242-
2243-
// Mock Pods
2244-
PodOperator mockPodOps = supplier.podOperations;
2245-
when(mockPodOps.listAsync(eq(NAMESPACE), any(Labels.class))).thenReturn(Future.succeededFuture(oldPods));
2246-
when(mockPodOps.getAsync(eq(NAMESPACE), startsWith(COMPONENT_NAME))).thenAnswer(i -> {
2247-
Pod pod = oldPods.stream().filter(p -> i.getArgument(1).equals(p.getMetadata().getName())).findFirst().orElse(null);
2248-
return Future.succeededFuture(pod);
2249-
});
2250-
when(mockPodOps.deleteAsync(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), eq(false))).thenReturn(Future.succeededFuture());
2251-
when(mockPodOps.deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-1"), eq(false))).thenReturn(Future.failedFuture("Failed to delete pod"));
2252-
when(mockPodOps.reconcile(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), any())).thenReturn(Future.succeededFuture());
2253-
when(mockPodOps.readiness(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), anyLong(), anyLong())).thenReturn(Future.succeededFuture());
2254-
2255-
// Mock Secrets
2256-
SecretOperator mockSecretOps = supplier.secretOperations;
2257-
when(mockSecretOps.getAsync(eq(NAMESPACE), eq(KafkaConnectResources.jmxSecretName(NAME)))).thenReturn(Future.succeededFuture());
2258-
2259-
// Mock Connect CRs
2260-
CrdOperator<KubernetesClient, KafkaConnect, KafkaConnectList> mockConnectOps = supplier.connectOperator;
2261-
when(mockConnectOps.get(eq(NAMESPACE), eq(NAME))).thenReturn(new KafkaConnectBuilder(CONNECT).build());
2262-
when(mockConnectOps.getAsync(eq(NAMESPACE), eq(NAME))).thenReturn(Future.succeededFuture(new KafkaConnectBuilder(CONNECT).build()));
2263-
ArgumentCaptor<KafkaConnect> connectCaptor = ArgumentCaptor.forClass(KafkaConnect.class);
2264-
when(mockConnectOps.updateStatusAsync(any(), connectCaptor.capture())).thenReturn(Future.succeededFuture());
2265-
2266-
ClusterOperatorConfig coConfig = new ClusterOperatorConfig.ClusterOperatorConfigBuilder(ResourceUtils.dummyClusterOperatorConfig(), VERSIONS).with(ClusterOperatorConfig.FEATURE_GATES.key(), "").build();
2267-
KafkaConnectAssemblyOperator ops = new KafkaConnectAssemblyOperator(
2268-
vertx,
2269-
new PlatformFeaturesAvailability(false, KUBERNETES_VERSION),
2270-
supplier,
2271-
coConfig
2272-
);
2273-
2274-
Checkpoint async = context.checkpoint();
2275-
ops.reconcile(new Reconciliation("test-trigger", KafkaConnect.RESOURCE_KIND, NAMESPACE, NAME))
2276-
.onComplete(context.failing(v -> context.verify(() -> {
2277-
// Check rolling happened => Should happen once as a regular rolling update to all pods and once more for the annotated pod
2278-
verify(mockPodOps, never()).deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-0"), eq(false));
2279-
verify(mockPodOps, times(1)).deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-1"), eq(false));
2280-
verify(mockPodOps, never()).deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-2"), eq(false));
2281-
2282-
// Verify CR status
2283-
List<KafkaConnect> capturedConnects = connectCaptor.getAllValues();
2284-
assertThat(capturedConnects, hasSize(1));
2285-
2286-
async.flag();
2287-
})));
2288-
}
2289-
22902208
@Test
22912209
public void testManualRollingUpdateWithSuppressedFailure(VertxTestContext context) {
22922210
StrimziPodSet oldPodSet = CLUSTER.generatePodSet(3, null, null, false, null, null, null);

cluster-operator/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperatorPodSetTest.java

-88
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import io.strimzi.api.kafka.model.mirrormaker2.KafkaMirrorMaker2Resources;
2626
import io.strimzi.api.kafka.model.mirrormaker2.KafkaMirrorMaker2Status;
2727
import io.strimzi.api.kafka.model.podset.StrimziPodSet;
28-
import io.strimzi.operator.cluster.ClusterOperatorConfig;
2928
import io.strimzi.operator.cluster.KafkaVersionTestUtils;
3029
import io.strimzi.operator.cluster.PlatformFeaturesAvailability;
3130
import io.strimzi.operator.cluster.ResourceUtils;
@@ -83,7 +82,6 @@
8382
import static org.mockito.ArgumentMatchers.isNull;
8483
import static org.mockito.ArgumentMatchers.startsWith;
8584
import static org.mockito.Mockito.mock;
86-
import static org.mockito.Mockito.never;
8785
import static org.mockito.Mockito.times;
8886
import static org.mockito.Mockito.verify;
8987
import static org.mockito.Mockito.when;
@@ -1287,92 +1285,6 @@ public void testManualRollingUpdatePerPod(VertxTestContext context) {
12871285
})));
12881286
}
12891287

1290-
@Test
1291-
public void testFailingManualRollingUpdate(VertxTestContext context) {
1292-
StrimziPodSet oldPodSet = CLUSTER.generatePodSet(3, null, null, false, null, null, null);
1293-
List<Pod> oldPods = PodSetUtils.podSetToPods(oldPodSet);
1294-
oldPods.get(1).getMetadata().getAnnotations().put(Annotations.ANNO_STRIMZI_IO_MANUAL_ROLLING_UPDATE, "true"); // We want the pod to roll manually
1295-
1296-
ResourceOperatorSupplier supplier = ResourceUtils.supplierWithMocks(false);
1297-
1298-
// Mock PodSets
1299-
StrimziPodSetOperator mockPodSetOps = supplier.strimziPodSetOperator;
1300-
when(mockPodSetOps.getAsync(eq(NAMESPACE), eq(COMPONENT_NAME))).thenReturn(Future.succeededFuture(oldPodSet));
1301-
when(mockPodSetOps.readiness(any(), eq(NAMESPACE), eq(COMPONENT_NAME), anyLong(), anyLong())).thenReturn(Future.succeededFuture());
1302-
ArgumentCaptor<StrimziPodSet> podSetCaptor = ArgumentCaptor.forClass(StrimziPodSet.class);
1303-
when(mockPodSetOps.reconcile(any(), eq(NAMESPACE), eq(COMPONENT_NAME), podSetCaptor.capture())).thenAnswer(i -> Future.succeededFuture(ReconcileResult.created(i.getArgument(3))));
1304-
1305-
// Mock PDBs
1306-
PodDisruptionBudgetOperator mockPdbOps = supplier.podDisruptionBudgetOperator;
1307-
ArgumentCaptor<PodDisruptionBudget> pdbCaptor = ArgumentCaptor.forClass(PodDisruptionBudget.class);
1308-
when(mockPdbOps.reconcile(any(), eq(NAMESPACE), eq(COMPONENT_NAME), pdbCaptor.capture())).thenReturn(Future.succeededFuture());
1309-
1310-
// Mock Config Maps
1311-
ConfigMapOperator mockCmOps = supplier.configMapOperations;
1312-
when(mockCmOps.reconcile(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), any())).thenReturn(Future.succeededFuture());
1313-
1314-
// Mock Services
1315-
ServiceOperator mockServiceOps = supplier.serviceOperations;
1316-
ArgumentCaptor<Service> serviceCaptor = ArgumentCaptor.forClass(Service.class);
1317-
when(mockServiceOps.reconcile(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), serviceCaptor.capture())).thenReturn(Future.succeededFuture());
1318-
1319-
// Mock Network Policies
1320-
NetworkPolicyOperator mockNetPolOps = supplier.networkPolicyOperator;
1321-
when(mockNetPolOps.reconcile(any(), eq(NAMESPACE), eq(COMPONENT_NAME), any())).thenReturn(Future.succeededFuture());
1322-
1323-
// Mock Pods
1324-
PodOperator mockPodOps = supplier.podOperations;
1325-
when(mockPodOps.listAsync(eq(NAMESPACE), any(Labels.class))).thenReturn(Future.succeededFuture(oldPods));
1326-
when(mockPodOps.getAsync(eq(NAMESPACE), startsWith(COMPONENT_NAME))).thenAnswer(i -> {
1327-
Pod pod = oldPods.stream().filter(p -> i.getArgument(1).equals(p.getMetadata().getName())).findFirst().orElse(null);
1328-
return Future.succeededFuture(pod);
1329-
});
1330-
when(mockPodOps.deleteAsync(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), eq(false))).thenReturn(Future.succeededFuture());
1331-
when(mockPodOps.deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-1"), eq(false))).thenReturn(Future.failedFuture("Failed to delete pod"));
1332-
when(mockPodOps.reconcile(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), any())).thenReturn(Future.succeededFuture());
1333-
when(mockPodOps.readiness(any(), eq(NAMESPACE), startsWith(COMPONENT_NAME), anyLong(), anyLong())).thenReturn(Future.succeededFuture());
1334-
1335-
// Mock Secrets
1336-
SecretOperator mockSecretOps = supplier.secretOperations;
1337-
when(mockSecretOps.getAsync(eq(NAMESPACE), eq(KafkaConnectResources.jmxSecretName(NAME)))).thenReturn(Future.succeededFuture());
1338-
1339-
// Mock KafkaMirrorMaker2 CRs
1340-
CrdOperator<KubernetesClient, KafkaMirrorMaker2, KafkaMirrorMaker2List> mockConnectOps = supplier.mirrorMaker2Operator;
1341-
when(mockConnectOps.get(eq(NAMESPACE), eq(NAME))).thenReturn(new KafkaMirrorMaker2Builder(MM2).build());
1342-
when(mockConnectOps.getAsync(eq(NAMESPACE), eq(NAME))).thenReturn(Future.succeededFuture(new KafkaMirrorMaker2Builder(MM2).build()));
1343-
ArgumentCaptor<KafkaMirrorMaker2> mm2StatusCaptor = ArgumentCaptor.forClass(KafkaMirrorMaker2.class);
1344-
when(mockConnectOps.updateStatusAsync(any(), mm2StatusCaptor.capture())).thenReturn(Future.succeededFuture());
1345-
1346-
// Mock Connect API
1347-
KafkaConnectApi mockConnectClient = mock(KafkaConnectApi.class);
1348-
when(mockConnectClient.list(any(), anyString(), anyInt())).thenReturn(CompletableFuture.completedFuture(emptyList()));
1349-
when(mockConnectClient.updateConnectLoggers(any(), anyString(), anyInt(), anyString(), any(OrderedProperties.class))).thenReturn(CompletableFuture.completedFuture(null));
1350-
1351-
ClusterOperatorConfig coConfig = new ClusterOperatorConfig.ClusterOperatorConfigBuilder(ResourceUtils.dummyClusterOperatorConfig(), VERSIONS).with(ClusterOperatorConfig.FEATURE_GATES.key(), "").build();
1352-
KafkaMirrorMaker2AssemblyOperator ops = new KafkaMirrorMaker2AssemblyOperator(
1353-
vertx,
1354-
new PlatformFeaturesAvailability(false, KUBERNETES_VERSION),
1355-
supplier,
1356-
coConfig,
1357-
x -> mockConnectClient
1358-
);
1359-
1360-
Checkpoint async = context.checkpoint();
1361-
ops.reconcile(new Reconciliation("test-trigger", KafkaMirrorMaker2.RESOURCE_KIND, NAMESPACE, NAME))
1362-
.onComplete(context.failing(v -> context.verify(() -> {
1363-
// Check rolling happened => Should happen once as a regular rolling update to all pods and once more for the annotated pod
1364-
verify(mockPodOps, never()).deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-0"), eq(false));
1365-
verify(mockPodOps, times(1)).deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-1"), eq(false));
1366-
verify(mockPodOps, never()).deleteAsync(any(), eq(NAMESPACE), eq(COMPONENT_NAME + "-2"), eq(false));
1367-
1368-
// Verify CR status
1369-
List<KafkaMirrorMaker2> capturedMm2Statuses = mm2StatusCaptor.getAllValues();
1370-
assertThat(capturedMm2Statuses, hasSize(1));
1371-
1372-
async.flag();
1373-
})));
1374-
}
1375-
13761288
@Test
13771289
public void testManualRollingUpdateWithSuppressedFailure(VertxTestContext context) {
13781290
StrimziPodSet oldPodSet = CLUSTER.generatePodSet(3, null, null, false, null, null, null);

operator-common/src/main/java/io/strimzi/operator/common/featuregates/FeatureGates.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,14 @@ public boolean equals(Object o) {
124124
return true;
125125
} else if (o == null || getClass() != o.getClass()) {
126126
return false;
127-
} else {
128-
FeatureGates other = (FeatureGates) o;
129-
return other instanceof FeatureGates;
130-
// TODO: Once we have new FeatureGate, we should implement the equals method (below is example)
131-
// return Objects.equals(continueOnManualRUFailure, other.continueOnManualRUFailure);
132127
}
128+
// TODO: Once we have new FeatureGate, we should implement the equals method (below is example)
129+
// else {
130+
// FeatureGates other = (FeatureGates) o;
131+
// return Objects.equals(continueOnManualRUFailure, other.continueOnManualRUFailure);
132+
// }
133+
134+
return true;
133135
}
134136

135137
@Override

0 commit comments

Comments
 (0)