コード例 #1
0
ファイル: test_util.py プロジェクト: iffy/ppd
    def test_listObjects_globFilter_value(self):
        """
        You can filter objects by glob pattern.
        """
        i = PPD()
        id1 = i.addObject({'foo': 'bar'})
        i.addObject({'hey': 'ho'})
        obj1 = i.getObject(id1)

        objects = i.listObjects({'foo': 'bar'})
        self.assertEqual(objects, [obj1])

        objects = i.listObjects({'foo': 'b*'})
        self.assertEqual(objects, [obj1])
コード例 #2
0
ファイル: test_util.py プロジェクト: iffy/ppd
    def test_listObjects_id(self):
        """
        You can just list object ids.
        """
        i = PPD()
        id1 = i.addObject({'foo': 'bar'})
        id2 = i.addObject({'hey': 'ho'})

        objects = i.listObjects(id_only=True)
        self.assertEqual(objects, [id1, id2])

        objects = i.listObjects({'foo': 'bar'}, id_only=True)
        self.assertEqual(objects, [id1])

        objects = i.listObjects({'foo': 'b*'}, id_only=True)
        self.assertEqual(objects, [id1])
コード例 #3
0
ファイル: test_util.py プロジェクト: iffy/ppd
    def test_listObjects_anchor(self):
        """
        You can list objects anchored by certain keys.
        """
        i = PPD()
        data = [
            {'unrelated': 'object'},
            {'host': 'foo.com', 'state': 'up'},
            {'host': 'foo.com', 'location': 'Africa'},
            {'host': 'foo.com', 'port': '100', 'state': 'closed'},
            {'host': 'foo.com', 'port': '100', 'state': 'open'},
            {'host': 'foo.com', 'port': '200', 'state': 'closed'},
            {'host': 'bar.com', 'state': 'down'},
        ]
        for d in data:
            i.addObject(d)

        objects = i.listObjects(anchors=['host'])
        self.assertEqual(len(objects), 2)
        foo = objects[0]
        bar = objects[1]
        self.assertEqual(foo['host'], 'foo.com')
        self.assertEqual(foo['state'], 'closed')
        self.assertEqual(foo['location'], 'Africa')
        self.assertEqual(foo['port'], '200')
        self.assertEqual(bar['host'], 'bar.com')
        self.assertEqual(bar['state'], 'down')

        objects = i.listObjects(anchors=['host', 'port'])
        self.assertEqual(len(objects), 4)
        foo = objects[0]
        self.assertEqual(foo['host'], 'foo.com')
        self.assertEqual(foo['state'], 'up')
        self.assertEqual(foo['location'], 'Africa')

        foo_port100 = objects[1]
        self.assertEqual(foo_port100['host'], 'foo.com')
        self.assertEqual(foo_port100['port'], '100')
        self.assertEqual(foo_port100['state'], 'open')

        foo_port200 = objects[2]
        self.assertEqual(foo_port200['host'], 'foo.com')
        self.assertEqual(foo_port200['port'], '200')
        self.assertEqual(foo_port200['state'], 'closed')

        bar = objects[3]
        self.assertEqual(bar['host'], 'bar.com')
コード例 #4
0
ファイル: test_util.py プロジェクト: iffy/ppd
    def test_deleteObject(self):
        """
        You can delete objects by id
        """
        i = PPD()
        id1 = i.addObject({'foo': 'bar'})
        i.deleteObject(id1)

        objects = i.listObjects()
        self.assertEqual(len(objects), 0,
            "Should have deleted the object")
コード例 #5
0
ファイル: test_util.py プロジェクト: iffy/ppd
 def test_listObjects_all(self):
     """
     You can list all objects.
     """
     i = PPD()
     id1 = i.addObject({'foo': 'bar'})
     id2 = i.addObject({'hey': 'ho'})
     objects = i.listObjects()
     obj1 = i.getObject(id1)
     obj2 = i.getObject(id2)
     self.assertEqual(objects, [obj1, obj2],
         "Should return both objects")
コード例 #6
0
ファイル: test_util.py プロジェクト: iffy/ppd
    def test_multipleUsers(self):
        """
        Two instances of PPD using the same database should see
        the other guy's changes all the time.
        """
        dbfile = self.mktemp()
        a = PPD(dbfile)
        b = PPD(dbfile)
        a.addObject({'foo': 'bar'})
        self.assertEqual(len(b.listObjects()), 1,
            "Adding should be concurrent")

        a.updateObjects({'boo': 'hoo'})
        self.assertEqual(len(b.listObjects({'boo': 'hoo'})), 1,
            "Updating should be concurrent")

        a.deleteObject(1)
        self.assertEqual(len(b.listObjects()), 0,
            "Deleting should be concurrent")

        a.addFile(StringIO('foo'), 'foo.txt', {})
        self.assertEqual(len(b.listObjects()), 1,
            "Adding files should be concurrent")
コード例 #7
0
ファイル: test_util.py プロジェクト: iffy/ppd
    def test_updateObjects_filter(self):
        """
        You can update some objects.
        """
        i = PPD()
        id1 = i.addObject({'foo': 'bar'})
        id2 = i.addObject({'hey': 'ho'})

        objects = i.updateObjects({'A': 'A'}, {'foo': '*'})
        self.assertEqual(len(objects), 1, "Should return matched objects")
        self.assertEqual(objects[0], {
            '_id': id1,
            'foo': 'bar',
            'A': 'A',
        })

        objects = i.listObjects()
        self.assertEqual(objects[1], {
            '_id': id2,
            'hey': 'ho',
        }, "Should have left other object alone")
コード例 #8
0
ファイル: test_util.py プロジェクト: iffy/ppd
 def test_listObjects_none(self):
     """
     If there are no objects, return an empty list, not None
     """
     i = PPD()
     self.assertEqual(i.listObjects(), [])