This is an automated email from the ASF dual-hosted git repository. aaronai pushed a commit to branch java_dev in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
commit 94acc7b06bbd4d7c03b3218f6a1b2c36b22c04ff Author: Aaron Ai <[email protected]> AuthorDate: Wed Aug 3 14:06:20 2022 +0800 badge --- .github/workflows/cpp_coverage.yml | 23 +++ .../workflows/{coverage.yml => java_coverage.yml} | 16 ++- README.md | 4 +- cpp/source/base/tests/AssignmentTest.cpp | 2 +- cpp/source/base/tests/BUILD.bazel | 56 ++++---- cpp/source/base/tests/ConfigurationTest.cpp | 54 ------- cpp/source/base/tests/MessageBuilderTest.cpp | 1 + cpp/source/base/tests/MessageQueueTest.cpp | 38 ----- cpp/source/base/tests/MixAllTest.cpp | 38 ----- cpp/source/base/tests/RetryPolicyTest.cpp | 38 ----- cpp/source/concurrent/tests/BUILD.bazel | 26 ---- cpp/source/concurrent/tests/CountdownLatchTest.cpp | 72 ---------- cpp/source/rocketmq/tests/BUILD.bazel | 46 ------ cpp/source/rocketmq/tests/ClientImplTest.cpp | 36 ----- cpp/source/rocketmq/tests/SendContextTest.cpp | 33 ----- cpp/source/rocketmq/tests/TimeTest.cpp | 31 ----- cpp/source/stats/tests/BUILD.bazel | 28 ---- cpp/source/stats/tests/PublishStatsTest.cpp | 155 --------------------- 18 files changed, 65 insertions(+), 632 deletions(-) diff --git a/.github/workflows/cpp_coverage.yml b/.github/workflows/cpp_coverage.yml new file mode 100644 index 0000000..0edc9e2 --- /dev/null +++ b/.github/workflows/cpp_coverage.yml @@ -0,0 +1,23 @@ +name: CPP Coverage +on: + pull_request: + types: [opened, reopened, synchronize] + push: + branches: + - java_dev +# mainly refer to: https://github.com/merkrafter/Merkompiler/blob/development/.github/workflows/quality_assurance.yml +jobs: + calculate-coverage: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Generate coverage report + working-directory: ./cpp + run: bazel coverage //... + - name: Upload to Codecov + uses: codecov/[email protected] + with: + file: ./cpp/bazel-out/_coverage/_coverage_report.dat + flags: cpp + fail_ci_if_error: true + verbose: true diff --git a/.github/workflows/coverage.yml b/.github/workflows/java_coverage.yml similarity index 61% rename from .github/workflows/coverage.yml rename to .github/workflows/java_coverage.yml index 57ca08f..f677dee 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/java_coverage.yml @@ -1,25 +1,29 @@ -name: Codecov +name: Java Coverage on: pull_request: types: [opened, reopened, synchronize] + paths: + - "java/**" push: branches: - - master + - java_dev +# mainly refer to: https://github.com/merkrafter/Merkompiler/blob/development/.github/workflows/quality_assurance.yml jobs: calculate-coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - - name: Set up JDK 16 + - name: Set up JDK 11 uses: actions/setup-java@v2 with: - java-version: '16' - distribution: 'adopt' + java-version: "11" + distribution: "adopt" - name: Generate coverage report run: mvn test --file ./java/pom.xml - name: Upload to Codecov uses: codecov/[email protected] with: file: ./java/client/target/site/jacoco/jacoco.xml + flags: java fail_ci_if_error: true - verbose: true \ No newline at end of file + verbose: true diff --git a/README.md b/README.md index 0914912..058c28e 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ [](https://github.com/apache/rocketmq-clients/actions/workflows/csharp_build.yml) [](https://github.com/apache/rocketmq-clients/actions/workflows/java_build.yml) [](https://github.com/apache/rocketmq-clients/actions/workflows/golang_build.yml) -[](https://codecov.io/gh/apache/rocketmq-clients) - +[](https://codecov.io/gh/apache/rocketmq-clients) +[](https://codecov.io/gh/apache/rocketmq-clients) ## Overview Client bindings for [Apache RocketMQ](https://rocketmq.apache.org/), all of them follow the specification of [rocketmq-apis](https://github.com/apache/rocketmq-apis), replacing 4.x remoting-based counterparts. Clients in this repository are built on top of [Protocol Buffers](https://developers.google.com/protocol-buffers) and [gRPC](https://grpc.io/). diff --git a/cpp/source/base/tests/AssignmentTest.cpp b/cpp/source/base/tests/AssignmentTest.cpp index 118e12e..dcb3e58 100644 --- a/cpp/source/base/tests/AssignmentTest.cpp +++ b/cpp/source/base/tests/AssignmentTest.cpp @@ -17,7 +17,7 @@ #include "gtest/gtest.h" #include <algorithm> - +#include "rocketmq/RocketMQ.h" #include "Protocol.h" ROCKETMQ_NAMESPACE_BEGIN diff --git a/cpp/source/base/tests/BUILD.bazel b/cpp/source/base/tests/BUILD.bazel index 4037b9d..9717d61 100644 --- a/cpp/source/base/tests/BUILD.bazel +++ b/cpp/source/base/tests/BUILD.bazel @@ -21,34 +21,34 @@ cc_test( deps = base_deps, ) -cc_test( - name = "message_queue_test", - srcs = [ - "MessageQueueTest.cpp", - ], - deps = base_deps, -) +# cc_test( +# name = "message_queue_test", +# srcs = [ +# "MessageQueueTest.cpp", +# ], +# deps = base_deps, +# ) -cc_test( - name = "configuration_test", - srcs = [ - "ConfigurationTest.cpp", - ], - deps = base_deps, -) +# cc_test( +# name = "configuration_test", +# srcs = [ +# "ConfigurationTest.cpp", +# ], +# deps = base_deps, +# ) -cc_test( - name = "mix_all_test", - srcs = [ - "MixAllTest.cpp", - ], - deps = base_deps, -) +# cc_test( +# name = "mix_all_test", +# srcs = [ +# "MixAllTest.cpp", +# ], +# deps = base_deps, +# ) -cc_test( - name = "retry_policy_test", - srcs = [ - "RetryPolicyTest.cpp", - ], - deps = base_deps, -) \ No newline at end of file +# cc_test( +# name = "retry_policy_test", +# srcs = [ +# "RetryPolicyTest.cpp", +# ], +# deps = base_deps, +# ) \ No newline at end of file diff --git a/cpp/source/base/tests/ConfigurationTest.cpp b/cpp/source/base/tests/ConfigurationTest.cpp deleted file mode 100644 index 9174e39..0000000 --- a/cpp/source/base/tests/ConfigurationTest.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - */ - -#include <chrono> -#include <memory> - -#include "gtest/gtest.h" -#include "rocketmq/Configuration.h" - -ROCKETMQ_NAMESPACE_BEGIN - -class ConfigurationTest : public testing::Test { -public: -protected: - std::string endpoints_{"8.8.8.8:80;8.8.4.4:80"}; - std::chrono::milliseconds request_timeout_{std::chrono::seconds(1)}; -}; - -TEST_F(ConfigurationTest, testEndpoints) { - auto configuration = Configuration::newBuilder().withEndpoints(endpoints_).build(); - ASSERT_EQ(endpoints_, configuration.endpoints()); -} - -TEST_F(ConfigurationTest, testCredentialsProvider) { - std::string access_key = "ak"; - std::string access_secret = "as"; - auto credentials_provider = std::make_shared<StaticCredentialsProvider>(access_key, access_secret); - auto configuration = Configuration::newBuilder().withCredentialsProvider(credentials_provider).build(); - auto credentials = configuration.credentialsProvider()->getCredentials(); - - ASSERT_EQ(access_key, credentials.accessKey()); - ASSERT_EQ(access_secret, credentials.accessSecret()); -} - -TEST_F(ConfigurationTest, testRequestTimeout) { - auto configuration = Configuration::newBuilder().withRequestTimeout(request_timeout_).build(); - ASSERT_EQ(request_timeout_, configuration.requestTimeout()); -} - -ROCKETMQ_NAMESPACE_END \ No newline at end of file diff --git a/cpp/source/base/tests/MessageBuilderTest.cpp b/cpp/source/base/tests/MessageBuilderTest.cpp index 9ad4d58..f21bbcb 100644 --- a/cpp/source/base/tests/MessageBuilderTest.cpp +++ b/cpp/source/base/tests/MessageBuilderTest.cpp @@ -19,6 +19,7 @@ #include "MessageExt.h" #include "gtest/gtest.h" #include "rocketmq/Message.h" +#include "rocketmq/RocketMQ.h" ROCKETMQ_NAMESPACE_BEGIN diff --git a/cpp/source/base/tests/MessageQueueTest.cpp b/cpp/source/base/tests/MessageQueueTest.cpp deleted file mode 100644 index 805934e..0000000 --- a/cpp/source/base/tests/MessageQueueTest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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. - */ - -#include <apache/rocketmq/v2/definition.pb.h> -#include <cstdint> - -#include "absl/container/flat_hash_map.h" -#include "google/protobuf/map.h" -#include "gtest/gtest.h" - -#include "Protocol.h" - -ROCKETMQ_NAMESPACE_BEGIN - -class MessageQueueTest : public testing::Test { -public: - void SetUp() override { - } - - void TearDown() override { - } -}; - -ROCKETMQ_NAMESPACE_END diff --git a/cpp/source/base/tests/MixAllTest.cpp b/cpp/source/base/tests/MixAllTest.cpp deleted file mode 100644 index 53b019a..0000000 --- a/cpp/source/base/tests/MixAllTest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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. - */ -#include <system_error> - -#include "MixAll.h" -#include "absl/strings/str_split.h" -#include "gtest/gtest.h" - -ROCKETMQ_NAMESPACE_BEGIN - -TEST(MixAllTest, testOsName) { - const char* os_name = MixAll::osName(); - std::cout << os_name << std::endl; -} - -TEST(MixAllTest, testValidate) { - auto message = Message::newBuilder().withTopic("").build(); - std::error_code ec; - MixAll::validate(*message, ec); - ASSERT_EQ(true, (bool)ec); - ASSERT_TRUE(absl::StrContains(ec.message(), "illegal")); -} - -ROCKETMQ_NAMESPACE_END \ No newline at end of file diff --git a/cpp/source/base/tests/RetryPolicyTest.cpp b/cpp/source/base/tests/RetryPolicyTest.cpp deleted file mode 100644 index 1e3c7bf..0000000 --- a/cpp/source/base/tests/RetryPolicyTest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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. - */ -#include "RetryPolicy.h" -#include "gtest/gtest.h" - -ROCKETMQ_NAMESPACE_BEGIN - -TEST(RetryPolicyTest, testBackoff) { - RetryPolicy policy; - policy.max_attempt = 3; - policy.strategy = BackoffStrategy::Customized; - policy.initial = absl::Milliseconds(0); - policy.max = absl::Milliseconds(0); - policy.multiplier = 0.0f; - policy.next = {absl::Milliseconds(10), absl::Milliseconds(100), absl::Milliseconds(500)}; - - ASSERT_EQ(policy.backoff(1), 10); - ASSERT_EQ(policy.backoff(2), 100); - ASSERT_EQ(policy.backoff(3), 500); - ASSERT_EQ(policy.backoff(4), 500); - ASSERT_EQ(policy.backoff(10000), 500); -} - -ROCKETMQ_NAMESPACE_END \ No newline at end of file diff --git a/cpp/source/concurrent/tests/BUILD.bazel b/cpp/source/concurrent/tests/BUILD.bazel deleted file mode 100644 index c464ca4..0000000 --- a/cpp/source/concurrent/tests/BUILD.bazel +++ /dev/null @@ -1,26 +0,0 @@ -# -# 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. -# -cc_test( - name = "countdown_latch_test", - deps = [ - "//source/concurrent:countdown_latch_library", - "@com_google_googletest//:gtest_main", - ], - srcs = [ - "CountdownLatchTest.cpp" - ], -) \ No newline at end of file diff --git a/cpp/source/concurrent/tests/CountdownLatchTest.cpp b/cpp/source/concurrent/tests/CountdownLatchTest.cpp deleted file mode 100644 index e0d0c4f..0000000 --- a/cpp/source/concurrent/tests/CountdownLatchTest.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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. - */ -#include <chrono> -#include <cstddef> -#include <mutex> -#include <thread> - -#include "CountdownLatch.h" -#include "gtest/gtest.h" -#include "rocketmq/RocketMQ.h" - -ROCKETMQ_NAMESPACE_BEGIN - -class CountdownLatchTest : public testing::Test { -public: - void SetUp() override { - countdown_latch_ = absl::make_unique<CountdownLatch>(permit_); - } - - void TearDown() override { - } - -protected: - const std::size_t permit_{2}; - std::unique_ptr<CountdownLatch> countdown_latch_; - absl::Mutex mtx_; -}; - -TEST_F(CountdownLatchTest, testAwait) { - int count = 0; - - auto lambda = [&]() { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - { - absl::MutexLock lk(&mtx_); - count++; - } - countdown_latch_->countdown(); - }; - - std::vector<std::thread> threads; - for (std::size_t i = 0; i < permit_; i++) { - auto t = std::thread(lambda); - threads.push_back(std::move(t)); - } - - countdown_latch_->await(); - - ASSERT_EQ(count, permit_); - - for (auto& thread : threads) { - if (thread.joinable()) { - thread.join(); - } - } -} - -ROCKETMQ_NAMESPACE_END \ No newline at end of file diff --git a/cpp/source/rocketmq/tests/BUILD.bazel b/cpp/source/rocketmq/tests/BUILD.bazel deleted file mode 100644 index 25303d7..0000000 --- a/cpp/source/rocketmq/tests/BUILD.bazel +++ /dev/null @@ -1,46 +0,0 @@ -# -# 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_cc//cc:defs.bzl", "cc_test") - -base_deps = [ - "//source/rocketmq:rocketmq_library", - "@com_google_googletest//:gtest_main", -] - -cc_test( - name = "time_test", - srcs = [ - "TimeTest.cpp", - ], - deps = base_deps, -) - -cc_test( - name = "send_context_test", - srcs = [ - "SendContextTest.cpp", - ], - deps = base_deps, -) - -cc_test( - name = "client_impl_test", - srcs = [ - "ClientImplTest.cpp", - ], - deps = base_deps, -) \ No newline at end of file diff --git a/cpp/source/rocketmq/tests/ClientImplTest.cpp b/cpp/source/rocketmq/tests/ClientImplTest.cpp deleted file mode 100644 index 3975e6b..0000000 --- a/cpp/source/rocketmq/tests/ClientImplTest.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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. - */ -#include <cstddef> -#include <unordered_set> - -#include "ClientImpl.h" -#include "gtest/gtest.h" -#include "rocketmq/RocketMQ.h" - -ROCKETMQ_NAMESPACE_BEGIN - -TEST(ClientImplTest, testClientId) { - std::unordered_set<std::string> client_ids; - for (std::size_t i = 0; i < 128; i++) { - auto&& client_id = clientId(); - std::cout << client_id << std::endl; - ASSERT_EQ(client_ids.find(client_id), client_ids.end()); - client_ids.insert(std::move(client_id)); - } -} - -ROCKETMQ_NAMESPACE_END \ No newline at end of file diff --git a/cpp/source/rocketmq/tests/SendContextTest.cpp b/cpp/source/rocketmq/tests/SendContextTest.cpp deleted file mode 100644 index e03c8b7..0000000 --- a/cpp/source/rocketmq/tests/SendContextTest.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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. - */ -#include <memory> - -#include "SendContext.h" -#include "gtest/gtest.h" - -ROCKETMQ_NAMESPACE_BEGIN - -TEST(SendContextTest, testBasics) { - auto message = Message::newBuilder().withBody("body").withTopic("topic").withGroup("group0").withTag("TagA").build(); - auto callback = [](const std::error_code&, const SendReceipt&) {}; - std::weak_ptr<ProducerImpl> producer; - std::vector<rmq::MessageQueue> message_queues; - auto send_context = std::make_shared<SendContext>(producer, std::move(message), callback, message_queues); - send_context.reset(); -} - -ROCKETMQ_NAMESPACE_END \ No newline at end of file diff --git a/cpp/source/rocketmq/tests/TimeTest.cpp b/cpp/source/rocketmq/tests/TimeTest.cpp deleted file mode 100644 index 898aef0..0000000 --- a/cpp/source/rocketmq/tests/TimeTest.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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. - */ - -#include "absl/time/time.h" -#include "gtest/gtest.h" -#include "rocketmq/RocketMQ.h" - -ROCKETMQ_NAMESPACE_BEGIN - -TEST(TimeTest, testTimeHelpers) { - auto duration = absl::Seconds(1) + absl::Nanoseconds(100); - auto seconds = absl::ToInt64Seconds(duration); - ASSERT_EQ(1, seconds); - ASSERT_EQ(100, absl::ToInt64Nanoseconds(duration - absl::Seconds(seconds))); -} - -ROCKETMQ_NAMESPACE_END \ No newline at end of file diff --git a/cpp/source/stats/tests/BUILD.bazel b/cpp/source/stats/tests/BUILD.bazel deleted file mode 100644 index 10005d0..0000000 --- a/cpp/source/stats/tests/BUILD.bazel +++ /dev/null @@ -1,28 +0,0 @@ -# -# 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_cc//cc:defs.bzl", "cc_test") - -cc_test( - name = "publish_stats_test", - srcs = [ - "PublishStatsTest.cpp", - ], - deps = [ - "//source/stats", - "@com_google_googletest//:gtest_main", - ], -) \ No newline at end of file diff --git a/cpp/source/stats/tests/PublishStatsTest.cpp b/cpp/source/stats/tests/PublishStatsTest.cpp deleted file mode 100644 index 7c4d997..0000000 --- a/cpp/source/stats/tests/PublishStatsTest.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * 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. - */ - -#include <chrono> -#include <iostream> -#include <mutex> -#include <thread> - -#include "PublishStats.h" -#include "gtest/gtest.h" - -ROCKETMQ_NAMESPACE_BEGIN - -class Handler : public opencensus::stats::StatsExporter::Handler { -public: - void ExportViewData( - const std::vector<std::pair<opencensus::stats::ViewDescriptor, opencensus::stats::ViewData>>& data) override { - std::cout << "================================================================================" << std::endl; - for (const auto& datum : data) { - const auto& view_data = datum.second; - const auto& descriptor = datum.first; - auto start_times = view_data.start_times(); - auto columns = descriptor.columns(); - - switch (view_data.type()) { - case opencensus::stats::ViewData::Type::kInt64: { - auto data_map = view_data.int_data(); - for (const auto& entry : data_map) { - absl::Time time = start_times[entry.first]; - std::string line; - line.append(absl::FormatTime(time)).append(" "); - line.append(descriptor.name()); - line.append("{"); - for (std::size_t i = 0; i < columns.size(); i++) { - line.append(columns[i].name()).append("=").append(entry.first[i]); - if (i < columns.size() - 1) { - line.append(", "); - } else { - line.append("} ==> "); - } - } - line.append(std::to_string(entry.second)); - println(line); - } - break; - } - case opencensus::stats::ViewData::Type::kDouble: { - exportDatum(datum.first, view_data.start_time(), view_data.end_time(), view_data.double_data()); - break; - } - case opencensus::stats::ViewData::Type::kDistribution: { - for (const auto& entry : view_data.distribution_data()) { - std::string line(descriptor.name()); - line.append("{"); - for (std::size_t i = 0; i < columns.size(); i++) { - line.append(columns[i].name()).append("=").append(entry.first[i]); - if (i < columns.size() - 1) { - line.append(", "); - } else { - line.append("} ==> "); - } - } - line.append(entry.second.DebugString()); - println(line); - - println(absl::StrJoin(entry.second.bucket_boundaries().lower_boundaries(), ",")); - } - break; - } - } - } - } - - template <typename T> - void exportDatum(const opencensus::stats::ViewDescriptor& descriptor, - absl::Time start_time, - absl::Time end_time, - const opencensus::stats::ViewData::DataMap<T>& data) { - if (data.empty()) { - // std::cout << "No data for " << descriptor.name() << std::endl; - return; - } - - for (const auto& row : data) { - for (std::size_t column = 0; column < descriptor.columns().size(); column++) { - std::cout << descriptor.name() << "[" << descriptor.columns()[column].name() << "=" << row.first[column] << "]" - << DataToString(row.second) << std::endl; - } - } - } - - std::mutex console_mtx; - void println(const std::string& line) { - std::lock_guard<std::mutex> lk(console_mtx); - std::cout << line << std::endl; - } - - // Functions to format data for different aggregation types. - std::string DataToString(double data) { - return absl::StrCat(": ", data, "\n"); - } - std::string DataToString(int64_t data) { - return absl::StrCat(": ", data, "\n"); - } - std::string DataToString(const opencensus::stats::Distribution& data) { - std::string output = "\n"; - std::vector<std::string> lines = absl::StrSplit(data.DebugString(), '\n'); - // Add indent. - for (const auto& line : lines) { - absl::StrAppend(&output, " ", line, "\n"); - } - return output; - } -}; - -TEST(StatsTest, testBasics) { - std::string t1("T1"); - std::string t2("T2"); - PublishStats metrics; - opencensus::stats::StatsExporter::SetInterval(absl::Seconds(5)); - opencensus::stats::StatsExporter::RegisterPushHandler(absl::make_unique<Handler>()); - std::atomic_bool stopped{false}; - auto generator = [&]() { - while (!stopped) { - for (std::size_t i = 0; i < 10; i++) { - opencensus::stats::Record({{metrics.latency(), i * 10}}, - {{Tag::topicTag(), t1}, {Tag::clientIdTag(), "client-0"}}); - } - std::this_thread::sleep_for(std::chrono::seconds(1)); - } - }; - std::thread feeder(generator); - - std::this_thread::sleep_for(std::chrono::seconds(10)); - stopped.store(true); - if (feeder.joinable()) { - feeder.join(); - } -} - -ROCKETMQ_NAMESPACE_END
