blob: 79b7d8c4f6cf9b2ae138e4e719c18cfe55fc279c [file] [log] [blame]
#
# Copyright 2019 Google LLC
#
# 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.
package(
default_visibility = [
"//algorithms:__subpackages__",
],
)
cc_library(
name = "algorithm",
hdrs = ["algorithm.h"],
visibility = ["//visibility:public"],
deps = [
":numerical-mechanisms",
":util",
"//base:logging",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
],
)
cc_test(
name = "algorithm_test",
size = "small",
srcs = ["algorithm_test.cc"],
deps = [
":algorithm",
"//base/testing:status_matchers",
"@com_google_absl//absl/status:statusor",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "algorithm-stochastic-dp_test",
timeout = "eternal",
srcs = ["algorithm-stochastic-dp_test.cc"],
shard_count = 16,
deps = [
":approx-bounds",
":bounded-mean",
":bounded-standard-deviation",
":bounded-sum",
":bounded-variance",
":count",
":numerical-mechanisms-testing",
":order-statistics",
":util",
"//testing:sequence",
"//testing:stochastic_tester",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "binary-search",
hdrs = ["binary-search.h"],
deps = [
":algorithm",
":numerical-mechanisms",
"//base:percentile",
"//proto:util-lib",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_cc_differential_privacy//base:status",
],
)
cc_test(
name = "binary-search_test",
size = "small",
srcs = ["binary-search_test.cc"],
deps = [
":algorithm",
":binary-search",
":numerical-mechanisms",
":numerical-mechanisms-testing",
":util",
"//base/testing:status_matchers",
"//proto:util-lib",
"@com_google_absl//absl/random:distributions",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "order-statistics",
hdrs = ["order-statistics.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":binary-search",
":bounded-algorithm",
":numerical-mechanisms",
"//base:percentile",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
],
)
cc_test(
name = "order-statistics_test",
size = "small",
srcs = ["order-statistics_test.cc"],
deps = [
":numerical-mechanisms-testing",
":order-statistics",
":util",
"//base/testing:status_matchers",
"@com_google_absl//absl/random:distributions",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "bounded-sum",
hdrs = ["bounded-sum.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":approx-bounds",
":bounded-algorithm",
":numerical-mechanisms",
":util",
"//base:logging",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
],
)
cc_test(
name = "bounded-sum_test",
size = "small",
srcs = ["bounded-sum_test.cc"],
deps = [
":algorithm",
":approx-bounds",
":bounded-sum",
":numerical-mechanisms",
":numerical-mechanisms-testing",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "bounded-mean",
hdrs = ["bounded-mean.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":approx-bounds",
":bounded-algorithm",
":numerical-mechanisms",
":util",
"//algorithms/internal:bounded-mean-ci",
"//base:logging",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:optional",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
],
)
cc_test(
name = "bounded-mean_test",
size = "small",
srcs = ["bounded-mean_test.cc"],
deps = [
":approx-bounds",
":bounded-mean",
":numerical-mechanisms",
":numerical-mechanisms-testing",
"//base:logging",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "bounded-mean-ci-statistical_test",
size = "medium",
timeout = "long",
srcs = ["bounded-mean-ci-statistical_test.cc"],
deps = [
":approx-bounds",
":bounded-mean",
":numerical-mechanisms",
"//base/testing:status_matchers",
"@com_google_absl//absl/status:statusor",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "bounded-variance",
hdrs = ["bounded-variance.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":approx-bounds",
":bounded-algorithm",
":numerical-mechanisms",
":util",
"//base:logging",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
],
)
cc_test(
name = "bounded-variance_test",
size = "small",
srcs = ["bounded-variance_test.cc"],
deps = [
":approx-bounds",
":bounded-variance",
":numerical-mechanisms",
":numerical-mechanisms-testing",
"//base:logging",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/random:distributions",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "bounded-standard-deviation",
hdrs = ["bounded-standard-deviation.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":approx-bounds",
":bounded-algorithm",
":bounded-variance",
":numerical-mechanisms",
":util",
"//base:logging",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
],
)
cc_test(
name = "bounded-standard-deviation_test",
size = "small",
srcs = ["bounded-standard-deviation_test.cc"],
deps = [
":approx-bounds",
":bounded-standard-deviation",
":distributions",
":numerical-mechanisms-testing",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/random:distributions",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "count",
hdrs = ["count.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":numerical-mechanisms",
":util",
"//base:logging",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
],
)
cc_test(
name = "count_test",
size = "small",
srcs = ["count_test.cc"],
deps = [
":count",
":numerical-mechanisms",
":numerical-mechanisms-testing",
"//base:logging",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:data_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "util",
srcs = ["util.cc"],
hdrs = ["util.h"],
visibility = [
"//algorithms/internal:__pkg__",
"//testing:__pkg__",
],
deps = [
"//base:logging",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_cc_differential_privacy//base:status",
],
)
cc_test(
name = "util_test",
size = "small",
srcs = ["util_test.cc"],
deps = [
":distributions",
":numerical-mechanisms-testing",
":util",
"//base/testing:status_matchers",
"@com_google_absl//absl/status",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "distributions",
srcs = ["distributions.cc"],
hdrs = ["distributions.h"],
visibility = ["//visibility:private"],
deps = [
":rand",
":util",
"//base:logging",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/random",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_cc_differential_privacy//base:status",
],
)
cc_test(
name = "distributions_test",
size = "medium",
srcs = ["distributions_test.cc"],
shard_count = 4,
deps = [
":distributions",
":numerical-mechanisms-testing",
":util",
"//base/testing:status_matchers",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "numerical-mechanisms",
srcs = ["numerical-mechanisms.cc"],
hdrs = ["numerical-mechanisms.h"],
visibility = ["//visibility:public"],
deps = [
":distributions",
":rand",
":util",
"//algorithms/internal:gaussian-stddev-calculator",
"//base:logging",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:optional",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:numerical_mechanism_cc_proto",
],
)
cc_test(
name = "numerical-mechanisms_test",
size = "medium",
srcs = ["numerical-mechanisms_test.cc"],
deps = [
":distributions",
":numerical-mechanisms",
"//base/testing:status_matchers",
"@com_google_absl//absl/status:statusor",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "numerical-mechanisms-testing",
testonly = 1,
hdrs = ["numerical-mechanisms-testing.h"],
visibility = ["//visibility:public"],
deps = [
":distributions",
":numerical-mechanisms",
"//base:logging",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/random",
"@com_google_absl//absl/status:statusor",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_googletest//:gtest",
],
)
cc_test(
name = "numerical-mechanisms-testing_test",
size = "small",
srcs = ["numerical-mechanisms-testing_test.cc"],
deps = [
":numerical-mechanisms-testing",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "approx-bounds",
hdrs = ["approx-bounds.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":numerical-mechanisms",
":util",
"//base:logging",
"//proto:util-lib",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_cc_differential_privacy//base:status",
],
)
cc_test(
name = "approx-bounds_test",
size = "small",
srcs = ["approx-bounds_test.cc"],
deps = [
":approx-bounds",
":numerical-mechanisms",
":numerical-mechanisms-testing",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "bounded-algorithm",
hdrs = ["bounded-algorithm.h"],
deps = [
":algorithm",
":approx-bounds",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/types:optional",
"@com_google_cc_differential_privacy//base:status",
],
)
cc_test(
name = "bounded-algorithm_test",
size = "small",
srcs = ["bounded-algorithm_test.cc"],
deps = [
":algorithm",
":approx-bounds",
":bounded-algorithm",
"//base/testing:status_matchers",
"@com_google_absl//absl/status:statusor",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "rand",
srcs = ["rand.cc"],
hdrs = ["rand.h"],
visibility = [
"//testing:__pkg__",
],
deps = [
"//base:logging",
"@boringssl//:crypto",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/numeric:bits",
"@com_google_absl//absl/synchronization",
],
)
cc_test(
name = "rand_test",
size = "small",
srcs = ["rand_test.cc"],
deps = [
":rand",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "distributions_benchmark_test",
timeout = "long",
srcs = ["distributions_benchmark_test.cc"],
deps = [
":distributions",
"@com_google_absl//absl/strings:str_format",
"@com_google_benchmark//:benchmark_main",
],
)
cc_library(
name = "partition-selection",
hdrs = ["partition-selection.h"],
visibility = ["//visibility:public"],
deps = [
":distributions",
":numerical-mechanisms",
":rand",
":util",
"@com_google_absl//absl/status:statusor",
"@com_google_cc_differential_privacy//base:status",
],
)
cc_test(
name = "partition-selection_test",
srcs = ["partition-selection_test.cc"],
shard_count = 2,
deps = [
":numerical-mechanisms-testing",
":partition-selection",
"@com_google_absl//absl/status:statusor",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "quantile-tree",
hdrs = ["quantile-tree.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":bounded-algorithm",
":numerical-mechanisms",
"//algorithms/internal:count-tree",
"//proto:util-lib",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_cc_differential_privacy//base:status",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_differential_privacy//proto:summary_cc_proto",
],
)
cc_test(
name = "quantile-tree_test",
timeout = "eternal",
srcs = ["quantile-tree_test.cc"],
shard_count = 16,
deps = [
":numerical-mechanisms-testing",
":quantile-tree",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"@com_google_absl//absl/random",
"@com_google_differential_privacy//proto:confidence_interval_cc_proto",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "quantiles",
hdrs = ["quantiles.h"],
visibility = ["//visibility:public"],
deps = [
":algorithm",
":bounded-algorithm",
":quantile-tree",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
],
)
cc_test(
name = "quantiles_test",
srcs = ["quantiles_test.cc"],
deps = [
":numerical-mechanisms-testing",
":quantiles",
"//base/testing:proto_matchers",
"//base/testing:status_matchers",
"@com_google_absl//absl/random",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "gaussian-dp-calculator",
srcs = ["gaussian-dp-calculator.cc"],
hdrs = ["gaussian-dp-calculator.h"],
visibility = [
# This target is not considered to be part of the public API (yet).
"//algorithms:__subpackages__",
],
deps = [
"//algorithms/internal:gaussian-stddev-calculator",
],
)
cc_test(
name = "gaussian-dp-calculator_test",
srcs = ["gaussian-dp-calculator_test.cc"],
deps = [
":gaussian-dp-calculator",
"@com_google_googletest//:gtest_main",
],
)