Merge github.com:grpc/grpc into epexinf

pull/12789/head
Craig Tiller 7 years ago
commit 36636a5cd7
  1. 3
      build.yaml
  2. 65
      test/core/debug/stats_test.cc
  3. 5
      tools/run_tests/generated/tests.json
  4. 2
      tools/run_tests/python_utils/filter_pull_request_tests.py
  5. 2
      tools/run_tests/run_tests.py
  6. 3
      tools/run_tests/sanity/check_test_filtering.py

@ -4734,6 +4734,9 @@ targets:
- grpc - grpc
- gpr_test_util - gpr_test_util
- gpr - gpr
exclude_configs:
- tsan
timeout_seconds: 1200
uses_polling: false uses_polling: false
- name: status_test - name: status_test
build: test build: test

@ -20,7 +20,11 @@ extern "C" {
#include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats.h"
} }
#include <mutex>
#include <thread>
#include <grpc/grpc.h> #include <grpc/grpc.h>
#include <grpc/support/cpu.h>
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <gtest/gtest.h> #include <gtest/gtest.h>
@ -79,37 +83,58 @@ static int FindExpectedBucket(int i, int j) {
grpc_stats_histo_bucket_boundaries[i] - 1; grpc_stats_histo_bucket_boundaries[i] - 1;
} }
TEST(StatsTest, IncHistogram) { class HistogramTest : public ::testing::TestWithParam<int> {};
for (int i = 0; i < GRPC_STATS_HISTOGRAM_COUNT; i++) {
std::vector<int> test_values; TEST_P(HistogramTest, IncHistogram) {
for (int j = -1000; const int kHistogram = GetParam();
j < std::vector<std::thread> threads;
grpc_stats_histo_bucket_boundaries[i] int cur_bucket = 0;
[grpc_stats_histo_buckets[i] - 1] + auto run = [kHistogram](const std::vector<int>& test_values,
1000; int expected_bucket) {
j++) { gpr_log(GPR_DEBUG, "expected_bucket:%d nvalues=%" PRIdPTR, expected_bucket,
test_values.push_back(j); test_values.size());
}
std::random_shuffle(test_values.begin(), test_values.end());
if (test_values.size() > 10000) {
test_values.resize(10000);
}
for (auto j : test_values) { for (auto j : test_values) {
Snapshot snapshot; Snapshot snapshot;
int expected_bucket = FindExpectedBucket(i, j);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_stats_inc_histogram[i](&exec_ctx, j); grpc_stats_inc_histogram[kHistogram](&exec_ctx, j);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
auto delta = snapshot.delta(); auto delta = snapshot.delta();
EXPECT_EQ(delta.histograms[grpc_stats_histo_start[i] + expected_bucket], EXPECT_EQ(
1); delta
.histograms[grpc_stats_histo_start[kHistogram] + expected_bucket],
1)
<< "\nhistogram:" << kHistogram
<< "\nexpected_bucket:" << expected_bucket << "\nj:" << j;
} }
};
std::vector<int> test_values;
for (int j = -1000;
j <
grpc_stats_histo_bucket_boundaries[kHistogram]
[grpc_stats_histo_buckets[kHistogram] -
1] +
1000;
j++) {
int expected_bucket = FindExpectedBucket(kHistogram, j);
if (cur_bucket != expected_bucket) {
threads.emplace_back(
[test_values, run, cur_bucket]() { run(test_values, cur_bucket); });
cur_bucket = expected_bucket;
test_values.clear();
}
test_values.push_back(j);
} }
run(test_values, cur_bucket);
for (auto& t : threads) {
t.join();
} }
}
INSTANTIATE_TEST_CASE_P(HistogramTestCases, HistogramTest,
::testing::Range<int>(0, GRPC_STATS_HISTOGRAM_COUNT));
} // namespace testing } // namespace testing
} // namespace grpc } // namespace grpc

@ -4389,7 +4389,9 @@
"windows" "windows"
], ],
"cpu_cost": 1.0, "cpu_cost": 1.0,
"exclude_configs": [], "exclude_configs": [
"tsan"
],
"exclude_iomgrs": [], "exclude_iomgrs": [],
"flaky": false, "flaky": false,
"gtest": true, "gtest": true,
@ -4401,6 +4403,7 @@
"posix", "posix",
"windows" "windows"
], ],
"timeout_seconds": 1200,
"uses_polling": false "uses_polling": false
}, },
{ {

@ -78,7 +78,7 @@ _WHITELIST_DICT = {
'^src/python/': [_PYTHON_TEST_SUITE], '^src/python/': [_PYTHON_TEST_SUITE],
'^src/ruby/': [_RUBY_TEST_SUITE], '^src/ruby/': [_RUBY_TEST_SUITE],
'^templates/': [], '^templates/': [],
'^test/core/': [_CORE_TEST_SUITE], '^test/core/': [_CORE_TEST_SUITE, _CPP_TEST_SUITE],
'^test/cpp/': [_CPP_TEST_SUITE], '^test/cpp/': [_CPP_TEST_SUITE],
'^test/distrib/cpp/': [_CPP_TEST_SUITE], '^test/distrib/cpp/': [_CPP_TEST_SUITE],
'^test/distrib/csharp/': [_CSHARP_TEST_SUITE], '^test/distrib/csharp/': [_CSHARP_TEST_SUITE],

@ -370,7 +370,7 @@ class CLanguage(object):
out.append(self.config.job_spec(cmdline, out.append(self.config.job_spec(cmdline,
shortname='%s %s' % (' '.join(cmdline), shortname_ext), shortname='%s %s' % (' '.join(cmdline), shortname_ext),
cpu_cost=cpu_cost, cpu_cost=cpu_cost,
timeout_seconds=_DEFAULT_TIMEOUT_SECONDS * timeout_scaling, timeout_seconds=target.get('timeout_seconds', _DEFAULT_TIMEOUT_SECONDS) * timeout_scaling,
environ=env)) environ=env))
else: else:
cmdline = [binary] + target['args'] cmdline = [binary] + target['args']

@ -81,7 +81,8 @@ class TestFilteringTest(unittest.TestCase):
self.test_filtering(['src/core/foo.bar'], [_LIST_OF_LANGUAGE_LABELS]) self.test_filtering(['src/core/foo.bar'], [_LIST_OF_LANGUAGE_LABELS])
# Testing individual languages # Testing individual languages
self.test_filtering(['test/core/foo.bar'], [label for label in _LIST_OF_LANGUAGE_LABELS if label not in self.test_filtering(['test/core/foo.bar'], [label for label in _LIST_OF_LANGUAGE_LABELS if label not in
filter_pull_request_tests._CORE_TEST_SUITE.labels]) filter_pull_request_tests._CORE_TEST_SUITE.labels +
filter_pull_request_tests._CPP_TEST_SUITE.labels])
self.test_filtering(['src/cpp/foo.bar'], [label for label in _LIST_OF_LANGUAGE_LABELS if label not in self.test_filtering(['src/cpp/foo.bar'], [label for label in _LIST_OF_LANGUAGE_LABELS if label not in
filter_pull_request_tests._CPP_TEST_SUITE.labels]) filter_pull_request_tests._CPP_TEST_SUITE.labels])
self.test_filtering(['src/csharp/foo.bar'], [label for label in _LIST_OF_LANGUAGE_LABELS if label not in self.test_filtering(['src/csharp/foo.bar'], [label for label in _LIST_OF_LANGUAGE_LABELS if label not in

Loading…
Cancel
Save