1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

Added SMDataFile methods to the list tested.

This commit is contained in:
Patrick LeBlanc
2019-01-24 17:34:20 -06:00
parent a2c789d52a
commit 4583b2e8dc
4 changed files with 82 additions and 8 deletions

View File

@ -65,6 +65,8 @@ SMComm * SMComm::get()
errno = l_errno; \
common_exit(bs1, bs2, retCode); \
} \
else \
errno = 0; \
}
SMComm::SMComm()

View File

@ -127,4 +127,17 @@ int SMDataFile::close()
return 0;
}
// constructor used for testing
SMDataFile::SMDataFile(const char *fname, int _openmode, size_t fake_size)
: IDBDataFile(fname)
{
openmode = _openmode;
// the 'a' file open mode is the only one that starts at EOF
if ((openmode & O_APPEND) && !(openmode & O_RDWR))
position = fake_size;
else
position = 0;
comm = SMComm::get();
}
}

View File

@ -42,6 +42,9 @@ class SMDataFile : public IDBDataFile
time_t mtime();
int close();
// for testing only
SMDataFile(const char *fname, int openmode, size_t fake_size);
private:
SMDataFile();
SMDataFile(const char *fname, int openmode, const struct stat &);

View File

@ -20,6 +20,8 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <boost/thread.hpp>
#include <unistd.h>
#include <list>
@ -127,8 +129,8 @@ int test1()
SMFileFactory factory;
cout << "open" << endl;
IDBDataFile *f = factory.open("dummy", "r", 0, 0);
assert(f == NULL && errno == EINVAL && !die);
IDBDataFile *file = factory.open("dummy", "r", 0, 0);
assert(file == NULL && errno == EINVAL && !die);
SMFileSystem filesystem;
@ -162,35 +164,89 @@ int test1()
cout << "exists" << endl;
err = filesystem.exists("dummy");
assert(!err);
assert(!err && errno == EINVAL);
cout << "filesystemisup" << endl;
err = filesystem.filesystemIsUp();
assert(!err && !die);
assert(!err && errno == EINVAL && !die);
cout << "isdir" << endl;
err = filesystem.isDir("dummy");
assert(!err && !die);
assert(!err && errno == EINVAL && !die);
cout << "listdirectory" << endl;
list<string> filenames;
err = filesystem.listDirectory("dummy", filenames);
assert(err == -1 && filenames.empty() && !die);
assert(err == -1 && errno == EINVAL && filenames.empty() && !die);
cout << "remove" << endl;
err = filesystem.remove("dummy");
assert(err == -1 && !die);
assert(err == -1 && errno == EINVAL && !die);
cout << "size" << endl;
err = filesystem.size("dummy");
assert(err == -1 && !die);
assert(err == -1 && errno == EINVAL && !die);
cout << "mkdir" << endl;
err = filesystem.mkdir("dummy");
assert(err == 0 && !die);
cout << "datafile constructor" << endl;
SMDataFile f("dummy", O_RDONLY, 12345);
f = SMDataFile("dummy2", O_WRONLY, 123456);
f = SMDataFile("dummy2", O_RDWR | O_APPEND, 1234567);
cout << "pread" << endl;
uint8_t buf[1024];
err = f.pread(buf, 0, 1024);
assert(err == -1 && errno == EINVAL && !die);
cout << "read" << endl;
err = f.read(buf, 1024);
assert(err == -1 && errno == EINVAL && !die);
cout << "write" << endl;
err = f.write(buf, 1024);
assert(err == -1 && errno == EINVAL && !die);
cout << "seek" << endl;
err = f.seek(1234, SEEK_SET);
assert(err == 0 && !die);
err = f.seek(1234, SEEK_CUR);
assert(err == 0 && !die);
err = f.seek(1234, SEEK_END);
assert(err == -1 && errno == EINVAL && !die);
cout << "truncate" << endl;
err = f.truncate(1234);
assert(err == -1 && errno == EINVAL && !die);
cout << "size" << endl;
err = f.size();
assert(err == -1 && errno == EINVAL && !die);
cout << "tell" << endl;
err = f.tell();
assert(err == 2468);
cout << "flush" << endl;
err = f.flush();
assert(err == 0);
cout << "mtime" << endl;
err = f.mtime();
assert(err == -1 && errno == EINVAL && !die);
cout << "close" << endl;
err = f.close();
assert(err == 0);
// done, return errCode
die = true;
cout << "done, waiting for server thread to stop" << endl;
server_thread.join();
return errCode;
}