Skip to content

Commit

Permalink
ovsdb-tool: Workaround inability to replace existing file on Windows.
Browse files Browse the repository at this point in the history
rename() on an existing destination file fails on Windows. This commit
worksaround that problem.

There are two tests that test it. But both of them use the ovsdb-server's
--run option for the test and it does not exist in Windows. So change
the test to workaround the lack of that feature.

Signed-off-by: Gurucharan Shetty <[email protected]>
Acked-by: Ben Pfaff <[email protected]>
  • Loading branch information
shettyg committed Jun 26, 2014
1 parent bd270dc commit 10c119c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
3 changes: 3 additions & 0 deletions ovsdb/ovsdb-tool.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,9 @@ compact_or_convert(const char *src_name_, const char *dst_name_,

/* Replace source. */
if (in_place) {
#ifdef _WIN32
unlink(src_name);
#endif
if (rename(dst_name, src_name)) {
ovs_fatal(errno, "failed to rename \"%s\" to \"%s\"",
dst_name, src_name);
Expand Down
24 changes: 16 additions & 8 deletions tests/ovsdb-tool.at
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,9 @@ AT_CHECK(
done]],
[0], [stdout], [ignore])
dnl Dump out and check the actual database contents.
AT_CHECK([[ovsdb-server --unixctl="`pwd`"/unixctl --remote=punix:socket --run "ovsdb-client dump unix:socket ordinals" db]],
[0], [stdout], [ignore])
AT_CHECK([[ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket db]],
[0])
AT_CHECK([ovsdb-client dump unix:socket ordinals], [0], [stdout], [ignore])
AT_CHECK([${PERL} $srcdir/uuidfilt.pl stdout], [0], [dnl
ordinals table
_uuid name number
Expand All @@ -195,6 +196,7 @@ _uuid name number
<4> two 2 @&t@
<5> zero 0 @&t@
])
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
dnl Now convert the database in-place.
touch .db.tmp.~lock~
AT_CHECK([[ovsdb-tool convert db new-schema]], [0], [], [ignore])
Expand All @@ -204,8 +206,9 @@ dnl in it now.
AT_CAPTURE_FILE([db])
AT_CHECK([test `wc -l < db` -eq 4])
dnl And check that the dumped data is the same except for the removed column:
AT_CHECK([[ovsdb-server --unixctl="`pwd`"/unixctl --remote=punix:socket --run "ovsdb-client dump unix:socket ordinals" db]],
[0], [stdout], [ignore])
AT_CHECK([[ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket db]],
[0])
AT_CHECK([ovsdb-client dump unix:socket ordinals], [0], [stdout], [ignore])
AT_CHECK([${PERL} $srcdir/uuidfilt.pl stdout], [0], [dnl
ordinals table
_uuid number
Expand All @@ -217,6 +220,7 @@ _uuid number
<4> 4 @&t@
<5> 5 @&t@
])
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
AT_CLEANUP

AT_SETUP([ovsdb-tool convert -- adding a column])
Expand Down Expand Up @@ -245,8 +249,9 @@ AT_CHECK(
done]],
[0], [stdout], [ignore])
dnl Dump out and check the actual database contents.
AT_CHECK([[ovsdb-server --unixctl="`pwd`"/unixctl --remote=punix:socket --run "ovsdb-client dump unix:socket ordinals" db]],
[0], [stdout], [ignore])
AT_CHECK([[ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket db]],
[0])
AT_CHECK([ovsdb-client dump unix:socket ordinals], [0], [stdout], [ignore])
AT_CHECK([${PERL} $srcdir/uuidfilt.pl stdout], [0], [dnl
ordinals table
_uuid number
Expand All @@ -258,6 +263,7 @@ _uuid number
<4> 4 @&t@
<5> 5 @&t@
])
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
dnl Now convert the database in-place.
touch .db.tmp.~lock~
AT_CHECK([[ovsdb-tool convert db new-schema]], [0], [], [ignore])
Expand All @@ -267,8 +273,9 @@ dnl in it now.
AT_CAPTURE_FILE([db])
AT_CHECK([test `wc -l < db` -eq 4])
dnl And check that the dumped data is the same except for the added column:
AT_CHECK([[ovsdb-server --unixctl="`pwd`"/unixctl --remote=punix:socket --run "ovsdb-client dump unix:socket ordinals" db]],
[0], [stdout], [ignore])
AT_CHECK([[ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket db]],
[0])
AT_CHECK([ovsdb-client dump unix:socket ordinals], [0], [stdout], [ignore])
AT_CHECK([${PERL} $srcdir/uuidfilt.pl stdout], [0], [dnl
ordinals table
_uuid name number
Expand All @@ -280,6 +287,7 @@ _uuid name number
<4> "" 4 @&t@
<5> "" 5 @&t@
])
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
AT_CLEANUP

AT_SETUP([ovsdb-tool schema-version])
Expand Down

0 comments on commit 10c119c

Please sign in to comment.