(#111): python virtualenv for users
Signed-off-by: anastasia prasolova <anastasia@nspcc.ru>
This commit is contained in:
parent
7638c10a20
commit
b95f6bd7c8
7 changed files with 88 additions and 33 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -9,3 +9,4 @@
|
|||
TemporaryDir/*
|
||||
artifacts/*
|
||||
docs/*
|
||||
venv.*/*
|
||||
|
|
28
Makefile
28
Makefile
|
@ -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}"
|
||||
|
|
31
README.md
31
README.md
|
@ -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`
|
||||
|
|
26
build_assets/activate.patch
Normal file
26
build_assets/activate.patch
Normal 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"
|
5
venv/localtest/environment.sh
Normal file
5
venv/localtest/environment.sh
Normal file
|
@ -0,0 +1,5 @@
|
|||
# DevEnv variables
|
||||
export NEOFS_MORPH_DISABLE_CACHE=true
|
||||
pushd ../neofs-dev-env
|
||||
export `make env`
|
||||
popd
|
8
venv/localtest/requirements.txt
Normal file
8
venv/localtest/requirements.txt
Normal 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
Normal file
20
venv_template.mk
Normal 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
|
Loading…
Reference in a new issue