diff --git a/tests/ovsdb-macros.at b/tests/ovsdb-macros.at
index c1aa619..6388947 100644
--- a/tests/ovsdb-macros.at
+++ b/tests/ovsdb-macros.at
@@ -12,3 +12,140 @@ m4_define([OVSDB_INIT],
            "table": "Open_vSwitch",
            "row": {}}]']],
      [0], [ignore], [ignore])])
+
+# OVSDB_CHECK_POSITIVE(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
+#
+# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
+# status 0 and prints OUTPUT on stdout.
+#
+# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
+m4_define([OVSDB_CHECK_POSITIVE],
+  [AT_SETUP([$1])
+   AT_KEYWORDS([ovsdb positive $4])
+   AT_CHECK([test-ovsdb $2], [0], [$3
+], [])
+   AT_CLEANUP])
+
+# OVSDB_CHECK_POSITIVE_PY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ],
+#                         [PY-CHECK])
+#
+# Runs "test-ovsdb.py TEST-OVSDB-ARGS" and checks that it exits with
+# status 0 and prints OUTPUT on stdout.
+#
+# PY-CHECK is expanded before the check.  It can check for features of the
+# Python implementation that are required for the test to pass.
+#
+# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
+m4_define([OVSDB_CHECK_POSITIVE_PY],
+  [AT_SETUP([$1])
+   AT_SKIP_IF([test $HAVE_PYTHON2 = no])
+   $6
+   AT_KEYWORDS([ovsdb positive Python $4])
+   AT_CHECK([$PYTHON2 $srcdir/test-ovsdb.py $2], [0], [$3
+], [])
+   AT_CLEANUP])
+
+# OVSDB_CHECK_POSITIVE_PY3(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ],
+#                          [PY-CHECK])
+#
+# Runs "test-ovsdb.py TEST-OVSDB-ARGS" and checks that it exits with
+# status 0 and prints OUTPUT on stdout.
+#
+# PY-CHECK is expanded before the check.  It can check for features of the
+# Python implementation that are required for the test to pass.
+#
+# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
+m4_define([OVSDB_CHECK_POSITIVE_PY3],
+  [AT_SETUP([$1])
+   AT_SKIP_IF([test $HAVE_PYTHON3 = no])
+   $6
+   AT_KEYWORDS([ovsdb positive Python $4])
+   AT_CHECK([$PYTHON3 $srcdir/test-ovsdb.py $2], [0], [$3
+], [])
+   AT_CLEANUP])
+
+# OVSDB_CHECK_POSITIVE_CPY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS],
+#                          [PREREQ], [PY2-CHECK], [PY3-CHECK])
+#
+# Runs identical C and Python tests, as specified.
+m4_define([OVSDB_CHECK_POSITIVE_CPY],
+  [OVSDB_CHECK_POSITIVE([$1 - C], [$2], [$3], [$4], [$5])
+   OVSDB_CHECK_POSITIVE_PY([$1 - Python2], [$2], [$3], [$4], [$5], [$6])
+   OVSDB_CHECK_POSITIVE_PY3([$1 - Python3], [$2], [$3], [$4], [$5], [$7])])
+
+# OVSDB_CHECK_NEGATIVE(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
+#
+# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
+# status 1 and that its output on stdout contains substring OUTPUT.
+# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
+m4_define([OVSDB_CHECK_NEGATIVE],
+  [AT_SETUP([$1])
+   AT_KEYWORDS([ovsdb negative $4])
+   AT_CHECK([test-ovsdb $2], [1], [], [stderr])
+   m4_assert(m4_len([$3]))
+   AT_CHECK(
+     [if grep -F -e "AS_ESCAPE([$3])" stderr
+      then
+        :
+      else
+        exit 99
+      fi],
+            [0], [ignore], [ignore])
+   AT_CLEANUP])
+
+# OVSDB_CHECK_NEGATIVE_PY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
+#
+# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
+# status 1 and that its output on stdout contains substring OUTPUT.
+# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
+m4_define([OVSDB_CHECK_NEGATIVE_PY],
+  [AT_SETUP([$1])
+   AT_SKIP_IF([test $HAVE_PYTHON2 = no])
+   AT_KEYWORDS([ovsdb negative $4])
+   AT_CHECK([$PYTHON2 $srcdir/test-ovsdb.py $2], [1], [], [stderr])
+   m4_assert(m4_len([$3]))
+   AT_CHECK(
+     [if grep -F -e "AS_ESCAPE([$3])" stderr
+      then
+        :
+      else
+        exit 99
+      fi],
+            [0], [ignore], [ignore])
+   AT_CLEANUP])
+
+# OVSDB_CHECK_NEGATIVE_PY3(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
+#
+# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
+# status 1 and that its output on stdout contains substring OUTPUT.
+# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
+m4_define([OVSDB_CHECK_NEGATIVE_PY],
+  [AT_SETUP([$1])
+   AT_SKIP_IF([test $HAVE_PYTHON3 = no])
+   AT_KEYWORDS([ovsdb negative $4])
+   AT_CHECK([$PYTHON3 $srcdir/test-ovsdb.py $2], [1], [], [stderr])
+   m4_assert(m4_len([$3]))
+   AT_CHECK(
+     [if grep -F -e "AS_ESCAPE([$3])" stderr
+      then
+        :
+      else
+        exit 99
+      fi],
+            [0], [ignore], [ignore])
+   AT_CLEANUP])
+
+# OVSDB_CHECK_NEGATIVE_CPY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS],
+#                          [PREREQ])
+#
+# Runs identical C and Python tests, as specified.
+m4_define([OVSDB_CHECK_NEGATIVE_CPY],
+  [OVSDB_CHECK_NEGATIVE([$1 - C], [$2], [$3], [$4], [$5])
+   OVSDB_CHECK_NEGATIVE_PY([$1 - Python2], [$2], [$3], [$4], [$5])
+   OVSDB_CHECK_NEGATIVE_PY3([$1 - Python3], [$2], [$3], [$4], [$5])])
+
+OVS_START_SHELL_HELPERS
+ovsdb_client_wait() {
+    ovsdb-client -vconsole:warn -vreconnect:err -vjsonrpc:err -vtimeval:off -vfile -vsyslog:off -vvlog:off --timeout=30 wait "$@"
+}
+OVS_END_SHELL_HELPERS
diff --git a/tests/ovsdb.at b/tests/ovsdb.at
index 0c9856d..b388ccf 100644
--- a/tests/ovsdb.at
+++ b/tests/ovsdb.at
@@ -1,140 +1,3 @@
-# OVSDB_CHECK_POSITIVE(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
-#
-# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
-# status 0 and prints OUTPUT on stdout.
-#
-# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
-m4_define([OVSDB_CHECK_POSITIVE], 
-  [AT_SETUP([$1])
-   AT_KEYWORDS([ovsdb positive $4])
-   AT_CHECK([test-ovsdb $2], [0], [$3
-], [])
-   AT_CLEANUP])
-
-# OVSDB_CHECK_POSITIVE_PY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ],
-#                         [PY-CHECK])
-#
-# Runs "test-ovsdb.py TEST-OVSDB-ARGS" and checks that it exits with
-# status 0 and prints OUTPUT on stdout.
-#
-# PY-CHECK is expanded before the check.  It can check for features of the
-# Python implementation that are required for the test to pass.
-#
-# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
-m4_define([OVSDB_CHECK_POSITIVE_PY], 
-  [AT_SETUP([$1])
-   AT_SKIP_IF([test $HAVE_PYTHON2 = no])
-   $6
-   AT_KEYWORDS([ovsdb positive Python $4])
-   AT_CHECK([$PYTHON2 $srcdir/test-ovsdb.py $2], [0], [$3
-], [])
-   AT_CLEANUP])
-
-# OVSDB_CHECK_POSITIVE_PY3(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ],
-#                          [PY-CHECK])
-#
-# Runs "test-ovsdb.py TEST-OVSDB-ARGS" and checks that it exits with
-# status 0 and prints OUTPUT on stdout.
-#
-# PY-CHECK is expanded before the check.  It can check for features of the
-# Python implementation that are required for the test to pass.
-#
-# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
-m4_define([OVSDB_CHECK_POSITIVE_PY3],
-  [AT_SETUP([$1])
-   AT_SKIP_IF([test $HAVE_PYTHON3 = no])
-   $6
-   AT_KEYWORDS([ovsdb positive Python $4])
-   AT_CHECK([$PYTHON3 $srcdir/test-ovsdb.py $2], [0], [$3
-], [])
-   AT_CLEANUP])
-
-# OVSDB_CHECK_POSITIVE_CPY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS],
-#                          [PREREQ], [PY2-CHECK], [PY3-CHECK])
-#
-# Runs identical C and Python tests, as specified.
-m4_define([OVSDB_CHECK_POSITIVE_CPY],
-  [OVSDB_CHECK_POSITIVE([$1 - C], [$2], [$3], [$4], [$5])
-   OVSDB_CHECK_POSITIVE_PY([$1 - Python2], [$2], [$3], [$4], [$5], [$6])
-   OVSDB_CHECK_POSITIVE_PY3([$1 - Python3], [$2], [$3], [$4], [$5], [$7])])
-
-# OVSDB_CHECK_NEGATIVE(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
-#
-# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
-# status 1 and that its output on stdout contains substring OUTPUT.
-# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.  
-m4_define([OVSDB_CHECK_NEGATIVE], 
-  [AT_SETUP([$1])
-   AT_KEYWORDS([ovsdb negative $4])
-   AT_CHECK([test-ovsdb $2], [1], [], [stderr])
-   m4_assert(m4_len([$3]))
-   AT_CHECK(
-     [if grep -F -e "AS_ESCAPE([$3])" stderr
-      then
-        :
-      else
-        exit 99
-      fi], 
-            [0], [ignore], [ignore])
-   AT_CLEANUP])
-
-# OVSDB_CHECK_NEGATIVE_PY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
-#
-# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
-# status 1 and that its output on stdout contains substring OUTPUT.
-# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
-m4_define([OVSDB_CHECK_NEGATIVE_PY],
-  [AT_SETUP([$1])
-   AT_SKIP_IF([test $HAVE_PYTHON2 = no])
-   AT_KEYWORDS([ovsdb negative $4])
-   AT_CHECK([$PYTHON2 $srcdir/test-ovsdb.py $2], [1], [], [stderr])
-   m4_assert(m4_len([$3]))
-   AT_CHECK(
-     [if grep -F -e "AS_ESCAPE([$3])" stderr
-      then
-        :
-      else
-        exit 99
-      fi], 
-            [0], [ignore], [ignore])
-   AT_CLEANUP])
-
-# OVSDB_CHECK_NEGATIVE_PY3(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS], [PREREQ])
-#
-# Runs "test-ovsdb TEST-OVSDB-ARGS" and checks that it exits with
-# status 1 and that its output on stdout contains substring OUTPUT.
-# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
-m4_define([OVSDB_CHECK_NEGATIVE_PY],
-  [AT_SETUP([$1])
-   AT_SKIP_IF([test $HAVE_PYTHON3 = no])
-   AT_KEYWORDS([ovsdb negative $4])
-   AT_CHECK([$PYTHON3 $srcdir/test-ovsdb.py $2], [1], [], [stderr])
-   m4_assert(m4_len([$3]))
-   AT_CHECK(
-     [if grep -F -e "AS_ESCAPE([$3])" stderr
-      then
-        :
-      else
-        exit 99
-      fi],
-            [0], [ignore], [ignore])
-   AT_CLEANUP])
-
-# OVSDB_CHECK_NEGATIVE_CPY(TITLE, TEST-OVSDB-ARGS, OUTPUT, [KEYWORDS],
-#                          [PREREQ])
-#
-# Runs identical C and Python tests, as specified.
-m4_define([OVSDB_CHECK_NEGATIVE_CPY],
-  [OVSDB_CHECK_NEGATIVE([$1 - C], [$2], [$3], [$4], [$5])
-   OVSDB_CHECK_NEGATIVE_PY([$1 - Python2], [$2], [$3], [$4], [$5])
-   OVSDB_CHECK_NEGATIVE_PY3([$1 - Python3], [$2], [$3], [$4], [$5])])
-
-OVS_START_SHELL_HELPERS
-ovsdb_client_wait() {
-    ovsdb-client -vconsole:warn -vreconnect:err -vjsonrpc:err -vtimeval:off -vfile -vsyslog:off -vvlog:off --timeout=30 wait "$@"
-}
-OVS_END_SHELL_HELPERS
-
 m4_include([tests/ovsdb-log.at])
 m4_include([tests/ovsdb-types.at])
 m4_include([tests/ovsdb-data.at])
