Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Add patches to interop test image #2153

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions ods_ci/build/Dockerfile_interop
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
FROM quay.io/centos/centos:stream9

# Use this build arg to set any default test script arguments
ENV RUN_SCRIPT_ARGS=${RUN_SCRIPT_ARGS}
ENV ROBOT_EXTRA_ARGS=''
ENV SET_ENVIRONMENT=0
ENV RETURN_PW=0
ENV OC_HOST=${OC_HOST}
ENV RUN_FROM_CONTAINER=1
ENV SE_BROWSER_PATH=/usr/bin/chromium-browser
ARG OC_VERSION=4.13
ARG OC_CHANNEL=stable
ARG PYTHON_VERSION=3.11

ENV ODS_VENV="/ods_venv" \
HOME="/ods_venv" \
PATH="ods_venv/bin:${PATH}" \
AM_I_IN_CONTAINER="Yes" \
PYTHONUNBUFFERED="True"

WORKDIR /ods_venv

COPY . ${ODS_VENV}
COPY ods_ci/test-variables.yml.example ${ODS_VENV}/ods_ci/test-variables.yml

RUN dnf install epel-release -y &&\
dnf -y update &&\
dnf install -y jq git unzip chromium chromedriver httpd-tools gcc \
python3 python3-devel python3-distro python-pip python${PYTHON_VERSION} python${PYTHON_VERSION}-devel wget && \
dnf clean all && rm -rf /var/cache/yum &&\
curl --proto "=https" -L https://github.com/mikefarah/yq/releases/download/v4.34.1/yq_linux_amd64 -o /usr/bin/yq &&\
chmod +x /usr/bin/yq &&\
curl --proto "=https" -L https://mirror.openshift.com/pub/openshift-v$(echo ${OC_VERSION} | cut -d'.' -f 1)/x86_64/clients/ocp/${OC_CHANNEL}-${OC_VERSION}/openshift-client-linux.tar.gz -o ${HOME}/oc_client.tar.gz && \
tar xvf ${HOME}/oc_client.tar.gz -C /usr/local/bin/ && \
rm -rf ${HOME}/oc_client.tar.gz && rm /usr/local/bin/README.md && chmod 755 /usr/local/bin/oc && oc version --client && \
curl --proto "=https" -L https://github.com/openshift-online/ocm-cli/releases/download/v0.1.62/ocm-linux-amd64 -o ${HOME}/ocm && \
mv ${HOME}/ocm /usr/local/bin/ && chmod 755 /usr/local/bin/ocm && ocm version && \
curl -sL https://github.com/fullstorydev/grpcurl/releases/download/v1.8.7/grpcurl_1.8.7_linux_x86_64.tar.gz -o grpcurl_1.8.7_linux_x86_64.tar.gz && \
tar xzf grpcurl_1.8.7_linux_x86_64.tar.gz && \
rm -rf grpcurl_1.8.7_linux_x86_64.tar.gz && \
mv grpcurl /usr/bin/grpcurl && \
chmod +x /usr/bin/grpcurl

RUN alternatives --install /usr/local/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1
RUN python3 --version
RUN curl -sSL https://install.python-poetry.org | python3 -
ENV PATH="${PATH}:${HOME}/.local/bin"
RUN poetry install

RUN chgrp -R 0 ${ODS_VENV} && \
chmod -R g+rwX ${ODS_VENV}

USER 1001
WORKDIR ${ODS_VENV}/ods_ci
97 changes: 97 additions & 0 deletions ods_ci/run_interop.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
#!/bin/bash

export SET_ENVIRONMENT=1
export USE_OCM_IDP=0
export RUN_SCRIPT_ARGS="skip-oclogin true --set-urls-variables true"
export ROBOT_EXTRA_ARGS="-i Smoke --dryrun"

TEST_CASE_FILE="tests/Tests"
TEST_VARIABLES_FILE="test-variables.yml"


oc_wait_for_pods() {
local ns="${1}"
local pods

for i in {1..60}; do
echo "Waiting for pods in '${ns}' in state Running or Completed"
pods=$(oc get pod -n "${ns}" | grep -v "Running\|Completed" | tail -n +2)
echo "${pods}"
if [[ -z "${pods}" ]]; then
echo "All pods in '${ns}' are in state Running or Completed"
break
fi
sleep 20
done
if [[ -n "${pods}" ]]; then
echo "ERROR: Some pods in '${ns}' are not in state Running or Completed"
echo "${pods}"
exit 1
fi
}

echo "Install IDP users and map them to test config file"
./build/install_idp.sh

echo "Update test config file..."
AWS_SHARED_CREDENTIALS_FILE="${CLUSTER_PROFILE_DIR}/.awscred"
AWS_ACCESS_KEY_ID=$(cat $AWS_SHARED_CREDENTIALS_FILE | grep aws_access_key_id | tr -d ' ' | cut -d '=' -f 2)
AWS_SECRET_ACCESS_KEY=$(cat $AWS_SHARED_CREDENTIALS_FILE | grep aws_secret_access_key | tr -d ' ' | cut -d '=' -f 2)
export AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY

yq -i '.OCP_API_URL=env(OC_HOST)' "${TEST_VARIABLES_FILE}"
yq -i '.OCP_CONSOLE_URL=env(OCP_CONSOLE)' "${TEST_VARIABLES_FILE}"
yq -i '.ODH_DASHBOARD_URL=env(RHODS_DASHBOARD)' "${TEST_VARIABLES_FILE}"
yq -i '.BROWSER.NAME="firefox"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.AWS_ACCESS_KEY_ID=env(AWS_ACCESS_KEY_ID)' "${TEST_VARIABLES_FILE}"
yq -i '.S3.AWS_SECRET_ACCESS_KEY=env(AWS_SECRET_ACCESS_KEY)' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_1.NAME="ods-ci-s3"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_1.REGION="us-east-1"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_1.ENDPOINT="https://s3.amazonaws.com/"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_2.NAME="ods-ci-ds-pipelines"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_2.REGION="us-east-1"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_2.ENDPOINT="https://s3.amazonaws.com/"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_3.NAME="ods-ci-wisdom"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_3.REGION="us-east-1"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_3.ENDPOINT="https://s3.amazonaws.com/"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_4.NAME="ods-ci-pachyderm"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_4.REGION="us-east-1"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_4.ENDPOINT="https://s3.amazonaws.com/"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_5.NAME="rhoai-dw"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_5.REGION="us-east-1"' "${TEST_VARIABLES_FILE}"
yq -i '.S3.BUCKET_5.ENDPOINT="https://s3.amazonaws.com/"' "${TEST_VARIABLES_FILE}"

echo "Performing oc login with cluster admin"
username=$(yq eval '.OCP_ADMIN_USER.USERNAME' "${TEST_VARIABLES_FILE}")
password=$(yq eval '.OCP_ADMIN_USER.PASSWORD' "${TEST_VARIABLES_FILE}")
oc login "$OC_HOST" --username "${username}" --password "${password}" --insecure-skip-tls-verify=true
retVal=$?
if [ $retVal -ne 0 ]; then
echo "The oc login command seems to have failed"
echo "Please review the content of $TEST_VARIABLES_FILE"
exit "$retVal"
fi

if [[ -z "${TEST_SUITE}" ]]; then
echo "Define TEST_SUITE"
exit 1
fi

if [[ -z "${ARTIFACT_DIR}" ]]; then
echo "Define ARTIFACT_DIR"
ARTIFACT_DIR="/tmp"
fi

# Wait for operator pods to be up and running
oc_wait_for_pods "redhat-ods-applications"

poetry run robot --include ${TEST_SUITE} \
--exclude "AutomationBug" \
--exclude "ProductBug" \
--exclude "ExcludeOnRHOAI" \
--exclude "Resources-*" \
-d ${ARTIFACT_DIR} \
-x xunit_test_result.xml \
-r test_report.html \
--variablefile ${TEST_VARIABLES_FILE} ${TEST_CASE_FILE}
Loading