From 4b53d3511395328ddf3a9d0d3bd48efaf1f7e57d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 4 Jan 2017 16:05:46 -0800 Subject: Faster test building: avoid repeated linking --- test/core/end2end/end2end_test.sh | 33 +++++++++++++++++++++++++++++++ test/core/end2end/generate_tests.bzl | 11 ++++++----- test/core/util/BUILD | 6 ++++++ test/core/util/fuzzer_one_entry_runner.sh | 33 +++++++++++++++++++++++++++++++ test/core/util/grpc_fuzzer.bzl | 12 +++++------ 5 files changed, 84 insertions(+), 11 deletions(-) create mode 100755 test/core/end2end/end2end_test.sh create mode 100755 test/core/util/fuzzer_one_entry_runner.sh (limited to 'test/core') diff --git a/test/core/end2end/end2end_test.sh b/test/core/end2end/end2end_test.sh new file mode 100755 index 0000000000..f2309acc88 --- /dev/null +++ b/test/core/end2end/end2end_test.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# Test runner for end2end tests from bazel + +# Copyright 2017, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +$1 $2 diff --git a/test/core/end2end/generate_tests.bzl b/test/core/end2end/generate_tests.bzl index 31f330c6b9..ed1ba3eea9 100755 --- a/test/core/end2end/generate_tests.bzl +++ b/test/core/end2end/generate_tests.bzl @@ -175,8 +175,8 @@ def grpc_end2end_tests(): ) for f, fopt in END2END_FIXTURES.items(): - native.cc_library( - name = '%s_test_lib' % f, + native.cc_binary( + name = '%s_test' % f, srcs = ['fixtures/%s.c' % f], copts = ['-std=c99'], deps = [':end2end_tests'] @@ -184,8 +184,9 @@ def grpc_end2end_tests(): for t, topt in END2END_TESTS.items(): #print(compatible(fopt, topt), f, t, fopt, topt) if not compatible(fopt, topt): continue - native.cc_test( + native.sh_test( name = '%s_test@%s' % (f, t), - args = [t], - deps = [':%s_test_lib' % f], + srcs = ['end2end_test.sh'], + args = ['$(location %s_test)' % f, t], + data = [':%s_test' % f], ) diff --git a/test/core/util/BUILD b/test/core/util/BUILD index e44e4e2105..e50e595d03 100644 --- a/test/core/util/BUILD +++ b/test/core/util/BUILD @@ -50,3 +50,9 @@ cc_library( deps = [":gpr_test_util", "//:grpc"], visibility = ["//test:__subpackages__"], ) + +sh_library( + name = "fuzzer_one_entry_runner", + srcs = ["fuzzer_one_entry_runner.sh"], + visibility = ["//test:__subpackages__"], +) diff --git a/test/core/util/fuzzer_one_entry_runner.sh b/test/core/util/fuzzer_one_entry_runner.sh new file mode 100755 index 0000000000..a0558a9c09 --- /dev/null +++ b/test/core/util/fuzzer_one_entry_runner.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# Test runner for fuzzer tests from bazel + +# Copyright 2017, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +$1 $2 diff --git a/test/core/util/grpc_fuzzer.bzl b/test/core/util/grpc_fuzzer.bzl index 3ec9e4e485..2f552a9fdb 100644 --- a/test/core/util/grpc_fuzzer.bzl +++ b/test/core/util/grpc_fuzzer.bzl @@ -28,16 +28,16 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. def grpc_fuzzer(name, corpus, srcs = [], deps = [], **kwargs): - native.cc_library( - name = "%s/one_entry" % name, + native.cc_binary( + name = '%s/one_entry.bin' % name, srcs = srcs, deps = deps + ["//test/core/util:one_corpus_entry_fuzzer"], **kwargs ) for entry in native.glob(['%s/*' % corpus]): - native.cc_test( + native.sh_test( name = '%s/one_entry/%s' % (name, entry), - deps = [':%s/one_entry' % name], - args = ['$(location %s)' % entry], - data = [entry], + data = [':%s/one_entry.bin' % name, entry], + srcs = ['//test/core/util:fuzzer_one_entry_runner'], + args = ['$(location :%s/one_entry.bin)' % name, '$(location %s)' % entry] ) -- cgit v1.2.3