tests: Fix MockXenAPI to make the ovs-xapi-sync test case pass again.
authorBen Pfaff <blp@nicira.com>
Wed, 27 Jun 2012 16:56:20 +0000 (09:56 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 27 Jun 2012 16:56:37 +0000 (09:56 -0700)
Commit 1dc6839d2d (xenserver: Improve efficiency of code by using
get_all_records_where()) updated the ovs-xapi-sync script and caused a unit
test failure.  This fixes it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
tests/MockXenAPI.py

index 0c02dd5..cca1571 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2011 Nicira, Inc.
+# Copyright (c) 2011, 2012 Nicira, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import re
+
 def xapi_local():
     return Session()
 
@@ -48,6 +50,20 @@ class Table(object):
     def get_all(self):
         return [RecordRef(rec) for rec in self.records]
 
+    def get_all_records_where(self, condition):
+        k, v = re.match(r'field "([^"]*)"="([^"]*)"$', condition).groups()
+        d = {}
+
+        # I'm sure that the keys used in the dictionary below are wrong
+        # but I can't find any documentation on get_all_records_where
+        # and this satisfies the current test case.
+        i = 0
+        for rec in self.records:
+            if rec[k] == v:
+                d[i] = rec
+                i += 1
+        return d
+
     def get_by_uuid(self, uuid):
         recs = [rec for rec in self.records if rec["uuid"] == uuid]
         if len(recs) != 1: