Move PyArmNN test resources to external storage
authorPavel Macenauer <pavel.macenauer@linaro.org>
Wed, 15 Apr 2020 13:28:29 +0000 (13:28 +0000)
committerNina Drozd <nina.drozd@arm.com>
Tue, 5 May 2020 16:44:13 +0000 (16:44 +0000)
Change-Id: Ie2c94c8c58ed2964017bc049676ff32dc54c4ad0
Signed-off-by: Pavel Macenauer <pavel.macenauer@nxp.com>
18 files changed:
python/pyarmnn/README.md
python/pyarmnn/scripts/download_test_resources.py [new file with mode: 0644]
python/pyarmnn/scripts/requirements.txt [new file with mode: 0644]
python/pyarmnn/test/testdata/shared/caffe_parser/golden_output_caffe.npy [deleted file]
python/pyarmnn/test/testdata/shared/caffe_parser/input_caffe.npy [deleted file]
python/pyarmnn/test/testdata/shared/license.txt [deleted file]
python/pyarmnn/test/testdata/shared/mock_model.caffemodel [deleted file]
python/pyarmnn/test/testdata/shared/mock_model.onnx [deleted file]
python/pyarmnn/test/testdata/shared/mock_model.pb [deleted file]
python/pyarmnn/test/testdata/shared/mock_model.tflite [deleted file]
python/pyarmnn/test/testdata/shared/mock_profile_out.json [deleted file]
python/pyarmnn/test/testdata/shared/onnx_parser/golden_output_onnx.npy [deleted file]
python/pyarmnn/test/testdata/shared/onnx_parser/input_onnx.npy [deleted file]
python/pyarmnn/test/testdata/shared/tf_parser/golden_output_tf.npy [deleted file]
python/pyarmnn/test/testdata/shared/tf_parser/input_tf.npy [deleted file]
python/pyarmnn/test/testdata/shared/tflite_parser/golden_output_lite.npy [deleted file]
python/pyarmnn/test/testdata/shared/tflite_parser/input_lite.npy [deleted file]
python/pyarmnn/tox.ini

index a8f7573..25213bb 100644 (file)
@@ -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 (file)
index 0000000..b166ed7
--- /dev/null
@@ -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 (file)
index 0000000..6f6296c
--- /dev/null
@@ -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 (file)
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 (file)
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 (file)
index 1e95a68..0000000
+++ /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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
index 8e10561..0000000
+++ /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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
index 5317468..0000000
Binary files a/python/pyarmnn/test/testdata/shared/tflite_parser/input_lite.npy and /dev/null differ
index ca1d12b..7fa437c 100644 (file)
@@ -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]