Expose Env::GetTempDirectory() for use in C test.
This removes the use of the non-portable headers <sys/types.h> and <unistd.h> in c_test.c. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=188503102
This commit is contained in:
parent
8c8024ea33
commit
623d014a54
13
db/c.cc
13
db/c.cc
@ -5,7 +5,6 @@
|
|||||||
#include "leveldb/c.h"
|
#include "leveldb/c.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
|
||||||
#include "leveldb/cache.h"
|
#include "leveldb/cache.h"
|
||||||
#include "leveldb/comparator.h"
|
#include "leveldb/comparator.h"
|
||||||
#include "leveldb/db.h"
|
#include "leveldb/db.h"
|
||||||
@ -584,6 +583,18 @@ void leveldb_env_destroy(leveldb_env_t* env) {
|
|||||||
delete env;
|
delete env;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* leveldb_env_get_test_directory(leveldb_env_t* env) {
|
||||||
|
std::string result;
|
||||||
|
if (!env->rep->GetTestDirectory(&result).ok()) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* buffer = static_cast<char*>(malloc(result.size() + 1));
|
||||||
|
memcpy(buffer, result.data(), result.size());
|
||||||
|
buffer[result.size()] = '\0';
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
void leveldb_free(void* ptr) {
|
void leveldb_free(void* ptr) {
|
||||||
free(ptr);
|
free(ptr);
|
||||||
}
|
}
|
||||||
|
19
db/c_test.c
19
db/c_test.c
@ -8,24 +8,14 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/types.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
const char* phase = "";
|
const char* phase = "";
|
||||||
static char dbname[200];
|
|
||||||
|
|
||||||
static void StartPhase(const char* name) {
|
static void StartPhase(const char* name) {
|
||||||
fprintf(stderr, "=== Test %s\n", name);
|
fprintf(stderr, "=== Test %s\n", name);
|
||||||
phase = name;
|
phase = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* GetTempDir(void) {
|
|
||||||
const char* ret = getenv("TEST_TMPDIR");
|
|
||||||
if (ret == NULL || ret[0] == '\0')
|
|
||||||
ret = "/tmp";
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define CheckNoError(err) \
|
#define CheckNoError(err) \
|
||||||
if ((err) != NULL) { \
|
if ((err) != NULL) { \
|
||||||
fprintf(stderr, "%s:%d: %s: %s\n", __FILE__, __LINE__, phase, (err)); \
|
fprintf(stderr, "%s:%d: %s: %s\n", __FILE__, __LINE__, phase, (err)); \
|
||||||
@ -162,21 +152,19 @@ int main(int argc, char** argv) {
|
|||||||
leveldb_options_t* options;
|
leveldb_options_t* options;
|
||||||
leveldb_readoptions_t* roptions;
|
leveldb_readoptions_t* roptions;
|
||||||
leveldb_writeoptions_t* woptions;
|
leveldb_writeoptions_t* woptions;
|
||||||
|
char* dbname;
|
||||||
char* err = NULL;
|
char* err = NULL;
|
||||||
int run = -1;
|
int run = -1;
|
||||||
|
|
||||||
CheckCondition(leveldb_major_version() >= 1);
|
CheckCondition(leveldb_major_version() >= 1);
|
||||||
CheckCondition(leveldb_minor_version() >= 1);
|
CheckCondition(leveldb_minor_version() >= 1);
|
||||||
|
|
||||||
snprintf(dbname, sizeof(dbname),
|
|
||||||
"%s/leveldb_c_test-%d",
|
|
||||||
GetTempDir(),
|
|
||||||
((int) geteuid()));
|
|
||||||
|
|
||||||
StartPhase("create_objects");
|
StartPhase("create_objects");
|
||||||
cmp = leveldb_comparator_create(NULL, CmpDestroy, CmpCompare, CmpName);
|
cmp = leveldb_comparator_create(NULL, CmpDestroy, CmpCompare, CmpName);
|
||||||
env = leveldb_create_default_env();
|
env = leveldb_create_default_env();
|
||||||
cache = leveldb_cache_create_lru(100000);
|
cache = leveldb_cache_create_lru(100000);
|
||||||
|
dbname = leveldb_env_get_test_directory(env);
|
||||||
|
CheckCondition(dbname != NULL);
|
||||||
|
|
||||||
options = leveldb_options_create();
|
options = leveldb_options_create();
|
||||||
leveldb_options_set_comparator(options, cmp);
|
leveldb_options_set_comparator(options, cmp);
|
||||||
@ -382,6 +370,7 @@ int main(int argc, char** argv) {
|
|||||||
leveldb_options_destroy(options);
|
leveldb_options_destroy(options);
|
||||||
leveldb_readoptions_destroy(roptions);
|
leveldb_readoptions_destroy(roptions);
|
||||||
leveldb_writeoptions_destroy(woptions);
|
leveldb_writeoptions_destroy(woptions);
|
||||||
|
leveldb_free(dbname);
|
||||||
leveldb_cache_destroy(cache);
|
leveldb_cache_destroy(cache);
|
||||||
leveldb_comparator_destroy(cmp);
|
leveldb_comparator_destroy(cmp);
|
||||||
leveldb_env_destroy(env);
|
leveldb_env_destroy(env);
|
||||||
|
@ -245,6 +245,9 @@ LEVELDB_EXPORT void leveldb_cache_destroy(leveldb_cache_t* cache);
|
|||||||
LEVELDB_EXPORT leveldb_env_t* leveldb_create_default_env();
|
LEVELDB_EXPORT leveldb_env_t* leveldb_create_default_env();
|
||||||
LEVELDB_EXPORT void leveldb_env_destroy(leveldb_env_t*);
|
LEVELDB_EXPORT void leveldb_env_destroy(leveldb_env_t*);
|
||||||
|
|
||||||
|
/* If not NULL, the returned buffer must be released using leveldb_free(). */
|
||||||
|
LEVELDB_EXPORT char* leveldb_env_get_test_directory(leveldb_env_t*);
|
||||||
|
|
||||||
/* Utility */
|
/* Utility */
|
||||||
|
|
||||||
/* Calls free(ptr).
|
/* Calls free(ptr).
|
||||||
|
Loading…
Reference in New Issue
Block a user