aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2010-02-15 11:31:32 -0800
committerBen Pfaff <blp@nicira.com>2010-02-15 11:31:32 -0800
commit7446f1480bb27ccb63feab066d901cc940d52462 (patch)
tree9135e88fc73dd1c8dfa352bdd25b90a8abb2c0e4 /tests
parent475afa1b2c0ced20b47ef8cba25ad5d59c560a08 (diff)
ovsdb: Allow ovsdb_log_open()'s caller to choose whether to lock.
The current callers of ovsdb_log_open() always want to lock the file if they are accessing it for read/write access. An upcoming commit will add a new caller that does not fit this model (it wants to lock the file across a wider region) and so the caller should be able to choose whether to do locking. This commit adds that ability. Also, get rid of the use of <fcntl.h> flags to choose the open mode, which has always seemed somewhat crude and which this change would make even cruder.
Diffstat (limited to 'tests')
-rw-r--r--tests/ovsdb-log.at60
-rw-r--r--tests/test-ovsdb.c32
2 files changed, 41 insertions, 51 deletions
diff --git a/tests/ovsdb-log.at b/tests/ovsdb-log.at
index 8aeb33b5..507ef8ea 100644
--- a/tests/ovsdb-log.at
+++ b/tests/ovsdb-log.at
@@ -4,11 +4,11 @@ AT_SETUP([create empty, reread])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([log])
AT_CHECK(
- [test-ovsdb log-io file 'O_CREAT|O_RDWR'], [0],
+ [test-ovsdb log-io file create], [0],
[file: open successful
], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read], [0],
+ [test-ovsdb log-io file read-only read], [0],
[file: open successful
file: read: end of log
], [ignore])
@@ -19,12 +19,12 @@ AT_SETUP([write one, reread])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]']], [0],
[[file: open successful
file: write:[0] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read], [0],
+ [test-ovsdb log-io file read-only read read], [0],
[[file: open successful
file: read: [0]
file: read: end of log
@@ -32,21 +32,21 @@ file: read: end of log
AT_CHECK([test -f .file.~lock~])
AT_CLEANUP
-AT_SETUP([check that O_EXCL works])
+AT_SETUP([check that create fails if file exists])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[1]']], [0],
+ [[test-ovsdb log-io file create 'write:[1]']], [0],
[[file: open successful
file: write:[1] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read], [0],
+ [test-ovsdb log-io file read-only read], [0],
[[file: open successful
file: read: [1]
]], [ignore])
AT_CHECK(
- [test-ovsdb -vlockfile:console:emer log-io file 'O_CREAT|O_RDWR|O_EXCL' read], [1],
+ [test-ovsdb -vlockfile:console:emer log-io file create read], [1],
[], [test-ovsdb: I/O error: create: file failed (File exists)
])
AT_CHECK([test -f .file.~lock~])
@@ -56,14 +56,14 @@ AT_SETUP([write one, reread])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
file: write:[2] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
+ [test-ovsdb log-io file read-only read read read read], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -77,14 +77,14 @@ AT_SETUP([write one, reread, append])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
file: write:[2] successful
]], [ignore])
AT_CHECK(
- [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["append"]']], [0],
+ [[test-ovsdb log-io file read/write read read read 'write:["append"]']], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -92,7 +92,7 @@ file: read: [2]
file: write:["append"] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0],
+ [test-ovsdb log-io file read-only read read read read read], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -107,20 +107,20 @@ AT_SETUP([write, reread one, overwrite])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
file: write:[2] successful
]], [ignore])
AT_CHECK(
- [[test-ovsdb log-io file 'O_RDWR' read 'write:["more data"]']], [0],
+ [[test-ovsdb log-io file read/write read 'write:["more data"]']], [0],
[[file: open successful
file: read: [0]
file: write:["more data"] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read], [0],
+ [test-ovsdb log-io file read-only read read read], [0],
[[file: open successful
file: read: [0]
file: read: ["more data"]
@@ -133,7 +133,7 @@ AT_SETUP([write, add corrupted data, read])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
@@ -141,7 +141,7 @@ file: write:[2] successful
]], [ignore])
AT_CHECK([echo 'xxx' >> file])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
+ [test-ovsdb log-io file read-only read read read read], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -155,7 +155,7 @@ AT_SETUP([write, add corrupted data, read, overwrite])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
@@ -163,7 +163,7 @@ file: write:[2] successful
]], [ignore])
AT_CHECK([echo 'xxx' >> file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_RDWR' read read read read 'write:[3]']], [0],
+ [[test-ovsdb log-io file read/write read read read read 'write:[3]']], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -172,7 +172,7 @@ file: read failed: syntax error: file: parse error at offset 174 in header line
file: write:[3] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0],
+ [test-ovsdb log-io file read-only read read read read read], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -187,7 +187,7 @@ AT_SETUP([write, corrupt some data, read, overwrite])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
@@ -198,7 +198,7 @@ AT_CHECK([mv file.tmp file])
AT_CHECK([[grep -c '\[3]' file]], [0], [1
])
AT_CHECK(
- [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0],
+ [[test-ovsdb log-io file read/write read read read 'write:["longer data"]']], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -206,7 +206,7 @@ file: read failed: syntax error: file: 4 bytes starting at offset 170 have SHA-1
file: write:["longer data"] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
+ [test-ovsdb log-io file read-only read read read read], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -220,7 +220,7 @@ AT_SETUP([write, truncate file, read, overwrite])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
@@ -231,7 +231,7 @@ AT_CHECK([mv file.tmp file])
AT_CHECK([[grep -c '^2$' file]], [0], [1
])
AT_CHECK(
- [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0],
+ [[test-ovsdb log-io file read/write read read read 'write:["longer data"]']], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -239,7 +239,7 @@ file: read failed: I/O error: file: error reading 4 bytes starting at offset 170
file: write:["longer data"] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
+ [test-ovsdb log-io file read-only read read read read], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -253,7 +253,7 @@ AT_SETUP([write bad JSON, read, overwrite])
AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file])
AT_CHECK(
- [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
+ [[test-ovsdb log-io file create 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful
file: write:[0] successful
file: write:[1] successful
@@ -261,7 +261,7 @@ file: write:[2] successful
]], [ignore])
AT_CHECK([[printf '%s\n%s\n' 'OVSDB JSON 5 d910b02871075d3156ec8675dfc95b7d5d640aa6' 'null' >> file]])
AT_CHECK(
- [[test-ovsdb log-io file 'O_RDWR' read read read read 'write:["replacement data"]']], [0],
+ [[test-ovsdb log-io file read/write read read read read 'write:["replacement data"]']], [0],
[[file: open successful
file: read: [0]
file: read: [1]
@@ -270,7 +270,7 @@ file: read failed: syntax error: file: 5 bytes starting at offset 228 are not va
file: write:["replacement data"] successful
]], [ignore])
AT_CHECK(
- [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0],
+ [test-ovsdb log-io file read-only read read read read read], [0],
[[file: open successful
file: read: [0]
file: read: [1]
diff --git a/tests/test-ovsdb.c b/tests/test-ovsdb.c
index 2e12d495..48a5007f 100644
--- a/tests/test-ovsdb.c
+++ b/tests/test-ovsdb.c
@@ -257,34 +257,24 @@ static void
do_log_io(int argc, char *argv[])
{
const char *name = argv[1];
- char *mode = argv[2];
+ char *mode_string = argv[2];
struct ovsdb_error *error;
+ enum ovsdb_log_open_mode mode;
struct ovsdb_log *log;
- char *save_ptr = NULL;
- const char *token;
- int flags;
int i;
- for (flags = 0, token = strtok_r(mode, " |", &save_ptr); token != NULL;
- token = strtok_r(NULL, " |", &save_ptr))
- {
- if (!strcmp(token, "O_RDONLY")) {
- flags |= O_RDONLY;
- } else if (!strcmp(token, "O_RDWR")) {
- flags |= O_RDWR;
- } else if (!strcmp(token, "O_TRUNC")) {
- flags |= O_TRUNC;
- } else if (!strcmp(token, "O_CREAT")) {
- flags |= O_CREAT;
- } else if (!strcmp(token, "O_EXCL")) {
- flags |= O_EXCL;
- } else if (!strcmp(token, "O_TRUNC")) {
- flags |= O_TRUNC;
- }
+ if (!strcmp(mode_string, "read-only")) {
+ mode = OVSDB_LOG_READ_ONLY;
+ } else if (!strcmp(mode_string, "read/write")) {
+ mode = OVSDB_LOG_READ_WRITE;
+ } else if (!strcmp(mode_string, "create")) {
+ mode = OVSDB_LOG_CREATE;
+ } else {
+ ovs_fatal(0, "unknown log-io open mode \"%s\"", mode_string);
}
- check_ovsdb_error(ovsdb_log_open(name, flags, &log));
+ check_ovsdb_error(ovsdb_log_open(name, mode, -1, &log));
printf("%s: open successful\n", name);
for (i = 3; i < argc; i++) {