From 533cda90cec8588fe13832833cd2c288f3ae786f Mon Sep 17 00:00:00 2001 From: Islam AbdelRahman Date: Wed, 18 May 2016 15:03:21 -0700 Subject: [PATCH] Add GetStringFromCompressionType to include/rocksdb/convenience.h Summary: Expose a simple function to convert CompressionType to it's corresponding option string This is for a diff @yoshinorim is working on for MyRocks Test Plan: unittest Reviewers: yhchiang, andrewkr, sdong Reviewed By: sdong Subscribers: andrewkr, dhruba, yoshinorim Differential Revision: https://reviews.facebook.net/D58215 --- include/rocksdb/convenience.h | 7 ++++++- util/options_helper.cc | 11 +++++++++++ util/options_test.cc | 22 ++++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/include/rocksdb/convenience.h b/include/rocksdb/convenience.h index 47fe6f1f9..07b267eb5 100644 --- a/include/rocksdb/convenience.h +++ b/include/rocksdb/convenience.h @@ -5,8 +5,10 @@ #pragma once -#include #include +#include +#include + #include "rocksdb/db.h" #include "rocksdb/options.h" #include "rocksdb/table.h" @@ -76,6 +78,9 @@ Status GetStringFromColumnFamilyOptions(std::string* opts_str, const ColumnFamilyOptions& db_options, const std::string& delimiter = "; "); +Status GetStringFromCompressionType(std::string* compression_str, + CompressionType compression_type); + Status GetBlockBasedTableOptionsFromString( const BlockBasedTableOptions& table_options, const std::string& opts_str, diff --git a/util/options_helper.cc b/util/options_helper.cc index 98161138e..fbf6a5766 100644 --- a/util/options_helper.cc +++ b/util/options_helper.cc @@ -955,6 +955,17 @@ Status GetStringFromColumnFamilyOptions(std::string* opt_string, return Status::OK(); } +Status GetStringFromCompressionType(std::string* compression_str, + CompressionType compression_type) { + bool ok = SerializeEnum(compression_type_string_map, + compression_type, compression_str); + if (ok) { + return Status::OK(); + } else { + return Status::InvalidArgument("Invalid compression types"); + } +} + bool SerializeSingleBlockBasedTableOption( std::string* opt_string, const BlockBasedTableOptions& bbt_options, const std::string& name, const std::string& delimiter) { diff --git a/util/options_test.cc b/util/options_test.cc index 03b2780f6..52bc31a3d 100644 --- a/util/options_test.cc +++ b/util/options_test.cc @@ -836,6 +836,28 @@ TEST_F(OptionsTest, StringToMapRandomTest) { opts_map.clear(); } } + +TEST_F(OptionsTest, GetStringFromCompressionType) { + std::string res; + + ASSERT_OK(GetStringFromCompressionType(&res, kNoCompression)); + ASSERT_EQ(res, "kNoCompression"); + + ASSERT_OK(GetStringFromCompressionType(&res, kSnappyCompression)); + ASSERT_EQ(res, "kSnappyCompression"); + + ASSERT_OK(GetStringFromCompressionType(&res, kDisableCompressionOption)); + ASSERT_EQ(res, "kDisableCompressionOption"); + + ASSERT_OK(GetStringFromCompressionType(&res, kLZ4Compression)); + ASSERT_EQ(res, "kLZ4Compression"); + + ASSERT_OK(GetStringFromCompressionType(&res, kZlibCompression)); + ASSERT_EQ(res, "kZlibCompression"); + + ASSERT_NOK( + GetStringFromCompressionType(&res, static_cast(-10))); +} #endif // !ROCKSDB_LITE TEST_F(OptionsTest, ConvertOptionsTest) { -- GitLab