Skip to content

Commit

Permalink
Running tests on minio
Browse files Browse the repository at this point in the history
  • Loading branch information
fao89 committed Mar 10, 2020
1 parent a15c73d commit bca9bf4
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 30 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Expand Up @@ -19,6 +19,7 @@ env:
- TEST=pulp
- TEST=docs
- TEST=bindings
- TEST=s3
services:
- postgresql
- redis-server
Expand Down
20 changes: 9 additions & 11 deletions .travis/before_script.sh
Expand Up @@ -31,23 +31,21 @@ else
sed "s/localhost/$(hostname)/g" ../pulpcore/.travis/pulp-smash-config.json > ~/.config/pulp_smash/settings.json
fi


# set up pulp-fixtures docker container
if [[ "$TEST" == 'pulp' ]]; then
docker run -d -p 0.0.0.0:8000:80 quay.io/pulp/pulp-fixtures:latest
fi
cat ~/.config/pulp_smash/settings.json | \
jq "setpath([\"custom\",\"fixtures_origin\"]; \"http://$(hostname):8000/fixtures/\")" > temp.json
cat temp.json > ~/.config/pulp_smash/settings.json


if [[ "$TEST" == 'pulp' || "$TEST" == 'performance' ]]; then
if [[ "$TEST" == 'pulp' || "$TEST" == 'performance' || "$TEST" == 's3' ]]; then
# Many tests require pytest/mock, but users do not need them at runtime
# (or to add plugins on top of pulpcore or pulp container images.)
# So install it here, rather than in the image Dockerfile.
$CMD_PREFIX pip3 install pytest mock
# Many functional tests require these
$CMD_PREFIX dnf install -yq lsof which dnf-plugins-core

# set up pulp-fixtures docker container
docker run -d -p 0.0.0.0:8000:80 quay.io/pulp/pulp-fixtures:latest

cat ~/.config/pulp_smash/settings.json | \
jq "setpath([\"custom\",\"fixtures_origin\"]; \"http://$(hostname):8000/fixtures/\")" > temp.json
cat temp.json > ~/.config/pulp_smash/settings.json

fi

if [[ -f $POST_BEFORE_SCRIPT ]]; then
Expand Down
6 changes: 3 additions & 3 deletions .travis/cherrypick.py
Expand Up @@ -91,9 +91,9 @@ def get_merged_commits(pr):
if ret.returncode != 0:
print(f"Failed to cherry-pick commit {commit.sha}: {ret.stderr.decode('ascii')}")
exit(1)
else:
cherrypicks.append(issue)
print(f"Cherry-picked commit {commit.sha}.")

cherrypicks.append(issue)
print(f"Cherry-picked commit {commit.sha}.")

# check if we cherry picked anything
if len(cherrypicks) == 0:
Expand Down
39 changes: 39 additions & 0 deletions .travis/install.sh
Expand Up @@ -69,6 +69,11 @@ images:
- $PULP_FILE
- $PULP_CERTGUARD
VARSYAML

if [ "$TEST" = 's3' ]; then
echo "s3_test: true" >> vars/vars.yaml
fi

ansible-playbook -v build.yaml

cd $TRAVIS_BUILD_DIR/../pulp-operator
Expand All @@ -93,6 +98,40 @@ spec:
admin_password: pulp
CRYAML

if [ "$TEST" = 's3' ]; then
cat > deploy/crds/pulpproject_v1alpha1_pulp_cr.yaml << CRYAML
apiVersion: pulpproject.org/v1alpha1
kind: Pulp
metadata:
name: example-pulp
spec:
pulp_file_storage:
# k3s local-path requires this
access_mode: "ReadWriteOnce"
# We have a little over 40GB free on Travis VMs/instances
size: "40Gi"
image: pulp_file
tag: "${TAG}"
database_connection:
username: pulp
password: pulp
admin_password: pulp
pulp_settings:
aws_access_key_id: "AKIAIT2Z5TDYPX3ARJBA"
aws_secret_access_key: "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"
aws_storage_bucket_name: "pulp3"
aws_default_acl: "@none None"
s3_use_sigv4: true
aws_s3_signature_version: "s3v4"
aws_s3_addressing_style: "path"
aws_s3_region_name: "eu-central-1"
default_file_storage: "storages.backends.s3boto3.S3Boto3Storage"
media_root: ''
aws_s3_endpoint_url: "http://$(hostname):9000"
CRYAML
fi

# Install k3s, lightweight Kubernetes
.travis/k3s-install.sh
# Deploy pulp-operator, with the pulp containers, according to CRYAML
Expand Down
9 changes: 9 additions & 0 deletions .travis/pre_before_install.sh
Expand Up @@ -26,3 +26,12 @@ if [ -n "$PULP_CERTGUARD_PR_NUMBER" ]; then
fi

cd pulpcore

if [[ "$TEST" == 's3' ]]; then
export MINIO_ACCESS_KEY=AKIAIT2Z5TDYPX3ARJBA
export MINIO_SECRET_KEY=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
docker run -d -p 0.0.0.0:9000:9000 -e MINIO_ACCESS_KEY=$MINIO_ACCESS_KEY -e MINIO_SECRET_KEY=$MINIO_SECRET_KEY minio/minio server /data
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin
fi
20 changes: 14 additions & 6 deletions .travis/script.sh
Expand Up @@ -20,9 +20,9 @@ export FUNC_TEST_SCRIPT=$TRAVIS_BUILD_DIR/.travis/func_test_script.sh
export DJANGO_SETTINGS_MODULE=pulpcore.app.settings

if [ "$TEST" = 'docs' ]; then

export PULP_CONTENT_ORIGIN=http://$(hostname):24816


cd docs
make html
Expand Down Expand Up @@ -59,15 +59,15 @@ if [ "$TEST" = 'bindings' ]; then

rm -rf ./pulpcore-client

./generate.sh pulpcore ruby
./generate.sh pulpcore ruby 0
cd pulpcore-client
gem build pulpcore_client
gem install --both ./pulpcore_client-0.gem
cd ..

rm -rf ./pulp_file-client

./generate.sh pulp_file ruby
./generate.sh pulp_file ruby 0
cd pulp_file-client
gem build pulp_file_client
gem install --both ./pulp_file_client-0.gem
Expand All @@ -89,6 +89,13 @@ export CMD_STDIN_PREFIX="sudo kubectl exec -i $PULP_API_POD --"
cat unittest_requirements.txt | $CMD_STDIN_PREFIX bash -c "cat > /tmp/test_requirements.txt"
$CMD_PREFIX pip3 install -r /tmp/test_requirements.txt

if [[ "$TEST" == 's3' ]]; then
mc config host add s3 http://localhost:9000 AKIAIT2Z5TDYPX3ARJBA fqRvjWaPU5o0fCqQuUWbj9Fainj2pVZtBCiDiieS --api S3v4
mc config host rm local
mc mb s3/pulp3 --region eu-central-1
mc tree s3
fi

# Run unit tests.
$CMD_PREFIX bash -c "PULP_DATABASES__default__USER=postgres django-admin test --noinput /usr/local/lib/python${TRAVIS_PYTHON_VERSION}/site-packages/pulpcore/tests/unit/"

Expand All @@ -107,11 +114,12 @@ export PYTHONPATH=$TRAVIS_BUILD_DIR:${PYTHONPATH}
set -u

if [[ "$TEST" == "performance" ]]; then
wget -qO- https://github.com/crazy-max/travis-wait-enhanced/releases/download/v1.0.0/travis-wait-enhanced_1.0.0_linux_x86_64.tar.gz | sudo tar -C /usr/local/bin -zxvf - travis-wait-enhanced
echo "--- Performance Tests ---"
if [[ -z ${PERFORMANCE_TEST+x} ]]; then
pytest -vv -r sx --color=yes --pyargs --capture=no --durations=0 pulpcore.tests.performance || show_logs_and_return_non_zero
travis-wait-enhanced --interval=1m --timeout=30m -- pytest -vv -r sx --color=yes --pyargs --capture=no --durations=0 pulpcore.tests.performance || show_logs_and_return_non_zero
else
pytest -vv -r sx --color=yes --pyargs --capture=no --durations=0 pulpcore.tests.performance.test_$PERFORMANCE_TEST || show_logs_and_return_non_zero
travis-wait-enhanced --interval=1m --timeout=30m -- pytest -vv -r sx --color=yes --pyargs --capture=no --durations=0 pulpcore.tests.performance.test_$PERFORMANCE_TEST || show_logs_and_return_non_zero
fi
exit
fi
Expand Down
6 changes: 5 additions & 1 deletion containers/images/pulp/Dockerfile.j2
Expand Up @@ -47,7 +47,11 @@ RUN pip install --upgrade pip

RUN mkdir -p /etc/pulp

RUN pip install gunicorn
RUN pip install gunicorn django-storages[boto3]
{% if s3_test is defined %}
# Hacking botocore (https://github.com/boto/botocore/pull/1990):
RUN sed -i "s/hasattr(body, 'read')/getattr(body, '_size', None)/g" $(pip show botocore | grep -i location | awk '{ print $2 }')/botocore/handlers.py
{% endif %}

{% if ( item.value.pulpcore is defined and
item.value.pulpcore.startswith('./') ) %}
Expand Down
4 changes: 3 additions & 1 deletion pulpcore/tests/unit/models/test_content.py
@@ -1,6 +1,7 @@
import os
import tempfile

from django.core.files.storage import default_storage as storage
from django.test import TestCase
from pulpcore.plugin.models import Artifact, Content, ContentArtifact

Expand All @@ -23,10 +24,11 @@ def setUp(self):
def test_create_and_read_content(self):
content = Content.objects.create()
content.save()
artifact_file = storage.open(self.artifact01.file.name)
content_artifact = ContentArtifact.objects.create(
artifact=self.artifact01,
content=content,
relative_path=self.artifact01.file.path)
relative_path=artifact_file.name)
content_artifact.save()
self.assertTrue(
Content.objects.filter(pk=content.pk).exists()
Expand Down
16 changes: 8 additions & 8 deletions template_config.yml
@@ -1,14 +1,11 @@
# This config represents the latest values used when running the plugin-template. Any settings that
# were not present before running plugin-template have been added with their default values.

# pulp_file is hardcoded in plugin_template when generating for pulpcore in some
# places. In other places, plugin_template uses generic logic for it, so we
# specify it here.
# Also, .travis/pre_before_install.sh reads the pulp_file branch. At runtime,
# not template generation time.
additional_plugins:
- { name: pulp_file, branch: master }
- { name: pulp-certguard, branch: master }
- branch: master
name: pulp_file
- branch: master
name: pulp-certguard
black: false
check_commit_message: true
cherry_pick_automation: true
Expand All @@ -31,11 +28,14 @@ plugin_name: pulpcore
plugin_snake: pulpcore
pulp_settings: null
pulpcore_branch: null
pulpcore_pip_version_specifier: null
pydocstyle: true
pypi_username: pulp
stable_branch: "3.2"
stable_branch: '3.2'
test_bindings: true
test_performance: false
test_s3: true
travis_addtl_services: []
travis_notifications:
irc:
channels:
Expand Down

0 comments on commit bca9bf4

Please sign in to comment.