summaryrefslogtreecommitdiff
path: root/tests/ovsdb-server.at
diff options
context:
space:
mode:
authorLance Richardson <lrichard@redhat.com>2016-10-25 12:38:48 -0400
committerBen Pfaff <blp@ovn.org>2016-11-01 13:35:45 -0700
commit9c1a11820e9e660737ce6b1f412684611e095cc2 (patch)
treedb3910d6266d0cfcf01773198598b00bc69fd262 /tests/ovsdb-server.at
parent2fd72a63aac4aea6384bc6f89925eac4752521bc (diff)
downloadopenvswitch-9c1a11820e9e660737ce6b1f412684611e095cc2.tar.gz
ovsdb-server: Implement read-only remote connection type.
Adds a new "read_only" column for remote connections. Operations that would alter the state of the database are not permitted on connections for which the "read_only" column is set to "true". Signed-off-by: Lance Richardson <lrichard@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'tests/ovsdb-server.at')
-rw-r--r--tests/ovsdb-server.at67
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/ovsdb-server.at b/tests/ovsdb-server.at
index d04941bc6..ae1aab8b5 100644
--- a/tests/ovsdb-server.at
+++ b/tests/ovsdb-server.at
@@ -1367,3 +1367,70 @@ AT_CHECK([diff dump1 dump2])
dnl OVSDB_SERVER_SHUTDOWN
dnl OVSDB_SERVER_SHUTDOWN2
AT_CLEANUP
+
+AT_SETUP([ovsdb-server/read-only db:ptcp connection])
+AT_KEYWORDS([ovsdb server read-only])
+AT_DATA([schema],
+ [[{"name": "mydb",
+ "tables": {
+ "Root": {
+ "columns": {
+ "managers": {
+ "type": {
+ "key": {"type": "uuid", "refTable": "Manager"},
+ "min": 0,
+ "max": "unlimited"}}}},
+ "Manager": {
+ "columns": {
+ "target": {
+ "type": "string"},
+ "read_only": {
+ "type": {
+ "key": "boolean",
+ "min": 0,
+ "max": 1}},
+ "is_connected": {
+ "type": {
+ "key": "boolean",
+ "min": 0,
+ "max": 1}}}},
+ "ordinals": {
+ "columns": {
+ "number": {"type": "integer"},
+ "name": {"type": "string"}},
+ "indexes": [["number"]]}
+ },
+ "version": "5.1.3",
+ "cksum": "12345678 9"
+}
+]])
+AT_CHECK([ovsdb-tool create db schema], [0], [ignore], [ignore])
+AT_CHECK(
+ [[ovsdb-tool transact db \
+ '["mydb",
+ {"op": "insert",
+ "table": "Root",
+ "row": {
+ "managers": ["set", [["named-uuid", "x"]]]}},
+ {"op": "insert",
+ "table": "Manager",
+ "uuid-name": "x",
+ "row": {"target": "ptcp:0:127.0.0.1",
+ "read_only": true}}]']], [0], [ignore], [ignore])
+
+AT_CHECK([ovsdb-server --log-file --detach --no-chdir --pidfile --remote=db:mydb,Root,managers db], [0], [ignore], [ignore])
+PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
+AT_CHECK([ovsdb-client get-schema-version tcp:127.0.0.1:$TCP_PORT mydb], [0], [5.1.3
+])
+
+AT_CHECK([ovsdb-client transact tcp:127.0.0.1:$TCP_PORT \
+ ['["mydb",
+ {"op": "insert",
+ "table": "ordinals",
+ "row": {"name": "two", "number": '2'}}
+ ]']], [0], [stdout], [ignore])
+cat stdout >> output
+AT_CHECK([${PERL} $srcdir/uuidfilt.pl output], [0], [[[{"details":"insert operation not allowed when database server is in read only mode","error":"not allowed"}]]
+], [ignore])
+OVSDB_SERVER_SHUTDOWN
+AT_CLEANUP