(#111): python virtualenv for users

Signed-off-by: anastasia prasolova <anastasia@nspcc.ru>
robot-tests-backup
anastasia prasolova 2021-09-07 18:48:58 +03:00 committed by Anastasia Prasolova
parent 7638c10a20
commit b95f6bd7c8
7 changed files with 88 additions and 33 deletions

3
.gitignore vendored
View File

@ -8,4 +8,5 @@
**/__pycache__
TemporaryDir/*
artifacts/*
docs/*
docs/*
venv.*/*

View File

@ -1,18 +1,30 @@
#!/usr/bin/make -f
.DEFAULT_GOAL := help
OUTPUT_DIR = artifacts/
KEYWORDS_PATH = ../neofs-keywords
KEYWORDS_REPO = git@github.com:nspcc-dev/neofs-keywords.git
SHELL = bash
run: deps
OUTPUT_DIR = artifacts/
KEYWORDS_REPO = git@github.com:nspcc-dev/neofs-keywords.git
VENVS = $(shell ls -1d venv/*/ | sort -u | xargs basename -a)
.PHONY: all
all: venvs
include venv_template.mk
run: venvs
@echo "⇒ Test Run"
@robot --timestampoutputs --outputdir $(OUTPUT_DIR) robot/testsuites/integration/
deps: $(KEYWORDS_PATH)
.PHONY: venvs
venvs:
$(foreach venv,$(VENVS),venv.$(venv))
$(KEYWORDS_PATH):
@echo "Cloning keywords repo"
@git clone $(KEYWORDS_REPO) $(KEYWORDS_PATH)
$(foreach venv,$(VENVS),$(eval $(call VENV_template,$(venv))))
clean:
rm -rf venv.*
help:
@echo "⇒ run Run testcases ${R}"

View File

@ -22,17 +22,7 @@
- `sudo cp bin/neo-go /usr/local/bin/neo-go`
or download binary from releases: https://github.com/nspcc-dev/neo-go/releases
4. Install Testcases dependencies
- `pip3.8 install -r requirements.txt`
- `make deps`
Test cases are designed to run on Python 3.8.
### Run
0. Add keywords repo to PYTHONPATH `export PYTHONPATH=${PYTHONPATH}:~/neofs-keywords/lib::~/neofs-keywords/robot`
1. Clone neofs-dev-env and prepare it
4. Clone neofs-dev-env and prepare it
```
# clean up obsolete volumes
@ -43,25 +33,18 @@ make up
# decrease maximum object size to 1000 bytes
make update.max_object_size val=1000
```
Also disable Storage Nodes Morph cache
5. Build virtual env
```
export NEOFS_MORPH_DISABLE_CACHE=true
make venv.localtest
. venv.localtest/bin/activate
```
2. Export neofs-dev-env variables into the shell where you are going to run tests
Test cases are designed to run on Python 3.8.
```
cd neofs-dev-env
export `make env`
```
### Run
3. Execute the command `make run`
4. Logs will be available in the artifacts/ directory after tests with any of the statuses are completed.
### Running an arbitrary test case
Execute the command `make run`. Logs will be available in the artifacts/ directory after tests with any of the statuses are completed.
To run an arbitrary UserScenario or testcase, you need to run the command:
`robot --outputdir artifacts/ robot/testsuites/integration/<UserScenario>` or `robot --outputdir artifacts/ robot/testsuites/integration/<UserScenario>/<testcase>.robot`

View File

@ -0,0 +1,26 @@
diff -urN bin.orig/activate bin/activate
--- bin.orig/activate 2018-12-27 14:55:13.916461020 +0900
+++ bin/activate 2018-12-27 20:38:35.223248728 +0900
@@ -30,6 +30,10 @@
unset _OLD_VIRTUAL_PS1
fi
+ # Uset external env variables
+ declare -f env_deactivate > /dev/null && env_deactivate
+ declare -f venv_deactivate > /dev/null && venv_deactivate
+
unset VIRTUAL_ENV
if [ ! "${1-}" = "nondestructive" ] ; then
# Self destruct!
@@ -47,6 +51,11 @@
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
+# Set external variables
+if [ -f ${VIRTUAL_ENV}/bin/environment.sh ] ; then
+ . ${VIRTUAL_ENV}/bin/environment.sh
+fi
+
# unset PYTHONHOME if set
if ! [ -z "${PYTHONHOME+_}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"

View File

@ -0,0 +1,5 @@
# DevEnv variables
export NEOFS_MORPH_DISABLE_CACHE=true
pushd ../neofs-dev-env
export `make env`
popd

View File

@ -0,0 +1,8 @@
robotframework==3.2.1
requests==2.25.1
pexpect==4.8.0
boto3==1.16.33
docker==4.4.0
botocore==1.19.33
urllib3==1.26.3
base58==1.0.3

20
venv_template.mk 100644
View File

@ -0,0 +1,20 @@
define VENV_template
venv.$(1): venv.$(1)/bin/activate venv.$(1)/bin/environment.sh
venv.$(1)/bin/activate: venv/$(1)/requirements.txt
@echo "Creating $(1) venv in $$@ from $$<"
virtualenv --python=python3.8 --prompt="($(1))" venv.$(1)
source venv.$(1)/bin/activate && \
pip3.8 install -Ur venv/$(1)/requirements.txt
@echo "Cloning keywords repo"
git clone $(KEYWORDS_REPO) venv.$(1)/neofs-keywords
source venv.$(1)/bin/activate && \
pip3.8 install -Ur venv.$(1)/neofs-keywords/requirements.txt
@echo "Applying activate script patch"
patch -R --dry-run -p1 -s -f -d venv.$(1)/bin/ < build_assets/activate.patch || \
patch -p1 -d venv.$(1)/bin/ < build_assets/activate.patch
venv.$(1)/bin/environment.sh: | venv/$(1)/environment.sh
ln -s ../../venv/$(1)/environment.sh venv.$(1)/bin/environment.sh
endef