From: Pavel Macenauer Date: Wed, 15 Apr 2020 13:28:29 +0000 (+0000) Subject: Move PyArmNN test resources to external storage X-Git-Tag: submit/tizen/20200730.023729~76 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5e123f8eeca810507b3de80643ccca19ff954d68;p=platform%2Fupstream%2Farmnn.git Move PyArmNN test resources to external storage Change-Id: Ie2c94c8c58ed2964017bc049676ff32dc54c4ad0 Signed-off-by: Pavel Macenauer --- diff --git a/python/pyarmnn/README.md b/python/pyarmnn/README.md index a8f7573..25213bb 100644 --- a/python/pyarmnn/README.md +++ b/python/pyarmnn/README.md @@ -155,19 +155,24 @@ Before building package or running tests you need to generate SWIG wrappers base It can be done with tox target 'gen': ```bash -tox -e gen +$ tox -e gen ``` ## Running unit-tests -Execute command from the project root dir: +Download resources required to run unit tests by executing the script in the scripts folder: +``` +$ python ./scripts/download_test_resources.py +``` + +The script will download an archive from the Linaro server and extract it. A folder `test/testdata/shared` will be created. Execute `pytest` from the project root dir: ```bash -$ tox +$ python -m pytest test/ -v ``` -or +or run tox which will do both: ```bash -$ pytest -v +$ tox ``` ## Build python distr diff --git a/python/pyarmnn/scripts/download_test_resources.py b/python/pyarmnn/scripts/download_test_resources.py new file mode 100644 index 0000000..b166ed7 --- /dev/null +++ b/python/pyarmnn/scripts/download_test_resources.py @@ -0,0 +1,44 @@ +"""Downloads and extracts resources for unit tests. + +It is mandatory to run this script prior to running unit tests. Resources are stored as a tar.gz or a tar.bz2 archive and +extracted into the test/testdata/shared folder. +""" + +import tarfile +import requests +import os +import uuid + +SCRIPTS_DIR = os.path.dirname(os.path.realpath(__file__)) +EXTRACT_DIR = os.path.join(SCRIPTS_DIR, "..", "test") +ARCHIVE_URL = "https://snapshots.linaro.org/components/pyarmnn-tests/pyarmnn_testdata_200500_20200415.tar.bz2" + + +def download_resources(url, save_path): + # download archive - only support tar.gz or tar.bz2 + print("Downloading '{}'".format(url)) + temp_filename = str(uuid.uuid4()) + if url.endswith(".tar.bz2"): + temp_filename += ".tar.bz2" + elif url.endswith(".tar.gz"): + temp_filename += ".tar.gz" + else: + raise RuntimeError("Unsupported file.") + try: + r = requests.get(url, stream=True) + except requests.exceptions.RequestException as e: + raise RuntimeError("Unable to download file: {}".format(e)) + file_path = os.path.join(save_path, temp_filename) + with open(file_path, 'wb') as f: + f.write(r.content) + + # extract and delete temp file + with tarfile.open(file_path, "r:bz2" if temp_filename.endswith(".tar.bz2") else "r:gz") as tar: + print("Extracting '{}'".format(file_path)) + tar.extractall(save_path) + if os.path.exists(file_path): + print("Removing '{}'".format(file_path)) + os.remove(file_path) + + +download_resources(ARCHIVE_URL, EXTRACT_DIR) diff --git a/python/pyarmnn/scripts/requirements.txt b/python/pyarmnn/scripts/requirements.txt new file mode 100644 index 0000000..6f6296c --- /dev/null +++ b/python/pyarmnn/scripts/requirements.txt @@ -0,0 +1,3 @@ +requests==2.23.0 +pdoc3==0.6.3 +pyarmnn>=19.8.0 diff --git a/python/pyarmnn/test/testdata/shared/caffe_parser/golden_output_caffe.npy b/python/pyarmnn/test/testdata/shared/caffe_parser/golden_output_caffe.npy deleted file mode 100644 index 007141c..0000000 Binary files a/python/pyarmnn/test/testdata/shared/caffe_parser/golden_output_caffe.npy and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/caffe_parser/input_caffe.npy b/python/pyarmnn/test/testdata/shared/caffe_parser/input_caffe.npy deleted file mode 100644 index 15df758..0000000 Binary files a/python/pyarmnn/test/testdata/shared/caffe_parser/input_caffe.npy and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/license.txt b/python/pyarmnn/test/testdata/shared/license.txt deleted file mode 100644 index 1e95a68..0000000 --- a/python/pyarmnn/test/testdata/shared/license.txt +++ /dev/null @@ -1,10 +0,0 @@ -This folder contains models and data needed for the testing of PyArmNN. - -All models and files found in this folder were created by ARM for the purpose -of testing PyArmNN. - -All the contents of this folder are distributed with the following license. - -Copyright © 2020 Arm Ltd. All rights reserved. -SPDX-License-Identifier: MIT - diff --git a/python/pyarmnn/test/testdata/shared/mock_model.caffemodel b/python/pyarmnn/test/testdata/shared/mock_model.caffemodel deleted file mode 100644 index df4079b..0000000 Binary files a/python/pyarmnn/test/testdata/shared/mock_model.caffemodel and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/mock_model.onnx b/python/pyarmnn/test/testdata/shared/mock_model.onnx deleted file mode 100644 index c1b506c..0000000 Binary files a/python/pyarmnn/test/testdata/shared/mock_model.onnx and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/mock_model.pb b/python/pyarmnn/test/testdata/shared/mock_model.pb deleted file mode 100644 index cff9dc7..0000000 Binary files a/python/pyarmnn/test/testdata/shared/mock_model.pb and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/mock_model.tflite b/python/pyarmnn/test/testdata/shared/mock_model.tflite deleted file mode 100644 index 0b8944d..0000000 Binary files a/python/pyarmnn/test/testdata/shared/mock_model.tflite and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/mock_profile_out.json b/python/pyarmnn/test/testdata/shared/mock_profile_out.json deleted file mode 100644 index 8e10561..0000000 --- a/python/pyarmnn/test/testdata/shared/mock_profile_out.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "ArmNN": { - "inference_measurements_#1": { - "type": "Event", - "Wall clock time_#1": { - "type": "Measurement", - "raw": [ - 1.1, - 2.2, - 3.3, - 4.4, - 5.5, - 6.6 - ], - "unit": "us" - }, - - "Execute_#2": { - "type": "Event", - "Wall clock time_#2": { - "type": "Measurement", - "raw": [ - 1.1, - 2.2, - 3.3, - 4.4, - 5.5, - 6.6 - ], - "unit": "us" - }, - "Wall clock time (Start)_#2": { - "type": "Measurement", - "raw": [ - 1, - 1, - 1, - 1, - 1, - 1 - ], - "unit": "us" - }, - "Wall clock time (Stop)_#2": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - - "RefSomeMock1dWorkload_Execute_#5": { - "type": "Event", - "Wall clock time_#5": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Start)_#5": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Stop)_#5": { - "type": "Measurement", - "raw": [ - 4, - 4, - 4, - 4, - 4, - 4 - ], - "unit": "us" - } - }, - "NeonSomeMock2Workload_Execute_#6": { - "type": "Event", - "Wall clock time_#6": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Start)_#6": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Stop)_#6": { - "type": "Measurement", - "raw": [ - 4, - 4, - 4, - 4, - 4, - 4 - ], - "unit": "us" - } - }, - "ClSomeMock3dWorkload_Execute_#7": { - "type": "Event", - "Wall clock time_#7": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Start)_#7": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Stop)_#7": { - "type": "Measurement", - "raw": [ - 4, - 4, - 4, - 4, - 4, - 4 - ], - "unit": "us" - } - }, - "EthosNSomeMock4dWorkload_Execute_#8": { - "type": "Event", - "Wall clock time_#8": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Start)_#8": { - "type": "Measurement", - "raw": [ - 2, - 2, - 2, - 2, - 2, - 2 - ], - "unit": "us" - }, - "Wall clock time (Stop)_#8": { - "type": "Measurement", - "raw": [ - 4, - 4, - 4, - 4, - 4, - 4 - ], - "unit": "us" - } - } - } - } - } -} diff --git a/python/pyarmnn/test/testdata/shared/onnx_parser/golden_output_onnx.npy b/python/pyarmnn/test/testdata/shared/onnx_parser/golden_output_onnx.npy deleted file mode 100644 index f83d6ea..0000000 Binary files a/python/pyarmnn/test/testdata/shared/onnx_parser/golden_output_onnx.npy and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/onnx_parser/input_onnx.npy b/python/pyarmnn/test/testdata/shared/onnx_parser/input_onnx.npy deleted file mode 100644 index 15df758..0000000 Binary files a/python/pyarmnn/test/testdata/shared/onnx_parser/input_onnx.npy and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/tf_parser/golden_output_tf.npy b/python/pyarmnn/test/testdata/shared/tf_parser/golden_output_tf.npy deleted file mode 100644 index 007141c..0000000 Binary files a/python/pyarmnn/test/testdata/shared/tf_parser/golden_output_tf.npy and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/tf_parser/input_tf.npy b/python/pyarmnn/test/testdata/shared/tf_parser/input_tf.npy deleted file mode 100644 index a21802e..0000000 Binary files a/python/pyarmnn/test/testdata/shared/tf_parser/input_tf.npy and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/tflite_parser/golden_output_lite.npy b/python/pyarmnn/test/testdata/shared/tflite_parser/golden_output_lite.npy deleted file mode 100644 index 099f7fe..0000000 Binary files a/python/pyarmnn/test/testdata/shared/tflite_parser/golden_output_lite.npy and /dev/null differ diff --git a/python/pyarmnn/test/testdata/shared/tflite_parser/input_lite.npy b/python/pyarmnn/test/testdata/shared/tflite_parser/input_lite.npy deleted file mode 100644 index 5317468..0000000 Binary files a/python/pyarmnn/test/testdata/shared/tflite_parser/input_lite.npy and /dev/null differ diff --git a/python/pyarmnn/tox.ini b/python/pyarmnn/tox.ini index ca1d12b..7fa437c 100644 --- a/python/pyarmnn/tox.ini +++ b/python/pyarmnn/tox.ini @@ -12,10 +12,12 @@ deps = pytest==5.2.0 setuptools==41.6.0 numpy==1.17.2 pillow==6.1.0 + requests==2.23.0 recreate = True whitelist_externals = /bin/sh commands = + python ./scripts/download_test_resources.py python -m pytest test/ -v {posargs} --junit-xml=test_report_junit-{envname}.xml --cov=pyarmnn --cov-report xml:coverage-{envname}.xml [testenv:devenv]