# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. load("@rules_proto//proto:defs.bzl", "proto_library") load("@rules_cc//cc:defs.bzl", "cc_library", "cc_proto_library", "cc_test") load("@com_grail_bazel_compdb//:defs.bzl", "compilation_database") load("@com_grail_bazel_output_base_util//:defs.bzl", "OUTPUT_BASE") COPTS = [ "-D__STDC_FORMAT_MACROS", "-DBTHREAD_USE_FAST_PTHREAD_MUTEX", "-D__const__=__unused__", "-D_GNU_SOURCE", "-DUSE_SYMBOLIZE", "-DNO_TCMALLOC", "-D__STDC_LIMIT_MACROS", "-D__STDC_CONSTANT_MACROS", "-fPIC", "-Wno-unused-parameter", "-fno-omit-frame-pointer", "-DGFLAGS_NS=google", "-Dprivate=public", "-Dprotected=public", "--include test/sstream_workaround.h", "-DBAZEL_TEST=1", "-DBVAR_NOT_LINK_DEFAULT_VARIABLES", "-DUNIT_TEST", ] + select({ "//bazel/config:brpc_with_glog": ["-DBRPC_WITH_GLOG=1"], "//conditions:default": ["-DBRPC_WITH_GLOG=0"], }) TEST_BUTIL_SOURCES = [ "at_exit_unittest.cc", "atomicops_unittest.cc", "base64_unittest.cc", "big_endian_unittest.cc", "bits_unittest.cc", "hash_tables_unittest.cc", "linked_list_unittest.cc", "mru_cache_unittest.cc", "small_map_unittest.cc", "stack_container_unittest.cc", "cpu_unittest.cc", "crash_logging_unittest.cc", "leak_tracker_unittest.cc", "stack_trace_unittest.cc", "environment_unittest.cc", "file_util_unittest.cc", "dir_reader_posix_unittest.cc", "file_path_unittest.cc", "file_unittest.cc", "scoped_temp_dir_unittest.cc", "guid_unittest.cc", "hash_unittest.cc", "lazy_instance_unittest.cc", "aligned_memory_unittest.cc", "linked_ptr_unittest.cc", "ref_counted_memory_unittest.cc", "ref_counted_unittest.cc", "scoped_ptr_unittest.cc", "scoped_vector_unittest.cc", "singleton_unittest.cc", "weak_ptr_unittest.cc", "observer_list_unittest.cc", "file_descriptor_shuffle_unittest.cc", "rand_util_unittest.cc", "safe_numerics_unittest.cc", "scoped_clear_errno_unittest.cc", "scoped_generic_unittest.cc", "security_unittest.cc", "sha1_unittest.cc", "stl_util_unittest.cc", "nullable_string16_unittest.cc", "safe_sprintf_unittest.cc", "string16_unittest.cc", "stringprintf_unittest.cc", "string_number_conversions_unittest.cc", "string_piece_unittest.cc", "string_split_unittest.cc", "string_tokenizer_unittest.cc", "string_util_unittest.cc", "stringize_macros_unittest.cc", "sys_string_conversions_unittest.cc", "utf_offset_string_conversions_unittest.cc", "utf_string_conversions_unittest.cc", "cancellation_flag_unittest.cc", "condition_variable_unittest.cc", "lock_unittest.cc", "waitable_event_unittest.cc", "type_traits_unittest.cc", "non_thread_safe_unittest.cc", "platform_thread_unittest.cc", "simple_thread_unittest.cc", "thread_checker_unittest.cc", "thread_collision_warner_unittest.cc", "thread_id_name_manager_unittest.cc", "thread_local_storage_unittest.cc", "thread_local_unittest.cc", "watchdog_unittest.cc", "time_unittest.cc", "version_unittest.cc", "logging_unittest.cc", "cacheline_unittest.cpp", "class_name_unittest.cpp", "endpoint_unittest.cpp", "unique_ptr_unittest.cpp", "errno_unittest.cpp", "fd_guard_unittest.cpp", "file_watcher_unittest.cpp", "find_cstr_unittest.cpp", "scoped_lock_unittest.cpp", "status_unittest.cpp", "string_printf_unittest.cpp", "string_splitter_unittest.cpp", "synchronous_event_unittest.cpp", "temp_file_unittest.cpp", "baidu_thread_local_unittest.cpp", "baidu_time_unittest.cpp", "flat_map_unittest.cpp", "crc32c_unittest.cc", "iobuf_unittest.cpp", "object_pool_unittest.cpp", "test_switches.cc", "scoped_locale.cc", "recordio_unittest.cpp", #"popen_unittest.cpp", "bounded_queue_unittest.cc", "butil_unittest_main.cpp", ] + select({ "@bazel_tools//tools/osx:darwin": [], "//conditions:default": [ "test_file_util_linux.cc", "proc_maps_linux_unittest.cc", ], }) proto_library( name = "test_proto", srcs = glob( [ "*.proto", ], exclude = [ "echo.proto", ], ), visibility = ["//visibility:public"], ) cc_proto_library( name = "cc_test_proto", visibility = ["//visibility:public"], deps = [ ":test_proto", ], ) cc_library( name = "sstream_workaround", hdrs = [ "sstream_workaround.h", ], ) cc_test( name = "butil_test", srcs = TEST_BUTIL_SOURCES + [ "scoped_locale.h", "multiprocess_func_list.h", "test_switches.h", ], copts = COPTS, deps = [ ":cc_test_proto", ":sstream_workaround", "//:brpc", "@com_google_googletest//:gtest", ], ) cc_test( name = "bvar_test", srcs = glob( [ "bvar_*_unittest.cpp", ], exclude = [ "bvar_lock_timer_unittest.cpp", "bvar_recorder_unittest.cpp", ], ), copts = COPTS, deps = [ ":sstream_workaround", "//:bvar", "@com_google_googletest//:gtest", ], ) cc_test( name = "bthread_test", srcs = glob( [ "bthread_*_unittest.cpp", ], exclude = [ "bthread_cond_unittest.cpp", "bthread_execution_queue_unittest.cpp", "bthread_dispatcher_unittest.cpp", "bthread_fd_unittest.cpp", "bthread_mutex_unittest.cpp", "bthread_setconcurrency_unittest.cpp", # glog CHECK die with a fatal error "bthread_key_unittest.cpp", ], ), copts = COPTS, deps = [ ":sstream_workaround", "//:brpc", "@com_google_googletest//:gtest", "@com_google_googletest//:gtest_main", ], ) compilation_database( name = "brpc_test_compdb", # Use test profile testonly = True, # OUTPUT_BASE is a dynamic value that will vary for each user workspace. # If you would like your build outputs to be the same across users, then # skip supplying this value, and substitute the default constant value # "__OUTPUT_BASE__" through an external tool like `sed` or `jq` (see # below shell commands for usage). output_base = OUTPUT_BASE, targets = [ "//:brpc", ":bvar_test", ":bthread_test", ":butil_test", ], )