Merge pull request #795 from yuslepukhin/fix_mocktable_id

Fix MockTable ID storage
This commit is contained in:
Siying Dong 2015-10-28 11:37:37 -07:00
commit 28c8758a34
2 changed files with 6 additions and 4 deletions

View File

@ -77,7 +77,7 @@ Status MockTableFactory::NewTableReader(
TableBuilder* MockTableFactory::NewTableBuilder( TableBuilder* MockTableFactory::NewTableBuilder(
const TableBuilderOptions& table_builder_options, uint32_t column_family_id, const TableBuilderOptions& table_builder_options, uint32_t column_family_id,
WritableFileWriter* file) const { WritableFileWriter* file) const {
uint32_t id = GetAndWriteNextID(file->writable_file()); uint32_t id = GetAndWriteNextID(file);
return new MockTableBuilder(id, &file_system_); return new MockTableBuilder(id, &file_system_);
} }
@ -90,12 +90,14 @@ Status MockTableFactory::CreateMockTable(Env* env, const std::string& fname,
return s; return s;
} }
uint32_t id = GetAndWriteNextID(file.get()); WritableFileWriter file_writer(std::move(file), EnvOptions());
uint32_t id = GetAndWriteNextID(&file_writer);
file_system_.files.insert({id, std::move(file_contents)}); file_system_.files.insert({id, std::move(file_contents)});
return Status::OK(); return Status::OK();
} }
uint32_t MockTableFactory::GetAndWriteNextID(WritableFile* file) const { uint32_t MockTableFactory::GetAndWriteNextID(WritableFileWriter* file) const {
uint32_t next_id = next_id_.fetch_add(1); uint32_t next_id = next_id_.fetch_add(1);
char buf[4]; char buf[4];
EncodeFixed32(buf, next_id); EncodeFixed32(buf, next_id);

View File

@ -176,7 +176,7 @@ class MockTableFactory : public TableFactory {
void AssertLatestFile(const stl_wrappers::KVMap& file_contents); void AssertLatestFile(const stl_wrappers::KVMap& file_contents);
private: private:
uint32_t GetAndWriteNextID(WritableFile* file) const; uint32_t GetAndWriteNextID(WritableFileWriter* file) const;
uint32_t GetIDFromFile(RandomAccessFileReader* file) const; uint32_t GetIDFromFile(RandomAccessFileReader* file) const;
mutable MockTableFileSystem file_system_; mutable MockTableFileSystem file_system_;