# syntax=docker/dockerfile:experimental
FROM docker.hops.works/hopsworks/hwutils:1.7

# The base image runs as the hopsworks user; the tests need root to
# install packages and trust the cluster certificate (update-ca-certificates)
USER root

# unbuffer for pytest output streaming, gcc to build sdist-only python
# packages (e.g. twofish pulled in by the hopsworks SDK), and a full JDK 8
# for the maven builds in the java tests (the base image only ships a JRE)
RUN apt-get update && apt-get install -y \
    expect-dev \
    gcc \
    openjdk-8-jdk \
    && rm -rf /var/lib/apt/lists/*

ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
ENV PATH=$JAVA_HOME/bin:$PATH

# Maven from the binary tarball; apt maven would pull in openjdk-11
# as a second JDK
ARG MAVEN_VERSION=3.6.3
RUN curl -fL "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" \
    -o /tmp/maven.tar.gz && \
    tar -xzf /tmp/maven.tar.gz -C /opt && \
    rm /tmp/maven.tar.gz && \
    ln -sf /opt/apache-maven-${MAVEN_VERSION}/bin/mvn /usr/local/bin/mvn

# Standalone CPython 3.13 (ships with pip); extracts to /srv/hops/python
ARG PYTHON_URL_X86_64=https://github.com/astral-sh/python-build-standalone/releases/download/20260610/cpython-3.13.14%2B20260610-x86_64-unknown-linux-gnu-install_only.tar.gz
ARG PYTHON_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20260610/cpython-3.13.14%2B20260610-aarch64-unknown-linux-gnu-install_only.tar.gz

RUN ARCH=$(uname -m) && \
    case "$ARCH" in \
        *x86_64) PYTHON_URL=$PYTHON_URL_X86_64 ;; \
        *aarch64) PYTHON_URL=$PYTHON_URL_ARM64 ;; \
        *) echo "Unsupported architecture: $ARCH"; exit 1 ;; \
    esac && \
    curl -fL "$PYTHON_URL" -o /tmp/python.tar.gz && \
    mkdir -p /srv/hops && \
    tar -xzf /tmp/python.tar.gz -C /srv/hops && \
    rm /tmp/python.tar.gz

ENV PATH=/srv/hops/python/bin:$PATH
# The standalone CPython was built with clang; point extension builds at gcc
ENV CC=gcc

RUN python3 --version && pip3 --version && mvn --version

# Copy source files
COPY . /tests

RUN chmod -R 777 /tests

WORKDIR /tests

RUN pip3 install -r requirements.txt --no-cache-dir --force-reinstall

# Set environment variables
ENV HOPSWORKS_PORT=28181
ENV HOPSWORKS_DOMAIN=hopsworks.glassfish.service.consul
ENV MYSQL_HOST=mysql.service.consul
ENV INSTALL_REQUIREMENTS=False
ENV PYTHONPATH=${home_dir}/tests:$PYTHONPATH
ENV IS_KUBE=True
ENV HOPSWORKS_TEST_USER_PASSWORD="Test1234!"
# This removes warnings on self signed certificate
ENV TRUST_CERTIFICATE=True
# Set the default command
ENTRYPOINT ["/bin/bash"]
CMD ["run_tests_on_kube.sh"]
