Refactor and cleanup codes. No functional changes.
This commit is contained in:
106
run_tests.sh
106
run_tests.sh
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
# Copyright 2016 Google Inc.
|
||||
# Copyright 2016 Google LLC.
|
||||
#
|
||||
# This software is licensed under the terms defined in the Widevine Master
|
||||
# License Agreement. For a copy of this agreement, please contact
|
||||
@@ -17,33 +17,101 @@
|
||||
# - Protocol compiler: https://github.com/google/protobuf#protocol-compiler-installation
|
||||
# On Ubuntu: sudo apt-get install protobuf-compiler
|
||||
# - Protobuf Python runtime (version 3.0 or later): sudo pip install protobuf
|
||||
# - swig: http://www.swig.org/download.html
|
||||
|
||||
set -e
|
||||
|
||||
hash protoc 2>/dev/null || { echo >&2 "protobuf is required but not installed. Aborting."; exit 1; }
|
||||
# - CLIF: https://github.com/google/clif
|
||||
# Environment Variables:
|
||||
# - TOOLS_PATH: colon-delimited paths to additional tools such as protoc.
|
||||
# - CLIF_PREFIX: prefix path to CLIF installation.
|
||||
|
||||
set -ex
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
rm -rf test_genfiles
|
||||
mkdir test_genfiles
|
||||
if [[ -v TOOLS_PATH ]]; then
|
||||
export PATH=$PATH:$TOOLS_PATH
|
||||
fi
|
||||
|
||||
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/client_identification.proto"
|
||||
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/provisioned_device_info.proto"
|
||||
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/certificate_provisioning.proto"
|
||||
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/signed_device_certificate.proto"
|
||||
if ! which protoc 2>/dev/null; then
|
||||
echo >&2 "Protobuf is required but not found (did you set TOOLS_PATH?). Aborting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [[ -v CLIF_PREFIX ]]; then
|
||||
echo >&2 "CLIF_PREFIX not set. Defaulting to '$HOME/opt'."
|
||||
export CLIF_PREFIX=$HOME/opt
|
||||
fi
|
||||
|
||||
PYCLIF="$CLIF_PREFIX/clif/bin/pyclif"
|
||||
PYCLIF_PROTO="$CLIF_PREFIX/clif/bin/pyclif_proto"
|
||||
CLIF_INC="-I$CLIF_PREFIX"
|
||||
if ! [[ -x $PYCLIF ]]; then
|
||||
echo >&2 "CLIF is required but not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the path of the native python C++ header files.
|
||||
PYTHON_INC="-I$(printf "from distutils.sysconfig import get_python_inc\nprint(get_python_inc())\n" | python)"
|
||||
|
||||
SRC_DIR="$(pwd)"
|
||||
GEN_DIR="$(pwd)/test_genfiles"
|
||||
PROTO_GEN_DIR="$GEN_DIR/protos/public"
|
||||
COMMON_GEN_DIR="$GEN_DIR/common/python"
|
||||
SDK_PYTHON_GEN_DIR="$GEN_DIR/provisioning_sdk/public/python"
|
||||
export PYEXT_BUILD_DIR="$(pwd)/python_ext_build"
|
||||
PYEXT_INSTALL_DIR="$(pwd)/python_env"
|
||||
|
||||
rm -rf "$GEN_DIR"
|
||||
rm -rf "$PYEXT_BUILD_DIR"
|
||||
rm -rf "$PYEXT_INSTALL_DIR"
|
||||
mkdir -p "$PROTO_GEN_DIR"
|
||||
mkdir -p "$COMMON_GEN_DIR"
|
||||
mkdir -p "$SDK_PYTHON_GEN_DIR"
|
||||
mkdir -p "$PYEXT_BUILD_DIR"
|
||||
|
||||
# Generate C++ outputs.
|
||||
# The protos are needed to compile the public header provisioning_engine.h.
|
||||
protoc -I="$SRC_DIR" --cpp_out="$GEN_DIR" "$SRC_DIR/protos/public/client_identification.proto"
|
||||
protoc -I="$SRC_DIR" --cpp_out="$GEN_DIR" "$SRC_DIR/protos/public/remote_attestation.proto"
|
||||
protoc -I="$SRC_DIR" --cpp_out="$GEN_DIR" "$SRC_DIR/protos/public/certificate_provisioning.proto"
|
||||
|
||||
# Generate py outputs.
|
||||
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/client_identification.proto"
|
||||
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/remote_attestation.proto"
|
||||
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/provisioned_device_info.proto"
|
||||
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/certificate_provisioning.proto"
|
||||
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/signed_drm_certificate.proto"
|
||||
|
||||
# Generate CLIF Python wrappers.
|
||||
"$PYCLIF_PROTO" --source_dir="$SRC_DIR/protos/public" --ccdeps_out="$PROTO_GEN_DIR/certificate_provisioning_pyclif.cc" --header_out="$PROTO_GEN_DIR/certificate_provisioning_pyclif.h" certificate_provisioning.proto
|
||||
|
||||
"$PYCLIF" --modname certificate_type --ccdeps_out="$COMMON_GEN_DIR/certificate_type.cc" --ccinit_out="$COMMON_GEN_DIR/initcertificate_type.cc" --header_out="$COMMON_GEN_DIR/certificate_type.h" --cc_flags="-std=c++11 -I$SRC_DIR $PYTHON_INC $CLIF_INC" "$SRC_DIR/common/python/certificate_type.clif"
|
||||
|
||||
"$PYCLIF" --modname provisioning_status --ccdeps_out="$SDK_PYTHON_GEN_DIR/provisioning_status.cc" --ccinit_out="$SDK_PYTHON_GEN_DIR/initprovisioning_status.cc" --header_out="$SDK_PYTHON_GEN_DIR/provisioning_status.h" --cc_flags="-std=c++11 -I$SRC_DIR $PYTHON_INC $CLIF_INC" "$SRC_DIR/provisioning_sdk/public/python/provisioning_status.clif"
|
||||
|
||||
"$PYCLIF" --modname provisioning_session --ccdeps_out="$SDK_PYTHON_GEN_DIR/provisioning_session.cc" --ccinit_out="$SDK_PYTHON_GEN_DIR/initprovisioning_session.cc" --header_out="$SDK_PYTHON_GEN_DIR/provisioning_session.h" --cc_flags="-std=c++11 -I$SRC_DIR -I$GEN_DIR $PYTHON_INC $CLIF_INC" --include_paths="$GEN_DIR" "$SRC_DIR/provisioning_sdk/public/python/provisioning_session.clif"
|
||||
|
||||
"$PYCLIF" --modname provisioning_engine --ccdeps_out="$SDK_PYTHON_GEN_DIR/provisioning_engine.cc" --ccinit_out="$SDK_PYTHON_GEN_DIR/initprovisioning_engine.cc" --header_out="$SDK_PYTHON_GEN_DIR/provisioning_engine.h" --cc_flags="-std=c++11 -I$SRC_DIR -I$GEN_DIR $PYTHON_INC $CLIF_INC" --include_paths="$GEN_DIR" "$SRC_DIR/provisioning_sdk/public/python/provisioning_engine.clif"
|
||||
|
||||
# Create virtual Python environment, build extensions, and install onto virtual
|
||||
# environment.
|
||||
cp -a provisioning_sdk/public/python/* test_genfiles/
|
||||
cd test_genfiles
|
||||
python setup.py build_ext --inplace
|
||||
rm -rf "$PYEXT_INSTALL_DIR"
|
||||
virtualenv "$PYEXT_INSTALL_DIR"
|
||||
"$PYEXT_INSTALL_DIR/bin/python" "$PYEXT_INSTALL_DIR/bin/pip" install enum34
|
||||
"$PYEXT_INSTALL_DIR/bin/python" "$PYEXT_INSTALL_DIR/bin/pip" install protobuf
|
||||
"$PYEXT_INSTALL_DIR/bin/python" "$PYEXT_INSTALL_DIR/bin/pip" install cryptography
|
||||
|
||||
"$PYEXT_INSTALL_DIR/bin/python" certificate_type_setup.py build --build-base="$PYEXT_BUILD_DIR" install
|
||||
"$PYEXT_INSTALL_DIR/bin/python" provisioning_status_setup.py build --build-base="$PYEXT_BUILD_DIR" install
|
||||
"$PYEXT_INSTALL_DIR/bin/python" provisioning_session_setup.py build --build-base="$PYEXT_BUILD_DIR" install
|
||||
"$PYEXT_INSTALL_DIR/bin/python" provisioning_engine_setup.py build --build-base="$PYEXT_BUILD_DIR" install
|
||||
|
||||
shopt -s globstar
|
||||
for d in "protos"/**/; do
|
||||
touch -- "$d/__init__.py";
|
||||
done;
|
||||
done
|
||||
|
||||
python init_engine_test.py
|
||||
python set_certificate_status_list_test.py
|
||||
python drm_intermediate_certificate_test.py
|
||||
python engine_generate_certificate_test.py
|
||||
python new_session_test.py
|
||||
"$PYEXT_INSTALL_DIR/bin/python" init_engine_test.py
|
||||
"$PYEXT_INSTALL_DIR/bin/python" set_certificate_status_list_test.py
|
||||
"$PYEXT_INSTALL_DIR/bin/python" drm_intermediate_certificate_test.py
|
||||
"$PYEXT_INSTALL_DIR/bin/python" engine_generate_certificate_test.py
|
||||
"$PYEXT_INSTALL_DIR/bin/python" new_session_test.py
|
||||
|
||||
Reference in New Issue
Block a user