Added test cases for OnDiskBlob that load and compare data
This commit is contained in:
parent
dc8a81eef5
commit
155bbeaba3
@ -1,6 +1,7 @@
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "test/testutils/TempFile.h"
|
||||
#include "test/testutils/VirtualTestFile.h"
|
||||
|
||||
#include "blobstore/implementations/ondisk/OnDiskBlob.h"
|
||||
#include "blobstore/implementations/ondisk/Data.h"
|
||||
@ -19,7 +20,7 @@ using namespace blobstore::ondisk;
|
||||
|
||||
namespace bf = boost::filesystem;
|
||||
|
||||
class OnDiskBlobLoadTest: public Test {
|
||||
class OnDiskBlobLoadTest: public Test, public WithParamInterface<size_t> {
|
||||
public:
|
||||
TempFile file;
|
||||
|
||||
@ -27,18 +28,40 @@ public:
|
||||
Data data(size);
|
||||
data.StoreToFile(file.path());
|
||||
}
|
||||
|
||||
void StoreData(const VirtualTestFile &data) {
|
||||
//TODO Implement data.StoreToFile(filepath) instead
|
||||
Data dataobj(data.size());
|
||||
std::memcpy(dataobj.data(), data.data(), data.size());
|
||||
dataobj.StoreToFile(file.path());
|
||||
}
|
||||
|
||||
unique_ptr<OnDiskBlob> LoadBlob() {
|
||||
return OnDiskBlob::LoadFromDisk(file.path());
|
||||
}
|
||||
|
||||
void EXPECT_BLOB_DATA_EQ(const VirtualTestFile &expected, const OnDiskBlob &actual) {
|
||||
EXPECT_EQ(expected.size(), actual.size());
|
||||
EXPECT_EQ(0, std::memcmp(expected.data(), actual.data(), expected.size()));
|
||||
}
|
||||
};
|
||||
INSTANTIATE_TEST_CASE_P(OnDiskBlobLoadTest, OnDiskBlobLoadTest, Values(0, 1, 5, 1024, 10*1024*1024));
|
||||
|
||||
class OnDiskBlobLoadSizeTest: public OnDiskBlobLoadTest, public WithParamInterface<size_t> {};
|
||||
INSTANTIATE_TEST_CASE_P(OnDiskBlobLoadSizeTest, OnDiskBlobLoadSizeTest, Values(0, 1, 5, 1024, 10*1024*1024));
|
||||
|
||||
TEST_P(OnDiskBlobLoadSizeTest, FileSizeIsCorrect) {
|
||||
TEST_P(OnDiskBlobLoadTest, FileSizeIsCorrect) {
|
||||
SetFileSize(GetParam());
|
||||
|
||||
auto blob = OnDiskBlob::LoadFromDisk(file.path());
|
||||
auto blob = LoadBlob();
|
||||
|
||||
EXPECT_EQ(GetParam(), blob->size());
|
||||
}
|
||||
|
||||
//TODO Load and compare actual data
|
||||
TEST_P(OnDiskBlobLoadTest, LoadedDataIsCorrect) {
|
||||
VirtualTestFile randomData(GetParam());
|
||||
StoreData(randomData);
|
||||
|
||||
auto blob = LoadBlob();
|
||||
|
||||
EXPECT_BLOB_DATA_EQ(randomData, *blob);
|
||||
}
|
||||
|
||||
//TODO Test file doesn't exist
|
||||
|
@ -23,7 +23,7 @@ void VirtualTestFile::fillFileWithRandomData(long long int IV) {
|
||||
}
|
||||
}
|
||||
|
||||
const char *VirtualTestFile::data() {
|
||||
const char *VirtualTestFile::data() const {
|
||||
return _fileData;
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ int VirtualTestFile::read(void *buf, size_t count, off_t offset) {
|
||||
return realCount;
|
||||
}
|
||||
|
||||
size_t VirtualTestFile::size() {
|
||||
size_t VirtualTestFile::size() const {
|
||||
return _size;
|
||||
}
|
||||
|
||||
|
@ -14,9 +14,9 @@ public:
|
||||
// Return true, iff the given data is equal to the data of the file at the given offset.
|
||||
bool fileContentEqual(const char *content, size_t count, off_t offset);
|
||||
|
||||
const char *data();
|
||||
const char *data() const;
|
||||
|
||||
size_t size();
|
||||
size_t size() const;
|
||||
|
||||
protected:
|
||||
char *_fileData;
|
||||
|
Loading…
Reference in New Issue
Block a user