aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/tools')
-rwxr-xr-xtensorflow/tools/ci_build/builds/docker_test.sh2
-rwxr-xr-xtensorflow/tools/ci_build/builds/pip.sh6
-rwxr-xr-xtensorflow/tools/ci_build/builds/run_pip_tests.sh131
-rwxr-xr-xtensorflow/tools/ci_build/builds/test_installation.sh603
-rw-r--r--tensorflow/tools/common/BUILD2
-rw-r--r--tensorflow/tools/dist_test/server/BUILD2
-rw-r--r--tensorflow/tools/docs/BUILD2
-rw-r--r--tensorflow/tools/quantization/BUILD2
-rw-r--r--tensorflow/tools/test/BUILD1
9 files changed, 144 insertions, 607 deletions
diff --git a/tensorflow/tools/ci_build/builds/docker_test.sh b/tensorflow/tools/ci_build/builds/docker_test.sh
index ee004eb46c..e337ea4b05 100755
--- a/tensorflow/tools/ci_build/builds/docker_test.sh
+++ b/tensorflow/tools/ci_build/builds/docker_test.sh
@@ -114,7 +114,7 @@ fi
docker run -v ${BASE_DIR}:/tensorflow-src -w /tensorflow-src \
${GPU_EXTRA_PARAMS} \
"${DOCKER_IMG_TAG}" \
-/bin/bash -c "tensorflow/tools/ci_build/builds/test_installation.sh && "\
+/bin/bash -c "tensorflow/tools/ci_build/builds/run_pip_tests.sh && "\
"tensorflow/tools/ci_build/builds/test_tutorials.sh && "\
"tensorflow/tools/ci_bukld/builds/integration_tests.sh"
diff --git a/tensorflow/tools/ci_build/builds/pip.sh b/tensorflow/tools/ci_build/builds/pip.sh
index 1e55ad0124..5527feee34 100755
--- a/tensorflow/tools/ci_build/builds/pip.sh
+++ b/tensorflow/tools/ci_build/builds/pip.sh
@@ -30,7 +30,7 @@
# script to perform bazel clean prior to main build and test steps.
#
# TF_BUILD_INSTALL_EXTRA_PIP_PACKAGES overrides the default extra pip packages
-# to be installed in virtualenv before test_installation.sh is called. Multiple
+# to be installed in virtualenv before run_pip_tests.sh is called. Multiple
# pakcage names are separated with spaces.
#
# If NO_TEST_ON_INSTALL has any non-empty and non-0 value, the test-on-install
@@ -268,8 +268,8 @@ if [[ ! -z "${NO_TEST_ON_INSTALL}" ]] &&
echo "NO_TEST_ON_INSTALL=${NO_TEST_ON_INSTALL}:"
echo " Skipping ALL Python unit tests on install"
else
- # Call test_installation.sh to perform test-on-install
- "${SCRIPT_DIR}/test_installation.sh" --virtualenv ${GPU_FLAG} ${MAC_FLAG} ||
+ # Call run_pip_tests.sh to perform test-on-install
+ "${SCRIPT_DIR}/run_pip_tests.sh" --virtualenv ${GPU_FLAG} ${MAC_FLAG} ||
die "PIP tests-on-install FAILED"
fi
diff --git a/tensorflow/tools/ci_build/builds/run_pip_tests.sh b/tensorflow/tools/ci_build/builds/run_pip_tests.sh
new file mode 100755
index 0000000000..be076cd4c0
--- /dev/null
+++ b/tensorflow/tools/ci_build/builds/run_pip_tests.sh
@@ -0,0 +1,131 @@
+#!/bin/bash
+# Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ==============================================================================
+#
+# Run the python unit tests from the source code on the pip installation.
+#
+# Usage:
+# run_pip_tests.sh [--virtualenv] [--gpu] [--mac]
+#
+# If the flag --virtualenv is set, the script will use "python" as the Python
+# binary path. Otherwise, it will use tools/python_bin_path.sh to determine
+# the Python binary path.
+#
+# The --gpu flag informs the script that this is a GPU build, so that the
+# appropriate test blacklists can be applied accordingly.
+#
+# The --mac flag informs the script that this is running on mac. Mac does not
+# have flock, so we should skip using parallel_gpu_execute on mac.
+#
+# TF_BUILD_APPEND_ARGUMENTS:
+# Additional command line arguments for the bazel,
+# pip.sh or android.sh command
+
+# Script directory
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "${SCRIPT_DIR}/builds_common.sh"
+
+# Process input arguments
+IS_VIRTUALENV=0
+IS_GPU=0
+IS_MAC=0
+while true; do
+ if [[ "$1" == "--virtualenv" ]]; then
+ IS_VIRTUALENV=1
+ elif [[ "$1" == "--gpu" ]]; then
+ IS_GPU=1
+ elif [[ "$1" == "--mac" ]]; then
+ IS_MAC=1
+ fi
+ shift
+
+ if [[ -z "$1" ]]; then
+ break
+ fi
+done
+
+TF_GPU_COUNT=${TF_GPU_COUNT:-8}
+
+# PIP tests should have a "different" path. Different than the one we place
+# virtualenv, because we are deleting and recreating it here.
+PIP_TEST_PREFIX=bazel_pip
+PIP_TEST_ROOT=$(pwd)/${PIP_TEST_PREFIX}
+rm -rf $PIP_TEST_ROOT
+mkdir -p $PIP_TEST_ROOT
+ln -s $(pwd)/tensorflow ${PIP_TEST_ROOT}/tensorflow
+
+# Do not run tests with "no_pip" tag. If running GPU tests, also do not run
+# tests with no_pip_gpu tag.
+PIP_TEST_FILTER_TAG="-no_pip"
+if [[ ${IS_GPU} == "1" ]]; then
+ PIP_TEST_FILTER_TAG="-no_pip_gpu,${PIP_TEST_FILTER_TAG}"
+fi
+
+# Bazel flags we need for all tests:
+# define=no_tensorflow_py_deps=true, to skip all test dependencies.
+# test_lang_filters=py only py tests for pip package testing
+# TF_BUILD_APPEND_ARGUMENTS any user supplied args.
+BAZEL_FLAGS="--define=no_tensorflow_py_deps=true --test_lang_filters=py \
+ --build_tests_only -k --test_tag_filters=${PIP_TEST_FILTER_TAG} \
+ --test_timeout 300,450,1200,3600 ${TF_BUILD_APPEND_ARGUMENTS}"
+
+BAZEL_TEST_TARGETS="//${PIP_TEST_PREFIX}/tensorflow/contrib/... \
+ //${PIP_TEST_PREFIX}/tensorflow/python/... \
+ //${PIP_TEST_PREFIX}/tensorflow/tensorboard/..."
+
+# Run configure again, we might be using a different python path, due to
+# virtualenv.
+export TF_NEED_GCP=0
+export TF_NEED_HDFS=0
+export TF_ENABLE_XLA=${TF_BUILD_ENABLE_XLA:-0}
+
+# Obtain the path to Python binary
+if [[ ${IS_VIRTUALENV} == "1" ]]; then
+ PYTHON_BIN_PATH="$(which python)"
+else
+ source tools/python_bin_path.sh
+ # Assume: PYTHON_BIN_PATH is exported by the script above
+fi
+
+export TF_NEED_CUDA=$IS_GPU
+yes "" | ./configure
+
+# Figure out how many concurrent tests we can run and do run the tests.
+if [[ $IS_GPU == 1 ]]; then
+ # Number of test threads is the number of GPU cards available.
+ if [[ $IS_MAC == 1 ]]; then
+ PAR_TEST_JOBS=1
+ else
+ PAR_TEST_JOBS=$TF_GPU_COUNT
+ fi
+
+ # Actually run the tests.
+ bazel test ${BAZEL_FLAGS} --local_test_jobs=${PAR_TEST_JOBS} \
+ --run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute \
+ -- ${BAZEL_TEST_TARGETS}
+
+else
+ # Number of test threads is the number of physical CPUs.
+ if [[ $IS_MAC == 1 ]]; then
+ PAR_TEST_JOBS=$(sysctl -n hw.ncpu)
+ else
+ PAR_TEST_JOBS=$(grep -c ^processor /proc/cpuinfo)
+ fi
+
+ # Actually run the tests.
+ bazel test ${BAZEL_FLAGS} --local_test_jobs=${PAR_TEST_JOBS} \
+ -- ${BAZEL_TEST_TARGETS}
+fi
diff --git a/tensorflow/tools/ci_build/builds/test_installation.sh b/tensorflow/tools/ci_build/builds/test_installation.sh
deleted file mode 100755
index eb64fbcf18..0000000000
--- a/tensorflow/tools/ci_build/builds/test_installation.sh
+++ /dev/null
@@ -1,603 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2016 The TensorFlow Authors. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ==============================================================================
-#
-# Build the Python PIP installation package for TensorFlow
-# and run the Python unit tests from the source code on the installation
-#
-# Usage:
-# test_installation.sh [--virtualenv] [--gpu] [--mac]
-#
-# If the flag --virtualenv is set, the script will use "python" as the Python
-# binary path. Otherwise, it will use tools/python_bin_path.sh to determine
-# the Python binary path.
-#
-# The --gpu flag informs the script that this is a GPU build, so that the
-# appropriate test blacklists can be applied accordingly.
-#
-# The --mac flag informs the script that this is running on mac. Mac does not
-# have flock, so we should skip using parallel_gpu_execute on mac.
-#
-# When executing the Python unit tests, the script obeys the shell
-# variables: PY_TEST_WHITELIST, PY_TEST_BLACKLIST, PY_TEST_GPU_BLACKLIST,
-#
-# To select only a subset of the Python tests to run, set the environment
-# variable PY_TEST_WHITELIST, e.g.,
-# PY_TEST_WHITELIST="tensorflow/python/kernel_tests/shape_ops_test.py"
-# Separate the tests with a colon (:). Leave this environment variable empty
-# to disable the whitelist.
-#
-# You can also ignore a set of the tests by using the environment variable
-# PY_TEST_BLACKLIST. For example, you can include in PY_TEST_BLACKLIST the
-# tests that depend on Python modules in TensorFlow source that are not
-# exported publicly.
-#
-# In addition, you can put blacklist for only GPU build inthe environment
-# variable PY_TEST_GPU_BLACKLIST.
-#
-# TF_BUILD_BAZEL_CLEAN, if set to any non-empty and non-0 value, directs the
-# script to perform bazel clean prior to main build and test steps.
-#
-# TF_GPU_COUNT, Set the number of GPUs in the system. We run only this many
-# concurrent tests when running GPU tests.
-#
-# TF_BUILD_EXTRA_EXCLUSIVE_INSTALL_TESTS, add to the default list of
-# Python unit tests to run in exclusive mode (i.e., not concurrently with
-# other tests), separated with colons
-#
-# TF_BUILD_FILTER_INSTALL_TESTS_BY_TAG: If set to a non-empty string
-# (e.g., "local"), will filter the Python install-tests by that string as
-# bazel tags. Multiple filter tags can be used. Both the inclusive filtering
-# mode and the exclusive filtering mode can be used. For example:
-#
-# TF_BUILD_FILTER_INSTALL_TESTS_BY_TAG="local,-manual"
-#
-# will let the script run the Python unit tests that have the tag "local"
-# and do not have the tag "manual". The "-" marks the exclusive filtering
-# mode. The inclusive mode is the default. Use commas to separate the tags.
-#
-# If the environmental variable NO_TEST_ON_INSTALL is set to any non-empty
-# value, the script will exit after the pip install step.
-
-# =============================================================================
-# Test blacklist: General
-#
-# tensorflow/python/framework/ops_test.py
-# depends on depends on "test_ops", which is defined in a C++ file wrapped as
-# a .py file through the Bazel rule “tf_gen_ops_wrapper_py”.
-# tensorflow/util/protobuf/compare_test.py:
-# depends on compare_test_pb2 defined outside Python
-# tensorflow/python/framework/device_test.py:
-# depends on CheckValid() and ToString(), both defined externally
-# tensorflow/python/framework/file_system_test.py:
-# depends on having the .so which is not shipped in the pip package.
-# tensorflow/contrib/quantization/*:
-# These depend on an .so mechanism that's not shipped in the pip package.
-# tensorflow/python/platform/default/*_test.py:
-# These are obsolete and replaced by corresponding files in python/platform.
-# They will be removed in the future.
-
-PY_TEST_BLACKLIST="${PY_TEST_BLACKLIST}:"\
-"tensorflow/python/framework/ops_test.py:"\
-"tensorflow/python/util/protobuf/compare_test.py:"\
-"tensorflow/python/framework/device_test.py:"\
-"tensorflow/python/framework/file_system_test.py:"\
-"tensorflow/contrib/quantization/python/dequantize_op_test.py:"\
-"tensorflow/contrib/quantization/python/quantized_conv_ops_test.py:"\
-"tensorflow/contrib/quantization/tools/quantize_graph_test.py:"\
-"tensorflow/contrib/session_bundle/bundle_shim_test.py:"\
-"tensorflow/contrib/session_bundle/exporter_test.py:"\
-"tensorflow/contrib/session_bundle/session_bundle_test.py:"\
-"tensorflow/python/platform/default/_resource_loader_test.py:"\
-"tensorflow/python/platform/default/flags_test.py:"\
-"tensorflow/python/platform/default/logging_test.py:"\
-"tensorflow/python/saved_model/saved_model_test.py:"\
-"tensorflow/contrib/learn/nonlinear_test.py:"\
-"tensorflow/contrib/distributions/python/kernel_tests/conditional_distribution_test.py:"\
-"tensorflow/contrib/distributions/python/kernel_tests/conditional_transformed_distribution_test.py:"
-
-# Test blacklist: GPU-only
-PY_TEST_GPU_BLACKLIST="${PY_TEST_GPU_BLACKLIST}:"\
-"tensorflow/python/client/session_test.py:"\
-"tensorflow/python/framework/function_test.py:"\
-"tensorflow/contrib/integrate/python/ops/odes_test.py:"\
-"tensorflow/contrib/tensor_forest/python/kernel_tests/scatter_add_ndim_op_test.py"
-
-# Tests that should be run in the exclusive mode (i.e., not parallel with
-# other tests)
-PY_TEST_EXCLUSIVE_LIST=""
-
-# Append custom list of exclusive tests
-if [[ ! -z "${TF_BUILD_EXTRA_EXCLUSIVE_INSTALL_TESTS}" ]]; then
- PY_TEST_EXCLUSIVE_LIST="${PY_TEST_EXCLUSIVE_LIST}:"\
-"${TF_BUILD_EXTRA_EXCLUSIVE_INSTALL_TESTS}"
-fi
-
-# =============================================================================
-
-echo "PY_TEST_WHITELIST: ${PY_TEST_WHITELIST}"
-echo "PY_TEST_BLACKLIST: ${PY_TEST_BLACKLIST}"
-echo "PY_TEST_GPU_BLACKLIST: ${PY_TEST_GPU_BLACKLIST}"
-
-
-# Script directory
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-source "${SCRIPT_DIR}/builds_common.sh"
-
-TF_GPU_COUNT=${TF_GPU_COUNT:-8}
-
-# Process input arguments
-IS_VIRTUALENV=0
-IS_GPU=0
-IS_MAC=0
-while true; do
- if [[ "$1" == "--virtualenv" ]]; then
- IS_VIRTUALENV=1
- elif [[ "$1" == "--gpu" ]]; then
- IS_GPU=1
- elif [[ "$1" == "--mac" ]]; then
- IS_MAC=1
- fi
- shift
-
- if [[ -z "$1" ]]; then
- break
- fi
-done
-
-# Obtain the path to Python binary
-if [[ ${IS_VIRTUALENV} == "1" ]]; then
- PYTHON_BIN_PATH="$(which python)"
-else
- source tools/python_bin_path.sh
- # Assume: PYTHON_BIN_PATH is exported by the script above
-fi
-
-# Obtain the path to head/ghead binary (for log file printing)
-HEAD_BIN="ghead"
-if [[ -z $(which "${HEAD_BIN}") ]]; then
- # This is not Mac (which uses coreutils/ghead), use head.
- HEAD_BIN="head"
- if [[ -z $(which "${HEAD_BIN}") ]]; then
- die "Unable to obtain path to head or ghead"
- fi
-fi
-
-if [[ -z "${PYTHON_BIN_PATH}" ]]; then
- die "PYTHON_BIN_PATH was not provided. If this is not virtualenv, "\
-"did you run configure?"
-fi
-
-# Append GPU-only test blacklist
-if [[ ${IS_GPU} == "1" ]]; then
- PY_TEST_BLACKLIST="${PY_TEST_BLACKLIST}:${PY_TEST_GPU_BLACKLIST}"
-fi
-
-# Determine the major and minor versions of Python being used (e.g., 2.7)
-# This info will be useful for determining the directory of the local pip
-# installation of Python
-PY_MAJOR_MINOR_VER=$(${PYTHON_BIN_PATH} -V 2>&1 | awk '{print $NF}' | cut -d. -f-2)
-
-echo "Python binary path to be used in PIP install-test: ${PYTHON_BIN_PATH} "\
-"(Major.Minor version: ${PY_MAJOR_MINOR_VER})"
-
-# Avoid permission issues outside container
-umask 000
-
-# Directory from which the unit-test files will be run
-PY_TEST_DIR_REL="pip_test/tests"
-PY_TEST_DIR=$(realpath ${PY_TEST_DIR_REL}) # Get absolute path
-rm -rf ${PY_TEST_DIR} && mkdir -p ${PY_TEST_DIR}
-
-# Create test log directory
-PY_TEST_LOG_DIR_REL=${PY_TEST_DIR_REL}/logs
-PY_TEST_LOG_DIR=$(realpath ${PY_TEST_LOG_DIR_REL}) # Absolute path
-
-mkdir ${PY_TEST_LOG_DIR}
-
-# Copy source files that are required by the tests but are not included in the
-# PIP package
-
-# Look for local Python library directory
-# pushd/popd avoids importing TensorFlow from the source directory.
-pushd /tmp > /dev/null
-TF_INSTALL_PATH=$(dirname \
- $("${PYTHON_BIN_PATH}" -c "import tensorflow as tf; print(tf.__file__)"))
-popd > /dev/null
-
-if [[ -z ${TF_INSTALL_PATH} ]]; then
- die "Failed to find path where TensorFlow is installed."
-else
- echo "Found TensorFlow install path: ${TF_INSTALL_PATH}"
-fi
-
-echo "Copying some source directories required by Python unit tests but "\
-"not included in install to TensorFlow install path: ${TF_INSTALL_PATH}"
-
-# Files for tensorflow.python.tools
-rm -rf ${TF_INSTALL_PATH}/python/tools
-cp -r tensorflow/python/tools \
- ${TF_INSTALL_PATH}/python/tools
-touch ${TF_INSTALL_PATH}/python/tools/__init__.py # Make module visible
-
-# Files for tensorflow.examples
-rm -rf ${TF_INSTALL_PATH}/examples/image_retraining
-mkdir -p ${TF_INSTALL_PATH}/examples/image_retraining
-cp -r tensorflow/examples/image_retraining/retrain.py \
- ${TF_INSTALL_PATH}/examples/image_retraining/retrain.py
-touch ${TF_INSTALL_PATH}/examples/__init__.py
-touch ${TF_INSTALL_PATH}/examples/image_retraining/__init__.py
-
-echo "Copying additional files required by tests to working directory "\
-"for test: ${PY_TEST_DIR}"
-
-# Image files required by some tests, e.g., images_ops_test.py
-
-mkdir -p ${PY_TEST_DIR}/tensorflow/core/lib
-rm -rf ${PY_TEST_DIR}/tensorflow/core/lib/jpeg
-cp -r tensorflow/core/lib/jpeg ${PY_TEST_DIR}/tensorflow/core/lib
-rm -rf ${PY_TEST_DIR}/tensorflow/core/lib/png
-cp -r tensorflow/core/lib/png ${PY_TEST_DIR}/tensorflow/core/lib
-rm -rf ${PY_TEST_DIR}/tensorflow/core/lib/gif
-cp -r tensorflow/core/lib/gif ${PY_TEST_DIR}/tensorflow/core/lib
-
-# Copy test data from tensorflow/contrib/ffmpeg
-
-mkdir -p ${PY_TEST_DIR}/tensorflow/contrib/ffmpeg
-rm -rf ${PY_TEST_DIR}/tensorflow/contrib/ffmpeg/testdata
-cp -r tensorflow/contrib/ffmpeg/testdata ${PY_TEST_DIR}
-
-# Run tests
-DIR0=$(pwd)
-ALL_PY_TESTS_0=$(find tensorflow/{contrib,examples,python,tensorboard} \
- -type f \( -name "*_test.py" -o -name "test_*.py" \) | sort)
-
-
-# Subroutine for filtering test file names by a bazel tag.
-filter_tests_by_bazel_tag() {
- # Usage: filter_tests_by_bazel_tag (--inclusive | --exclusive)
- # <BAZEL_TAG> <INPUT_TESTS>
- #
- # E.g., filter_tests_by_bazel_tag --inclusive "local"
- # "dir1/test1.py dir2/test2.py"
- #
- # Use the flag --inclusive so that only the tests that have the tag will be
- # included in the returned string.
- # Use the flag --exclusive so that the returned string will consist of only
- # the tests that do not have the tag.
- # INPUT_TESTS are the name of the input Python unit test files, seperated by
- # spaces.
- #
- # The output string (through stdout) is: OUTPUT_TESTS | DISCARDED_TESTS
- # That is: a list of tests that passed the filter, followed by " | ",
- # followed by a list of tests that are discarded
-
- FILTER_MODE=$1
- TAG=$2
- INPUT_TESTS=$3
-
- # Input sanity checks
- if [[ "${FILTER_MODE}" != "--inclusive" ]] &&
- [[ "${FILTER_MODE}" != "--exclusive" ]]; then
- echo "ERROR: Unrecognized filter mode: ${FILTER_MODE}"
- exit 1
- fi
- if [[ -z "${TAG}" ]]; then
- echo "ERROR: Bazal tag is not supplied"
- exit 1
- fi
- if [[ -z "${INPUT_TESTS}" ]]; then
- echo "ERROR: INPUT_TESTS is not supplied"
- exit 1
- fi
-
- # Check bazel on path
- if [[ -z $(which bazel) ]]; then
- echo "ERROR: bazel is not on path"
- exit 1
- fi
-
- # Get all bazel targets that have the specified tag
- BAZEL_TARGETS=\
-$(bazel query "kind(py_test, attr(tags, "${TAG}", //tensorflow/...))" | sort)
-
- TARGET_ALIASES=":"
- for TARGET in ${BAZEL_TARGETS}; do
- # Transform, e.g., //tensorflow/python/kernel_tests:xent_op_test -->
- # python-xent_op_test
- # to be compared with the transformed strings from the Python unit test
- # file names.
- TARGET_1=$(echo "${TARGET}" | sed "s/:/ /g")
- TARGET_PATH_1=$(echo "${TARGET_1}" | sed "s/\/\// /g" | sed "s/\// /g" \
- | awk '{print $2}')
- TARGET_BASE_NAME=$(echo "${TARGET_1}" | awk '{print $NF}')
- TARGET_ALIAS="${TARGET_PATH_1}-${TARGET_BASE_NAME}"
-
- TARGET_ALIASES="${TARGET_ALIASES}${TARGET_ALIAS}:"
- done
- TARGET_ALIASES="${TARGET_ALIASES}:"
-
- # Filter the list of tests obtained from listing files with the bazel query
- # results.
- TESTS_PASSED_FILTER=""
- TESTS_BLOCKED_BY_FILTER=""
- for PY_TEST in ${INPUT_TESTS}; do
- # Transform, e.g., tensorflow/python/kernel_tests/xent_op_test.py -->
- # python-xent_op_test
- PY_TEST_PATH_1=$(echo "${PY_TEST}" | sed "s/\// /g" | awk '{print $2}')
- PY_TEST_BASE_NAME=$(echo "${PY_TEST}" | sed "s/\// /g" \
- | awk '{print $NF}' | sed "s/\.py//g")
- PY_TEST_ALIAS="${PY_TEST_PATH_1}-${PY_TEST_BASE_NAME}"
-
- TO_INCLUDE=0
- if [[ "${TARGET_ALIASES}" == *"${PY_TEST_ALIAS}"* ]] && \
- [[ "${FILTER_MODE}" == "--inclusive" ]]; then
- TO_INCLUDE=1
- elif [[ "${TARGET_ALIASES}" != *"${PY_TEST_ALIAS}"* ]] && \
- [[ "${FILTER_MODE}" == "--exclusive" ]]; then
- TO_INCLUDE=1
- fi
-
- if [[ ${TO_INCLUDE} == 1 ]]; then
- TESTS_PASSED_FILTER="${TESTS_PASSED_FILTER} ${PY_TEST}"
- else
- TESTS_BLOCKED_BY_FILTER="${TESTS_BLOCKED_BY_FILTER} ${PY_TEST}"
- fi
- done
-
- echo "${TESTS_PASSED_FILTER} | ${TESTS_BLOCKED_BY_FILTER}"
-}
-
-
-if [[ ${TF_BUILD_FILTER_INSTALL_TESTS_BY_TAG} != "" ]]; then
- # Iteratively apply the filter tags
- TAGS=(${TF_BUILD_FILTER_INSTALL_TESTS_BY_TAG//,/ })
- for TAG in ${TAGS[@]}; do
- if [[ ${TAG} == "-"* ]]; then
- MODE="--exclusive"
- TAG_1=$(echo ${TAG} | sed 's/-//')
- else
- MODE="--inclusive"
- TAG_1=${TAG}
- fi
-
- FILTER_OUTPUT=$(filter_tests_by_bazel_tag ${MODE} \
- "${TAG_1}" "${ALL_PY_TESTS_0}")
- ALL_PY_TESTS_0=$(echo "${FILTER_OUTPUT}" | cut -d \| -f 1)
- DISCARDED_TESTS=$(echo "${FILTER_OUTPUT}" | cut -d \| -f 2)
- N_DISCARDED=$(echo "${DISCARDED_TESTS}" | wc -w)
-
- echo ""
- echo "Skipping ${N_DISCARDED} test(s) due to filter tag \"${TAG}\":"
- echo "${DISCARDED_TESTS}"
- echo ""
- done
-fi
-
-# Move the exclusive tests to the back of the list
-EXCLUSIVE_LIST="$(echo "${PY_TEST_EXCLUSIVE_LIST}" | sed -e 's/:/ /g')"
-
-ALL_PY_TESTS=""
-for TEST in ${ALL_PY_TESTS_0}; do
- if [[ ! ${PY_TEST_EXCLUSIVE_LIST} == *"${TEST}"* ]]; then
- ALL_PY_TESTS="${ALL_PY_TESTS} ${TEST}"
- fi
-done
-
-# Number of parallel (non-exclusive) tests
-N_PAR_TESTS=$(echo ${ALL_PY_TESTS} | wc -w)
-echo "Number of non-exclusive tests: ${N_PAR_TESTS}"
-
-for TEST in ${EXCLUSIVE_LIST}; do
- ALL_PY_TESTS="${ALL_PY_TESTS} ${TEST}"
-done
-
-PY_TEST_COUNT=$(echo ${ALL_PY_TESTS} | wc -w)
-
-if [[ ${PY_TEST_COUNT} -eq 0 ]]; then
- die "ERROR: Cannot find any tensorflow Python unit tests to run on install"
-fi
-
-# Iterate through all the Python unit test files using the installation
-TEST_COUNTER=0
-PASS_COUNTER=0
-FAIL_COUNTER=0
-SKIP_COUNTER=0
-FAILED_TESTS=""
-FAILED_TEST_LOGS=""
-
-if [[ "${IS_GPU}" == "1" ]]; then
- if [[ "${IS_MAC}" == "1" ]]; then
- N_JOBS=1
- else
- N_JOBS=$TF_GPU_COUNT
- fi
-else
- N_JOBS=$(grep -c ^processor /proc/cpuinfo)
- if [[ -z ${N_JOBS} ]]; then
- # Try the Mac way of getting number of CPUs
- N_JOBS=$(sysctl -n hw.ncpu)
- fi
-
- # If still cannot determine the number of CPUs, pick 8.
- if [[ -z ${N_JOBS} ]]; then
- N_JOBS=8
- echo "Cannot determine the number of processors"
- echo "Using default concurrent job counter ${N_JOBS}"
- fi
-fi
-
-echo "Running Python tests-on-install with ${N_JOBS} concurrent jobs..."
-
-ALL_PY_TESTS=(${ALL_PY_TESTS})
-while true; do
- TEST_LOGS=""
- TEST_INDICES=""
- TEST_FILE_PATHS=""
- TEST_BASENAMES=""
-
- ITER_COUNTER=0
- while true; do
- # Break if the end is reached
- if [[ "${TEST_COUNTER}" -ge "${PY_TEST_COUNT}" ]]; then
- break;
- fi
-
- # for TEST_FILE_PATH in ${ALL_PY_TESTS}; do
- TEST_FILE_PATH=${ALL_PY_TESTS[TEST_COUNTER]}
-
- ((TEST_COUNTER++))
- ((ITER_COUNTER++))
-
- # If PY_TEST_WHITELIST is not empty, only the white-listed tests will be run
- if [[ ! -z ${PY_TEST_WHITELIST} ]] && \
- [[ ! ${PY_TEST_WHITELIST} == *"${TEST_FILE_PATH}"* ]]; then
- ((SKIP_COUNTER++))
- echo "Non-whitelisted test SKIPPED: ${TEST_FILE_PATH}"
-
- continue
- fi
-
- # If the test is in the black list, skip it
- if [[ ${PY_TEST_BLACKLIST} == *"${TEST_FILE_PATH}"* ]]; then
- ((SKIP_COUNTER++))
- echo "Blacklisted test SKIPPED: ${TEST_FILE_PATH}"
- continue
- fi
-
- TEST_INDICES="${TEST_INDICES} ${TEST_COUNTER}"
- TEST_FILE_PATHS="${TEST_FILE_PATHS} ${TEST_FILE_PATH}"
-
- # Copy to a separate directory to guard against the possibility of picking
- # up modules in the source directory
- cp ${TEST_FILE_PATH} ${PY_TEST_DIR}/
-
- TEST_BASENAME=$(basename "${TEST_FILE_PATH}")
- TEST_BASENAMES="${TEST_BASENAMES} ${TEST_BASENAME}"
-
- # Relative path of the test log. Use long path in case there are duplicate
- # file names in the Python tests
- TEST_LOG_REL="${PY_TEST_LOG_DIR_REL}/${TEST_FILE_PATH}.log"
- mkdir -p $(dirname ${TEST_LOG_REL}) # Create directory for log
-
- TEST_LOG=$(realpath ${TEST_LOG_REL}) # Absolute path
- TEST_LOGS="${TEST_LOGS} ${TEST_LOG}"
-
- # Launch test asynchronously
- if [[ "${IS_GPU}" == "1" ]] && [[ "${IS_MAC}" == "0" ]]; then
- # Only use this script without mac. This uses flock, which is not
- # available in MacOSX.
- "${SCRIPT_DIR}/../gpu_build/parallel_gpu_execute.sh" \
- "${SCRIPT_DIR}/py_test_delegate.sh" \
- "${PYTHON_BIN_PATH}" "${PY_TEST_DIR}/${TEST_BASENAME}" "${TEST_LOG}" &
- else
- "${SCRIPT_DIR}/py_test_delegate.sh" \
- "${PYTHON_BIN_PATH}" "${PY_TEST_DIR}/${TEST_BASENAME}" "${TEST_LOG}" &
- fi
-
- if [[ "${TEST_COUNTER}" -ge "${N_PAR_TESTS}" ]]; then
- # Run in exclusive mode
- if [[ "${TEST_COUNTER}" -gt "${N_PAR_TESTS}" ]]; then
- echo "Run test exclusively: ${PY_TEST_DIR}/${TEST_BASENAME}"
- fi
- break
- fi
-
- if [[ "${ITER_COUNTER}" -ge "${N_JOBS}" ]] ||
- [[ "${TEST_COUNTER}" -ge "${PY_TEST_COUNT}" ]]; then
- break
- fi
-
- done
-
- # Wait for all processes to complete
- wait
-
- TEST_LOGS=(${TEST_LOGS})
- TEST_FILE_PATHS=(${TEST_FILE_PATHS})
- TEST_BASENAMES=(${TEST_BASENAMES})
-
- K=0
- for TEST_INDEX in ${TEST_INDICES}; do
- TEST_FILE_PATH=${TEST_FILE_PATHS[K]}
- TEST_RESULT=$(tail -1 "${TEST_LOGS[K]}" | awk '{print $1}')
- ELAPSED_TIME=$(tail -1 "${TEST_LOGS[K]}" | cut -d' ' -f2-)
-
- PROG_STR="(${TEST_INDEX} / ${PY_TEST_COUNT})"
- # Check for pass or failure status of the test outtput and exit
- if [[ ${TEST_RESULT} -eq 0 ]]; then
- ((PASS_COUNTER++))
-
- echo "${PROG_STR} Python test-on-install PASSED (${ELAPSED_TIME}): ${TEST_FILE_PATH}"
- else
- ((FAIL_COUNTER++))
-
- FAILED_TESTS="${FAILED_TESTS} ${TEST_FILE_PATH}"
- FAILED_TEST_LOGS="${FAILED_TEST_LOGS} ${TEST_LOGS[K]}"
-
- echo "${PROG_STR} Python test-on-install FAILED (${ELAPSED_TIME}): ${TEST_FILE_PATH}"
-
- echo " Log @: ${TEST_LOGS[K]}"
- echo "============== BEGINS failure log content =============="
- "${HEAD_BIN}" --lines=-1 "${TEST_LOGS[K]}"
- echo "============== ENDS failure log content =============="
- echo ""
- fi
- cd ${DIR0}
-
- # Clean up files for this test
- rm -f ${TEST_BASENAMES[K]}
-
- ((K++))
- done
-
- # Stop if the end is reached
- if [[ "${TEST_COUNTER}" -ge "${PY_TEST_COUNT}" ]]; then
- break;
- fi
-done
-
-# Clean up files copied for Python unit tests:
-rm -rf ${TF_INSTALL_PATH}/python/tools
-rm -rf ${TF_INSTALL_PATH}/examples/image_retraining
-rm -rf ${PY_TEST_DIR}/tensorflow/core/lib/jpeg
-rm -rf ${PY_TEST_DIR}/tensorflow/core/lib/png
-rm -rf ${PY_TEST_DIR}/testdata
-
-echo ""
-echo "${PY_TEST_COUNT} Python test(s):" \
- "${PASS_COUNTER} passed;" \
- "${FAIL_COUNTER} failed; " \
- "${SKIP_COUNTER} skipped"
-echo "Test logs directory: ${PY_TEST_LOG_DIR_REL}"
-
-if [[ ${FAIL_COUNTER} -eq 0 ]]; then
- echo ""
- echo "Python test-on-install SUCCEEDED"
-
- exit 0
-else
- echo "FAILED test(s):"
- FAILED_TEST_LOGS=($FAILED_TEST_LOGS)
- FAIL_COUNTER=0
- for TEST_NAME in ${FAILED_TESTS}; do
- echo " ${TEST_NAME} (Log @: ${FAILED_TEST_LOGS[${FAIL_COUNTER}]})"
- ((FAIL_COUNTER++))
- done
-
- echo ""
- echo "Python test-on-install FAILED"
- exit 1
-fi
diff --git a/tensorflow/tools/common/BUILD b/tensorflow/tools/common/BUILD
index 96ae9583d7..c316d362f2 100644
--- a/tensorflow/tools/common/BUILD
+++ b/tensorflow/tools/common/BUILD
@@ -9,6 +9,8 @@ package(
default_visibility = ["//tensorflow:__subpackages__"],
)
+load("//tensorflow:tensorflow.bzl", "py_test")
+
py_library(
name = "public_api",
srcs = ["public_api.py"],
diff --git a/tensorflow/tools/dist_test/server/BUILD b/tensorflow/tools/dist_test/server/BUILD
index 25efc83716..9d008ec9ce 100644
--- a/tensorflow/tools/dist_test/server/BUILD
+++ b/tensorflow/tools/dist_test/server/BUILD
@@ -7,6 +7,8 @@ licenses(["notice"]) # Apache 2.0
exports_files(["LICENSE"])
+load("//tensorflow:tensorflow.bzl", "py_test")
+
py_library(
name = "grpc_tensorflow_server",
srcs = [
diff --git a/tensorflow/tools/docs/BUILD b/tensorflow/tools/docs/BUILD
index a3829482d2..7f85cba251 100644
--- a/tensorflow/tools/docs/BUILD
+++ b/tensorflow/tools/docs/BUILD
@@ -9,6 +9,8 @@ package(
default_visibility = ["//tensorflow:__subpackages__"],
)
+load("//tensorflow:tensorflow.bzl", "py_test")
+
py_binary(
name = "gen_cc_md",
srcs = ["gen_cc_md.py"],
diff --git a/tensorflow/tools/quantization/BUILD b/tensorflow/tools/quantization/BUILD
index e7d0cc73d4..cb41185219 100644
--- a/tensorflow/tools/quantization/BUILD
+++ b/tensorflow/tools/quantization/BUILD
@@ -7,6 +7,8 @@ licenses(["notice"]) # Apache 2.0
exports_files(["LICENSE"])
+load("//tensorflow:tensorflow.bzl", "py_test")
+
py_library(
name = "quantize_graph_lib",
srcs = ["quantize_graph.py"],
diff --git a/tensorflow/tools/test/BUILD b/tensorflow/tools/test/BUILD
index 50acac3014..9367bcd4a3 100644
--- a/tensorflow/tools/test/BUILD
+++ b/tensorflow/tools/test/BUILD
@@ -8,6 +8,7 @@ load(
"tf_cc_logged_benchmark",
"tf_py_logged_benchmark",
)
+load("//tensorflow:tensorflow.bzl", "py_test")
licenses(["notice"]) # Apache 2.0