Add gzencode test.
GitOrigin-RevId: 2c4cced1680efe16b8145ba2c5614bad26c9e77e
This commit is contained in:
parent
a0c5c5900a
commit
34973a5823
@ -11,28 +11,34 @@
|
|||||||
#include "td/utils/logging.h"
|
#include "td/utils/logging.h"
|
||||||
#include "td/utils/Status.h"
|
#include "td/utils/Status.h"
|
||||||
#include "td/utils/tests.h"
|
#include "td/utils/tests.h"
|
||||||
|
#include "td/utils/Time.h"
|
||||||
|
|
||||||
static void encode_decode(td::string s) {
|
static void encode_decode(td::string s) {
|
||||||
auto r = td::gzencode(s, 2);
|
auto r = td::gzencode(s, 2);
|
||||||
ASSERT_TRUE(!r.empty());
|
ASSERT_TRUE(!r.empty());
|
||||||
if (r.empty()) {
|
ASSERT_EQ(s, td::gzdecode(r.as_slice()));
|
||||||
return;
|
|
||||||
}
|
|
||||||
auto new_s = td::gzdecode(r.as_slice());
|
|
||||||
ASSERT_TRUE(!new_s.empty());
|
|
||||||
if (new_s.empty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ASSERT_EQ(s, new_s.as_slice().str());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Gzip, gzencode_gzdecode) {
|
TEST(Gzip, gzencode_gzdecode) {
|
||||||
auto str = td::rand_string(0, 127, 1000);
|
encode_decode(td::rand_string(0, 255, 1000));
|
||||||
encode_decode(str);
|
encode_decode(td::rand_string('a', 'z', 1000000));
|
||||||
str = td::rand_string('a', 'z', 1000000);
|
encode_decode(td::string(1000000, 'a'));
|
||||||
encode_decode(str);
|
}
|
||||||
str = td::string(1000000, 'a');
|
|
||||||
encode_decode(str);
|
static void test_gzencode(td::string s) {
|
||||||
|
auto begin_time = td::Time::now();
|
||||||
|
auto r = td::gzencode(s, td::max(2, static_cast<int>(100 / s.size())));
|
||||||
|
ASSERT_TRUE(!r.empty());
|
||||||
|
LOG(INFO) << "Encoded string of size " << s.size() << " in " << (td::Time::now() - begin_time)
|
||||||
|
<< " with compression ratio " << r.size() * 1.0 / s.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Gzip, gzencode) {
|
||||||
|
for (size_t len = 1; len <= 10000000; len *= 10) {
|
||||||
|
test_gzencode(td::rand_string('a', 'a', len));
|
||||||
|
test_gzencode(td::rand_string('a', 'z', len));
|
||||||
|
test_gzencode(td::rand_string(0, 255, len));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Gzip, flow) {
|
TEST(Gzip, flow) {
|
||||||
|
Reference in New Issue
Block a user