diff options
Diffstat (limited to 'netfs/unittests/mockFuse.cpp')
-rw-r--r-- | netfs/unittests/mockFuse.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/netfs/unittests/mockFuse.cpp b/netfs/unittests/mockFuse.cpp new file mode 100644 index 0000000..7f9790b --- /dev/null +++ b/netfs/unittests/mockFuse.cpp @@ -0,0 +1,68 @@ +#include "mockFuse.h" + +FuseMock::FuseMock(const std::string & ep, int & argc, char ** argv) : + NetFS::FuseApp(argc, argv), + testEndpoint(ep) +{ + ::memset(&context, 0, sizeof(fuse_context)); + context.pid = getpid(); + context.uid = getuid(); + context.gid = getgid(); +} + +struct fuse_context * +FuseMock::fuse_get_context() +{ + return &context; +} + +int +FuseMock::fuse_opt_parse(struct fuse_args * args, void * data, const struct fuse_opt [], fuse_opt_proc_t proc) +{ + for (int n = 0; n < args->argc; n += 1) { + proc(data, args->argv[n], n, args); + } + return 0; +} + +int +FuseMock::main(int &, char **, const struct fuse_operations * o) +{ + o->init(NULL); + ops = *o; + return 0; +} + +NetFS::Client::ConfigurationPtr +FuseMock::ReadConfiguration(const std::string &) const +{ + return new NetFS::Client::Configuration( + { + { "testvol", new NetFS::Client::Resource("testvol", "Service", { testEndpoint }) } + }); +} + +/* +FuseMockHost::FuseMockHost() : + argc(2), + app(new FuseMock(argc, argv)), + fuse(&app->ops) +{ + char ** a = argv; + FuseAppBase::run(argc, a, app); +} +*/ + +FuseMockHost::FuseMockHost(const std::string & ep, int c, char ** v) : + argc(c), + app(new FuseMock(ep, c, v)), + fuse(&app->ops) +{ + FuseAppBase::run(argc, v, app); +} + +FuseMockHost::~FuseMockHost() +{ + delete app; +} + |