|
| 1 | +package io.javaoperatorsdk.operator; |
| 2 | + |
| 3 | +import io.fabric8.kubernetes.api.model.HasMetadata; |
| 4 | +import io.fabric8.kubernetes.client.CustomResource; |
| 5 | +import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; |
| 6 | +import io.javaoperatorsdk.operator.api.config.DefaultControllerConfiguration; |
| 7 | +import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; |
| 8 | +import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceV2; |
| 9 | +import org.junit.Test; |
| 10 | + |
| 11 | +import io.javaoperatorsdk.operator.Operator.ControllerManager; |
| 12 | +import io.javaoperatorsdk.operator.processing.ConfiguredController; |
| 13 | +import io.javaoperatorsdk.operator.sample.simple.DuplicateCRController; |
| 14 | +import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController; |
| 15 | +import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceControllerV2; |
| 16 | + |
| 17 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
| 18 | +import static org.junit.jupiter.api.Assertions.assertTrue; |
| 19 | + |
| 20 | +public class ControllerManagerTest { |
| 21 | + |
| 22 | + @Test(expected = OperatorException.class) |
| 23 | + public void shouldNotAddMultipleControllersForSameCustomResource() { |
| 24 | + final var controllerManager = new ControllerManager(); |
| 25 | + controllerManager |
| 26 | + .add(new ConfiguredController<>(new TestCustomResourceController(null), config( |
| 27 | + TestCustomResource.class), null)); |
| 28 | + controllerManager.add(new ConfiguredController<>(new DuplicateCRController(), config(TestCustomResource.class), null)); |
| 29 | + } |
| 30 | + |
| 31 | + @Test |
| 32 | + public void addingMultipleControllersForCustomResourcesWithDifferentVersionsShouldWork() { |
| 33 | + final var controllerManager = new ControllerManager(); |
| 34 | + controllerManager |
| 35 | + .add(new ConfiguredController<>(new TestCustomResourceController(null), config(TestCustomResource.class), null)); |
| 36 | + controllerManager |
| 37 | + .add(new ConfiguredController<>(new TestCustomResourceControllerV2(), config( |
| 38 | + TestCustomResourceV2.class), null)); |
| 39 | + final var controllers = controllerManager.getControllers(); |
| 40 | + assertEquals(2, controllers.size()); |
| 41 | + } |
| 42 | + |
| 43 | + private <R extends CustomResource<?,?>> ControllerConfiguration<R> config(Class<R> crClass) { |
| 44 | + return new DefaultControllerConfiguration<>(null, crClass.getSimpleName() + "Controller", |
| 45 | + CustomResource.getCRDName(crClass), null, false, null, null, null, null, crClass, null); |
| 46 | + } |
| 47 | +} |
0 commit comments