29 # include <valgrind/memcheck.h> 38 #include <sys/types.h> 50 const vector<string> & files)
62 if (mkdir(dirname.c_str(), 0700) == 0) {
66 int mkdir_errno = errno;
67 if (mkdir_errno == EEXIST) {
95 return do_get_database(files);
101 return do_get_database(vector<string>(1, file));
107 const std::string &),
108 const std::string &arg)
110 string dbleaf =
"db__";
112 const string& path = get_generated_database_path(dbleaf);
127 return get_database_by_path(path);
133 string tmp_dbleaf(dbleaf);
135 string tmp_path(path);
142 finalise_generated_database(tmp_dbleaf);
143 rename(tmp_path.c_str(), path.c_str());
147 return get_database_by_path(path);
153 const std::string &),
154 const std::string &arg)
156 string dbleaf =
"db__";
158 const string& path = get_generated_database_path(dbleaf);
168 string tmp_dbleaf(dbleaf);
170 string tmp_path(path);
177 finalise_generated_database(tmp_dbleaf);
178 rename(tmp_path.c_str(), path.c_str());
192 return do_get_database_path(files);
198 return do_get_database_path(vector<string>(1, file));
210 string msg =
"BackendManager::get_remote_writable_database() " 211 "called for non-remote database (type is ";
248 string msg =
"BackendManager::get_remote_database() called for non-remote database (type is ";
258 string msg =
"BackendManager::get_writable_database_args() " 259 "called for non-remote database (type is ";
274 string msg =
"Backend ";
276 msg +=
" doesn't support get_writable_database_again()";
283 string msg =
"Backend ";
285 msg +=
" doesn't support get_writable_database_path_again()";
298 if (RUNNING_ON_VALGRIND) {
static const char * get_xapian_progsrv_command()
Get the command line required to run xapian-progsrv.
virtual Xapian::Database get_remote_database(const std::vector< std::string > &files, unsigned int timeout)
Get a remote database instance with the specified timeout.
This class is used to access a database, or a group of databases.
Xapian::Database get_database(const std::vector< std::string > &files)
Get a database instance of the current type.
InvalidOperationError indicates the API was used in an invalid way.
DatabaseOpeningError indicates failure to open a database.
virtual std::string get_generated_database_path(const std::string &name)
Get the path to use for generating a database, if supported.
Xapian::WritableDatabase get_writable_database(const string &dbname)
std::string get_database_path(const std::vector< std::string > &files)
Get the path of a database instance, if such a thing exists.
virtual Xapian::WritableDatabase get_generated_database(const std::string &name)
Get a generated writable database instance.
C++ function versions of useful Unix commands.
Utility functions for testing files.
virtual std::string get_writable_database_path(const std::string &name)
Get the path of a writable database instance, if such a thing exists.
virtual Xapian::WritableDatabase get_writable_database(const std::string &name, const std::string &file)
Get a writable database instance.
include <sys/stat.h> with portability enhancements
void rm_rf(const string &filename)
Remove a directory and contents, just like the Unix "rm -rf" command.
bool create_dir_if_needed(const std::string &dirname)
Create the directory dirname if needed.
InvalidArgumentError indicates an invalid parameter value was passed to the API.
virtual Xapian::WritableDatabase get_writable_database_again()
Create a WritableDatabase object for the last opened WritableDatabase.
virtual Xapian::Database get_database_by_path(const std::string &path)
Get a database instance by path.
Base class for backend handling in test harness.
This class provides read/write access to a database.
Public interfaces for the Xapian library.
virtual Xapian::WritableDatabase get_remote_writable_database(std::string args)
Get a remote Xapian::WritableDatabase instance with specified args.
virtual std::string get_writable_database_path_again()
Get the path of the last opened WritableDatabase.
bool dir_exists(const char *path)
Test if a directory exists.
virtual void clean_up()
Called after each test, to perform any necessary cleanup.
virtual ~BackendManager()
We have virtual methods and want to be able to delete derived classes using a pointer to the base cla...
virtual Xapian::Database do_get_database(const std::vector< std::string > &files)
Virtual method implementing get_database().
virtual std::string do_get_database_path(const std::vector< std::string > &files)
Virtual method implementing get_database_path().
void index_to(Xapian::WritableDatabase &db)
virtual Xapian::Database get_writable_database_as_database()
Create a Database object for the last opened WritableDatabase.
virtual std::string get_writable_database_args(const std::string &path, unsigned int timeout)
Get the args for opening a writable remote database with the specified timeout.
utility functions for indexing testcase data
virtual std::string get_compaction_output_path(const std::string &name)
Get a path to compact a database to.
bool path_exists(const char *path)
Test if a path exists.
virtual void finalise_generated_database(const std::string &name)
Finalise the generated database.
void index_files_to_database(Xapian::WritableDatabase &database, const std::vector< std::string > &files)
Index data from zero or more text files into a database.