You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2020/01/10 19:59:59 UTC
[trafficserver] 03/05: Reduce process duration of
test_Http2FrequencyCounter
This is an automated email from the ASF dual-hosted git repository.
zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 42713b4584cf22194f743c8e80c944d1ea9fa717
Author: Masaori Koshiba <ma...@apache.org>
AuthorDate: Mon Jan 6 12:23:00 2020 +0900
Reduce process duration of test_Http2FrequencyCounter
(cherry picked from commit 0ad851937e66351b2dbee640678b3f0b9e157da8)
---
proxy/http2/Http2FrequencyCounter.cc | 8 +-
proxy/http2/Http2FrequencyCounter.h | 3 +
.../http2/unit_tests/test_Http2FrequencyCounter.cc | 102 +++++++++++----------
3 files changed, 62 insertions(+), 51 deletions(-)
diff --git a/proxy/http2/Http2FrequencyCounter.cc b/proxy/http2/Http2FrequencyCounter.cc
index dfe08b9..9fab3e6 100644
--- a/proxy/http2/Http2FrequencyCounter.cc
+++ b/proxy/http2/Http2FrequencyCounter.cc
@@ -26,7 +26,7 @@
void
Http2FrequencyCounter::increment(uint16_t amount)
{
- ink_hrtime hrtime_sec = ink_hrtime_to_sec(Thread::get_hrtime());
+ ink_hrtime hrtime_sec = this->_get_hrtime();
uint8_t counter_index = ((hrtime_sec % 60) >= 30);
uint8_t last_index = ((this->_last_update % 60) >= 30);
@@ -53,3 +53,9 @@ Http2FrequencyCounter::get_count()
{
return this->_count[0] + this->_count[1];
}
+
+ink_hrtime
+Http2FrequencyCounter::_get_hrtime()
+{
+ return ink_hrtime_to_sec(Thread::get_hrtime());
+}
diff --git a/proxy/http2/Http2FrequencyCounter.h b/proxy/http2/Http2FrequencyCounter.h
index 9d2ed73..0b6de17 100644
--- a/proxy/http2/Http2FrequencyCounter.h
+++ b/proxy/http2/Http2FrequencyCounter.h
@@ -35,4 +35,7 @@ public:
protected:
uint16_t _count[2] = {0};
ink_hrtime _last_update = 0;
+
+private:
+ virtual ink_hrtime _get_hrtime();
};
diff --git a/proxy/http2/unit_tests/test_Http2FrequencyCounter.cc b/proxy/http2/unit_tests/test_Http2FrequencyCounter.cc
index a1c0487..b69d58f 100644
--- a/proxy/http2/unit_tests/test_Http2FrequencyCounter.cc
+++ b/proxy/http2/unit_tests/test_Http2FrequencyCounter.cc
@@ -29,12 +29,22 @@ class TestHttp2FrequencyCounter : public Http2FrequencyCounter
{
public:
void
- set_internal_state(ink_hrtime last_update_sec, uint16_t count_0, uint16_t count_1)
+ set_internal_state(ink_hrtime now, ink_hrtime last_update_sec, uint16_t count_0, uint16_t count_1)
{
+ this->_now = now;
this->_last_update = last_update_sec;
this->_count[0] = count_0;
this->_count[1] = count_1;
}
+
+private:
+ ink_hrtime
+ _get_hrtime() override
+ {
+ return this->_now;
+ }
+
+ ink_hrtime _now = 0;
};
TEST_CASE("Http2FrequencyCounter_basic", "[http2][Http2FrequencyCounter]")
@@ -49,47 +59,45 @@ TEST_CASE("Http2FrequencyCounter_basic", "[http2][Http2FrequencyCounter]")
counter.increment(2);
REQUIRE(counter.get_count() == 3);
- counter.set_internal_state(ink_hrtime_to_sec(Thread::get_hrtime()) - 10, 1, 2);
+ ink_hrtime now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
+ counter.set_internal_state(now, now - 10, 1, 2);
REQUIRE(counter.get_count() == 3);
}
SECTION("Update at 0")
{
ink_hrtime now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- while (now % 60 != 0) {
- sleep(1);
- now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- }
+ now -= now % 60;
- counter.set_internal_state(now - 5, 1, 2);
+ counter.set_internal_state(now, now - 5, 1, 2);
counter.increment();
CHECK(counter.get_count() == 3);
- counter.set_internal_state(now - 10, 1, 2);
+ counter.set_internal_state(now, now - 10, 1, 2);
counter.increment();
CHECK(counter.get_count() == 3);
- counter.set_internal_state(now - 20, 1, 2);
+ counter.set_internal_state(now, now - 20, 1, 2);
counter.increment();
CHECK(counter.get_count() == 3);
- counter.set_internal_state(now - 30, 1, 2);
+ counter.set_internal_state(now, now - 30, 1, 2);
counter.increment();
CHECK(counter.get_count() == 3);
- counter.set_internal_state(now - 40, 1, 2);
+ counter.set_internal_state(now, now - 40, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 50, 1, 2);
+ counter.set_internal_state(now, now - 50, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 60, 1, 2);
+ counter.set_internal_state(now, now - 60, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 70, 1, 2);
+ counter.set_internal_state(now, now - 70, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
}
@@ -97,40 +105,38 @@ TEST_CASE("Http2FrequencyCounter_basic", "[http2][Http2FrequencyCounter]")
SECTION("Update at 10")
{
ink_hrtime now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- while (now % 60 != 10) {
- sleep(1);
- now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- }
+ now -= now % 60;
+ now += 10;
- counter.set_internal_state(now - 5, 1, 2);
+ counter.set_internal_state(now, now - 5, 1, 2);
counter.increment();
CHECK(counter.get_count() == 4);
- counter.set_internal_state(now - 10, 1, 2);
+ counter.set_internal_state(now, now - 10, 1, 2);
counter.increment();
CHECK(counter.get_count() == 4);
- counter.set_internal_state(now - 20, 1, 2);
+ counter.set_internal_state(now, now - 20, 1, 2);
counter.increment();
CHECK(counter.get_count() == 3);
- counter.set_internal_state(now - 30, 1, 2);
+ counter.set_internal_state(now, now - 30, 1, 2);
counter.increment();
CHECK(counter.get_count() == 3);
- counter.set_internal_state(now - 40, 1, 2);
+ counter.set_internal_state(now, now - 40, 1, 2);
counter.increment();
CHECK(counter.get_count() == 3);
- counter.set_internal_state(now - 50, 1, 2);
+ counter.set_internal_state(now, now - 50, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 60, 1, 2);
+ counter.set_internal_state(now, now - 60, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 70, 1, 2);
+ counter.set_internal_state(now, now - 70, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
}
@@ -138,40 +144,38 @@ TEST_CASE("Http2FrequencyCounter_basic", "[http2][Http2FrequencyCounter]")
SECTION("Update at 30")
{
ink_hrtime now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- while (now % 60 != 30) {
- sleep(1);
- now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- }
+ now -= now % 60;
+ now += 30;
- counter.set_internal_state(now - 5, 1, 2);
+ counter.set_internal_state(now, now - 5, 1, 2);
counter.increment();
CHECK(counter.get_count() == 2);
- counter.set_internal_state(now - 10, 1, 2);
+ counter.set_internal_state(now, now - 10, 1, 2);
counter.increment();
CHECK(counter.get_count() == 2);
- counter.set_internal_state(now - 20, 1, 2);
+ counter.set_internal_state(now, now - 20, 1, 2);
counter.increment();
CHECK(counter.get_count() == 2);
- counter.set_internal_state(now - 30, 1, 2);
+ counter.set_internal_state(now, now - 30, 1, 2);
counter.increment();
CHECK(counter.get_count() == 2);
- counter.set_internal_state(now - 40, 1, 2);
+ counter.set_internal_state(now, now - 40, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 50, 1, 2);
+ counter.set_internal_state(now, now - 50, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 60, 1, 2);
+ counter.set_internal_state(now, now - 60, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 70, 1, 2);
+ counter.set_internal_state(now, now - 70, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
}
@@ -179,40 +183,38 @@ TEST_CASE("Http2FrequencyCounter_basic", "[http2][Http2FrequencyCounter]")
SECTION("Update at 40")
{
ink_hrtime now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- while (now % 60 != 40) {
- sleep(1);
- now = ink_hrtime_to_sec(Thread::get_hrtime_updated());
- }
+ now -= now % 60;
+ now += 40;
- counter.set_internal_state(now - 5, 1, 2);
+ counter.set_internal_state(now, now - 5, 1, 2);
counter.increment();
CHECK(counter.get_count() == 4);
- counter.set_internal_state(now - 10, 1, 2);
+ counter.set_internal_state(now, now - 10, 1, 2);
counter.increment();
CHECK(counter.get_count() == 4);
- counter.set_internal_state(now - 20, 1, 2);
+ counter.set_internal_state(now, now - 20, 1, 2);
counter.increment();
CHECK(counter.get_count() == 2);
- counter.set_internal_state(now - 30, 1, 2);
+ counter.set_internal_state(now, now - 30, 1, 2);
counter.increment();
CHECK(counter.get_count() == 2);
- counter.set_internal_state(now - 40, 1, 2);
+ counter.set_internal_state(now, now - 40, 1, 2);
counter.increment();
CHECK(counter.get_count() == 2);
- counter.set_internal_state(now - 50, 1, 2);
+ counter.set_internal_state(now, now - 50, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 60, 1, 2);
+ counter.set_internal_state(now, now - 60, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
- counter.set_internal_state(now - 70, 1, 2);
+ counter.set_internal_state(now, now - 70, 1, 2);
counter.increment();
CHECK(counter.get_count() == 1);
}