diff options
author | Amitabha Biswas <azbiswas@gmail.com> | 2016-10-12 14:36:57 -0700 |
---|---|---|
committer | Russell Bryant <russell@ovn.org> | 2016-10-14 22:01:59 -0400 |
commit | 2d54d8011e144d3393f6bc1b320db34c6a363ae5 (patch) | |
tree | e76bd10d3ac8adeeb2fc28b931e085d1cb38e5c1 /tests | |
parent | 36af136b690cea4c99c723d833cca1815cb91b25 (diff) | |
download | openvswitch-2d54d8011e144d3393f6bc1b320db34c6a363ae5.tar.gz |
Python-IDL: getattr after mutate fix
This commit returns the updated column value when getattr is done
after a mutate operation is performed (but before the commit).
Signed-off-by: Amitabha Biswas <azbiswas@gmail.com>
Reported-by: Richard Theis <rtheis@us.ibm.com>
Reported-at: http://openvswitch.org/pipermail/dev/2016-September/080120.html
Fixes: a59912a0ee8e ("python: Add support for partial map and set updates")
Signed-off-by: Russell Bryant <russell@ovn.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ovsdb-idl.at | 19 | ||||
-rw-r--r-- | tests/test-ovsdb.py | 36 |
2 files changed, 48 insertions, 7 deletions
diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at index a8a51816f..9ed431bf9 100644 --- a/tests/ovsdb-idl.at +++ b/tests/ovsdb-idl.at @@ -1094,15 +1094,18 @@ OVSDB_CHECK_IDL_PY([partial-map idl], [['["idltest", {"op":"insert", "table":"simple2", "row":{"name":"myString1","smap":["map",[["key1","value1"],["key2","value2"]]]} }]'] ], - [?simple2:name,smap,imap 'partialmapinsertelement' 'partialmapinsertmultipleelements' 'partialmapdelelements'], + [?simple2:name,smap,imap 'partialmapinsertelement' 'partialmapinsertmultipleelements' 'partialmapdelelements' 'partialmapmutatenew'], [[000: name=myString1 smap=[(key1 value1) (key2 value2)] imap=[] 001: commit, status=success 002: name=String2 smap=[(key1 myList1) (key2 value2)] imap=[(3 myids2)] 003: commit, status=success -004: name=String2 smap=[(key1 myList1) (key2 myList2) (key3 myList3)] imap=[(3 myids2)] +004: name=String2 smap=[(key1 myList1) (key2 myList2) (key3 myList3) (key4 myList4)] imap=[(3 myids2)] 005: commit, status=success 006: name=String2 smap=[(key2 myList2)] imap=[(3 myids2)] -007: done +007: commit, status=success +008: name=String2 smap=[(key2 myList2)] imap=[(3 myids2)] +008: name=String2New smap=[(key1 newList1) (key2 newList2)] imap=[] +009: done ]]) m4_define([OVSDB_CHECK_IDL_PARTIAL_UPDATE_SET_COLUMN], @@ -1145,7 +1148,7 @@ OVSDB_CHECK_IDL_PY([partial-set idl], {"op":"mutate", "table":"simple3", "where":[["_uuid", "==", ["named-uuid", "newrow"]]], "mutations": [["uset", "insert", ["set", [["uuid", "000d2f6a-76af-412f-b59d-e7bcd3e84eff"]]]]]}]'] ], - ['partialrenamesetadd' 'partialduplicateadd' 'partialsetdel' 'partialsetref' 'partialsetoverrideops' 'partialsetmutatenew'], + ['partialrenamesetadd' 'partialduplicateadd' 'partialsetdel' 'partialsetref' 'partialsetoverrideops' 'partialsetadddelete' 'partialsetmutatenew'], [[000: name=mySet1 uset=[<0> <1>] 001: commit, status=success 002: name=String2 uset=[<0> <1> <2>] @@ -1158,9 +1161,11 @@ OVSDB_CHECK_IDL_PY([partial-set idl], 009: commit, status=success 010: name=String2 uset=[<3>] 011: commit, status=success -012: name=String2 uset=[<3>] -012: name=String3 uset=[<4>] -013: done +012: name=String2 uset=[<4> <5>] +013: commit, status=success +014: name=String2 uset=[<4> <5>] +014: name=String3 uset=[<6>] +015: done ]]) m4_define([OVSDB_CHECK_IDL_NOTIFY_PY], diff --git a/tests/test-ovsdb.py b/tests/test-ovsdb.py index b27ad28ac..185215ae6 100644 --- a/tests/test-ovsdb.py +++ b/tests/test-ovsdb.py @@ -431,38 +431,63 @@ def idl_set(idl, commands, step): l1.k = [l1] elif name == 'partialmapinsertelement': row = idltest_find_simple2(idl, 'myString1') + len_smap = len(getattr(row, 'smap')) row.setkey('smap', 'key1', 'myList1') + len_imap = len(getattr(row, 'imap')) row.setkey('imap', 3, 'myids2') row.__setattr__('name', 'String2') + assert len(getattr(row, 'smap')) == len_smap + assert len(getattr(row, 'imap')) == len_imap + 1 elif name == 'partialmapinsertmultipleelements': row = idltest_find_simple2(idl, 'String2') + len_smap = len(getattr(row, 'smap')) row.setkey('smap', 'key2', 'myList2') row.setkey('smap', 'key3', 'myList3') + row.setkey('smap', 'key4', 'myList4') + assert len(getattr(row, 'smap')) == len_smap + 2 elif name == 'partialmapdelelements': row = idltest_find_simple2(idl, 'String2') + len_smap = len(getattr(row, 'smap')) row.delkey('smap', 'key1', 'myList1') row.delkey('smap', 'key2', 'wrongvalue') row.delkey('smap', 'key3') + row.delkey('smap', 'key4') + assert len(getattr(row, 'smap')) == len_smap - 3 + elif name == 'partialmapmutatenew': + new_row2 = txn.insert(idl.tables["simple2"]) + setattr(new_row2, 'name', 'String2New') + new_row2.setkey('smap', 'key1', 'newList1') + assert len(getattr(new_row2, 'smap')) == 1 + new_row2.setkey('smap', 'key2', 'newList2') + assert len(getattr(new_row2, 'smap')) == 2 elif name == 'partialrenamesetadd': row = idltest_find_simple3(idl, 'mySet1') + old_size = len(getattr(row, 'uset', [])) row.addvalue('uset', uuid.UUID("001e43d2-dd3f-4616-ab6a-83a490bb0991")) row.__setattr__('name', 'String2') + assert len(getattr(row, 'uset', [])) == old_size + 1 elif name == 'partialduplicateadd': row = idltest_find_simple3(idl, 'String2') + old_size = len(getattr(row, 'uset', [])) row.addvalue('uset', uuid.UUID("0026b3ba-571b-4729-8227-d860a5210ab8")) row.addvalue('uset', uuid.UUID("0026b3ba-571b-4729-8227-d860a5210ab8")) + assert len(getattr(row, 'uset', [])) == old_size + 1 elif name == 'partialsetdel': row = idltest_find_simple3(idl, 'String2') + old_size = len(getattr(row, 'uset', [])) row.delvalue('uset', uuid.UUID("001e43d2-dd3f-4616-ab6a-83a490bb0991")) + assert len(getattr(row, 'uset', [])) == old_size - 1 elif name == 'partialsetref': new_row = txn.insert(idl.tables["simple4"]) new_row.__setattr__('name', 'test') row = idltest_find_simple3(idl, 'String2') + old_size = len(getattr(row, 'uref', [])) row.addvalue('uref', new_row.uuid) + assert len(getattr(row, 'uref', [])) == old_size + 1 elif name == 'partialsetoverrideops': row = idltest_find_simple3(idl, 'String2') row.addvalue('uset', @@ -471,12 +496,23 @@ def idl_set(idl, commands, step): uuid.UUID("0026b3ba-571b-4729-8227-d860a5210ab8")) row.__setattr__('uset', [uuid.UUID("0026b3ba-571b-4729-8227-d860a5210ab8")]) + assert len(getattr(row, 'uset', [])) == 1 + elif name == 'partialsetadddelete': + row = idltest_find_simple3(idl, 'String2') + row.addvalue('uset', + uuid.UUID('b6272353-af9c-40b7-90fe-32a43e6518a1')) + row.addvalue('uset', + uuid.UUID('1d6a71a2-dffb-426e-b2fa-b727091f9901')) + row.delvalue('uset', + uuid.UUID('0026b3ba-571b-4729-8227-d860a5210ab8')) + assert len(getattr(row, 'uset', [])) == 2 elif name == 'partialsetmutatenew': new_row41 = txn.insert(idl.tables["simple4"]) new_row41.__setattr__('name', 'new_row41') new_row3 = txn.insert(idl.tables["simple3"]) setattr(new_row3, 'name', 'String3') new_row3.addvalue('uset', new_row41.uuid) + assert len(getattr(new_row3, 'uset', [])) == 1 else: sys.stderr.write("unknown command %s\n" % name) sys.exit(1) |