Skip to content

Commit

Permalink
integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
csviri committed Aug 7, 2023
1 parent 321e162 commit d2dd2f6
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package io.javaoperatorsdk.operator;

import java.time.Duration;
import java.util.Map;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
import io.javaoperatorsdk.operator.sample.createonlyifnotexistsdependentwithssa.CreateOnlyIfNotExistsDependentWithSSACustomResource;
import io.javaoperatorsdk.operator.sample.createonlyifnotexistsdependentwithssa.CreateOnlyIfNotExistsDependentWithSSAReconciler;

import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;

class CreateOnlyIfNotExistsDependentWithSSA {

public static final String TEST_RESOURCE_NAME = "test1";
public static final String KEY = "key";

@RegisterExtension
LocallyRunOperatorExtension extension =
LocallyRunOperatorExtension.builder()
.withReconciler(new CreateOnlyIfNotExistsDependentWithSSAReconciler())
.build();


@Test
void createsResourceOnlyIfNotExists() {
var cm = new ConfigMapBuilder().withMetadata(new ObjectMetaBuilder()
.withName(TEST_RESOURCE_NAME)
.build())
.withData(Map.of(KEY, "val"))
.build();

extension.create(cm);
extension.create(testResource());

await().pollDelay(Duration.ofMillis(200)).untilAsserted(() -> {
var currentCM = extension.get(ConfigMap.class, TEST_RESOURCE_NAME);
assertThat(currentCM.getData()).containsKey(KEY);
});
}

CreateOnlyIfNotExistsDependentWithSSACustomResource testResource() {
var res = new CreateOnlyIfNotExistsDependentWithSSACustomResource();
res.setMetadata(new ObjectMetaBuilder()
.withName(TEST_RESOURCE_NAME)
.build());

return res;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.javaoperatorsdk.operator.sample.createonlyifnotexistsdependentwithssa;

import java.util.Map;

import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
import io.javaoperatorsdk.operator.api.reconciler.Context;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;

public class ConfigMapDependentResource extends
CRUDKubernetesDependentResource<ConfigMap, CreateOnlyIfNotExistsDependentWithSSACustomResource> {

public ConfigMapDependentResource() {
super(ConfigMap.class);
}

@Override
protected ConfigMap desired(CreateOnlyIfNotExistsDependentWithSSACustomResource primary,
Context<CreateOnlyIfNotExistsDependentWithSSACustomResource> context) {
ConfigMap configMap = new ConfigMap();
configMap.setMetadata(new ObjectMetaBuilder()
.withName(primary.getMetadata().getName())
.withNamespace(primary.getMetadata().getNamespace())
.build());
configMap.setData(Map.of("drkey", "v"));
return configMap;
}
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package io.javaoperatorsdk.operator.sample.createonlyifnotexistsdependentwithssa;

import io.fabric8.kubernetes.api.model.Namespaced;
import io.fabric8.kubernetes.client.CustomResource;
import io.fabric8.kubernetes.model.annotation.Group;
import io.fabric8.kubernetes.model.annotation.Version;

@Group("sample.javaoperatorsdk")
@Version("v1")
public class CreateOnlyIfNotExistsDependentWithSSACustomResource
extends CustomResource<Void, Void>
implements Namespaced {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package io.javaoperatorsdk.operator.sample.createonlyifnotexistsdependentwithssa;

import java.util.concurrent.atomic.AtomicInteger;

import io.javaoperatorsdk.operator.api.reconciler.*;
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;

@ControllerConfiguration(dependents = {
@Dependent(type = ConfigMapDependentResource.class)})
public class CreateOnlyIfNotExistsDependentWithSSAReconciler
implements Reconciler<CreateOnlyIfNotExistsDependentWithSSACustomResource> {

private final AtomicInteger numberOfExecutions = new AtomicInteger(0);

@Override
public UpdateControl<CreateOnlyIfNotExistsDependentWithSSACustomResource> reconcile(
CreateOnlyIfNotExistsDependentWithSSACustomResource resource,
Context<CreateOnlyIfNotExistsDependentWithSSACustomResource> context) {
numberOfExecutions.addAndGet(1);
return UpdateControl.noUpdate();
}

public int getNumberOfExecutions() {
return numberOfExecutions.get();
}



}

0 comments on commit d2dd2f6

Please sign in to comment.