org.testcontainers.containers.delegate.YugabyteDBYCQLDelegate Maven / Gradle / Ivy
                 Go to download
                
        
                    Show more of this group  Show more artifacts with this name
Show all versions of yugabytedb Show documentation
                Show all versions of yugabytedb Show documentation
Isolated container management for Java code testing
                
             The newest version!
        
        package org.testcontainers.containers.delegate;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.testcontainers.containers.Container.ExecResult;
import org.testcontainers.containers.YugabyteDBYCQLContainer;
import org.testcontainers.ext.ScriptUtils.UncategorizedScriptException;
import java.util.Collection;
/**
 * Query execution delegate class for YCQL API to delegate init-script statements. This
 * invokes the in-built ycqlsh cli within the container to execute the
 * statements at one go. It is recommended to use frameworks such as liquibase to manage
 * this requirement. This functionality is kept to address the initialization requirements
 * from standalone services that can't leverage liquibase or something similar.
 *
 * @see YugabyteDBYCQLContainer
 */
@RequiredArgsConstructor
@Slf4j
public final class YugabyteDBYCQLDelegate extends AbstractYCQLDelegate {
    private static final String BIN_PATH = "/home/yugabyte/tserver/bin/ycqlsh";
    private final YugabyteDBYCQLContainer container;
    @Override
    public void execute(
        Collection statements,
        String scriptPath,
        boolean continueOnError,
        boolean ignoreFailedDrops
    ) {
        final String containerInterfaceIP = container
            .getContainerInfo()
            .getNetworkSettings()
            .getNetworks()
            .entrySet()
            .stream()
            .findFirst()
            .get()
            .getValue()
            .getIpAddress();
        try {
            ExecResult result = container.execInContainer(
                BIN_PATH,
                containerInterfaceIP,
                "-u",
                container.getUsername(),
                "-p",
                container.getPassword(),
                "-k",
                container.getKeyspace(),
                "-e",
                StringUtils.join(statements, ";")
            );
            if (result.getExitCode() != 0) {
                throw new RuntimeException(result.getStderr());
            }
        } catch (Exception e) {
            log.debug(e.getMessage(), e);
            throw new UncategorizedScriptException(e.getMessage(), e);
        }
    }
}
     © 2015 - 2025 Weber Informatics LLC | Privacy Policy