keycloak/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/DistributionType.java

72 lines
2.5 KiB
Java

/*
* Copyright 2021 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.it.junit5.extension;
import java.util.Optional;
import java.util.function.Function;
import org.keycloak.it.utils.DockerKeycloakDistribution;
import org.keycloak.it.utils.KeycloakDistribution;
import org.keycloak.it.utils.RawKeycloakDistribution;
import org.keycloak.utils.StringUtil;
public enum DistributionType {
RAW(DistributionType::createRawDistribution),
DOCKER(DistributionType::createDockerDistribution);
private static KeycloakDistribution createDockerDistribution(DistributionTest config) {
return new DockerKeycloakDistribution(
config.debug(),
config.keepAlive(),
!DistributionTest.ReInstall.NEVER.equals(config.reInstall()));
}
private static KeycloakDistribution createRawDistribution(DistributionTest config) {
return new RawKeycloakDistribution(
config.debug(),
config.keepAlive(),
config.enableTls(),
!DistributionTest.ReInstall.NEVER.equals(config.reInstall()),
config.removeBuildOptionsAfterBuild());
}
private final Function<DistributionTest, KeycloakDistribution> factory;
DistributionType(Function<DistributionTest, KeycloakDistribution> factory) {
this.factory = factory;
}
public static Optional<DistributionType> getCurrent() {
String distributionType = System.getProperty("kc.quarkus.tests.dist");
if (StringUtil.isBlank(distributionType)) {
return Optional.empty();
}
try {
return Optional.of(valueOf(distributionType.toUpperCase()));
} catch (IllegalStateException cause) {
throw new RuntimeException("Invalid distribution type: " + distributionType);
}
}
public KeycloakDistribution newInstance(DistributionTest config) {
return factory.apply(config);
}
}