示例#1
0
def t2_add_retr_object_with_attr(tree=None):
    del_tree = False
    if not tree:
        del_tree = True
        tree = YANGPathHelper()
    for p in [["container"], ["container", "deeper"]]:
        tree.register(p, TestObject("container"))
        for q_style in ["'", '"', ""]:
            for i in range(0, 5):
                tree.register(p + ["foo[id=%s%d%s]" % (
                    q_style,
                    i,
                    q_style,
                )], TestObject("t2_ObjTest%d" % i))
            for q_style in ["'", '"', ""]:
                for j in range(0, 5):
                    retr_obj = tree.get("%s/foo[id=%s%d%s]" % (
                        "/" + "/".join(p),
                        q_style,
                        j,
                        q_style,
                    ))
                    assert len(retr_obj) == 1, (
                        "retrieved the wrong number of " +
                        "objects (%d != 1)" % len(retr_obj))
                    assert isinstance(
                        retr_obj[0], TestObject), ("retrieved object " +
                                                   "was not the correct class")
                    assert retr_obj[0].name() == "t2_ObjTest%d" % j, \
                        ("retrieved object had an invalid name specified (%s != " +
                            "t2_ObjTest%d, q_style=%s)" % (retr_obj.name(), j, q_style))
    if del_tree:
        del tree
def t1_add_retr_object_plain(tree=False):
  del_tree = False
  if not tree:
    del_tree = True
    tree = YANGPathHelper()
  obj_one = TestObject("t1_ObjOneTest")
  tree.register(["obj_one"], obj_one)
  retr_obj = tree.get(["obj_one"])
  assert len(retr_obj) == 1, ("retrieved path matched the wrong number " +
        "of objects (%d != 1)" % (len(retr_obj)))
  assert isinstance(retr_obj[0], TestObject), ("retrieved object was not " +
            "the correct class")
  assert retr_obj[0].name() == "t1_ObjOneTest", ("retrieved object had an " +
            "invalid name specified (%s != t1_ObjOneTest)" % retr_obj.name())
  if del_tree:
    del tree
示例#3
0
def t1_add_retr_object_plain(tree=None):
    del_tree = False
    if not tree:
        del_tree = True
        tree = YANGPathHelper()
    obj_one = TestObject("t1_ObjOneTest")
    tree.register(["obj_one"], obj_one)
    retr_obj = tree.get(["obj_one"])
    assert len(retr_obj) == 1, ("retrieved path matched the wrong number " +
                                "of objects (%d != 1)" % (len(retr_obj)))
    assert isinstance(retr_obj[0], TestObject), ("retrieved object was not " +
                                                 "the correct class")
    assert retr_obj[0].name() == "t1_ObjOneTest", (
        "retrieved object had an " +
        "invalid name specified (%s != t1_ObjOneTest)" % retr_obj.name())
    if del_tree:
        del tree
示例#4
0
def t4_retr_obj_error(tree=False):
    del_tree = False
    if not tree:
        del_tree = True
        tree = YANGPathHelper()

    retr = tree.get("/a/non-existant/path")

    assert len(retr) == 0, ("getting a non-existant path returned the wrong " +
                            "number of objects (%d != 0)" % (len(retr)))

    passed = False
    try:
        tree.register("an-invalid-path-name", TestObject("invalid"))
    except XPathError:
        passed = True
    assert passed is True, ("setting an invalid path did not throw " +
                            "an XPathError")
def t4_retr_obj_error(tree=False):
  del_tree = False
  if not tree:
    del_tree = True
    tree = YANGPathHelper()

  retr = tree.get("/a/non-existant/path")

  assert len(retr) == 0, ("getting a non-existant path returned the wrong " +
            "number of objects (%d != 0)" % (len(retr)))

  passed = False
  try:
    tree.register("an-invalid-path-name", TestObject("invalid"))
  except XPathError:
    passed = True
  assert passed is True, ("setting an invalid path did not throw " +
        "an XPathError")
def t3_add_retr_object_hierarchy(tree=False):
  del_tree = False
  if not tree:
    del_tree = True
    tree = YANGPathHelper()
  path = []
  obj = {}
  for i in range(0, 10):
    path += ["node%d" % i]
    obj[i] = TestObject(i)
    tree.register(path, obj[i])
  path = ""
  for j in range(0, 10):
    path += "/node%d" % j
    retr_obj = tree.get(path)
    assert len(retr_obj) == 1, \
      ("incorrect number of objects retrieved for %s (%d != 1)" %
          (path, len(retr_obj)))
    assert retr_obj[0].name() == j, ("retrieved object did not " +
              "have a valid name (%s != %s)" % (j, retr_obj.name()))
示例#7
0
def t3_add_retr_object_hierarchy(tree=False):
    del_tree = False
    if not tree:
        del_tree = True
        tree = YANGPathHelper()
    path = []
    obj = {}
    for i in range(0, 10):
        path += ["node%d" % i]
        obj[i] = TestObject(i)
        tree.register(path, obj[i])
    path = ""
    for j in range(0, 10):
        path += "/node%d" % j
        retr_obj = tree.get(path)
        assert len(retr_obj) == 1, \
          ("incorrect number of objects retrieved for %s (%d != 1)" %
              (path, len(retr_obj)))
        assert retr_obj[0].name() == j, ("retrieved object did not " +
                                         "have a valid name (%s != %s)" %
                                         (j, retr_obj.name()))
def t2_add_retr_object_with_attr(tree=False):
  del_tree = False
  if not tree:
    del_tree = True
    tree = YANGPathHelper()
  for p in [["container"], ["container", "deeper"]]:
    tree.register(p, TestObject("container"))
    for q_style in ["'", '"', ""]:
      for i in range(0, 5):
        tree.register(p + ["foo[id=%s%d%s]" % (q_style, i, q_style,)],
              TestObject("t2_ObjTest%d" % i))
      for q_style in ["'", '"', ""]:
        for j in range(0, 5):
          retr_obj = tree.get("%s/foo[id=%s%d%s]" %
                ("/" + "/".join(p), q_style, j, q_style,))
          assert len(retr_obj) == 1, ("retrieved the wrong number of " +
                "objects (%d != 1)" % len(retr_obj))
          assert isinstance(retr_obj[0], TestObject), ("retrieved object " +
                    "was not the correct class")
          assert retr_obj[0].name() == "t2_ObjTest%d" % j, \
              ("retrieved object had an invalid name specified (%s != " +
                  "t2_ObjTest%d, q_style=%s)" % (retr_obj.name(), j, q_style))
  if del_tree:
    del tree
class PathHelperBaseTests(unittest.TestCase):

  def setUp(self):
    self.tree = YANGPathHelper()

  def test_get_returns_same_number_of_objects_as_registered(self):
    obj = TestObject('testobj')
    self.tree.register(['obj_one'], obj)
    self.assertEqual(len(self.tree.get(['obj_one'])), 1)

  def test_get_returns_objects_of_same_class_as_registered(self):
    obj = TestObject('testobj')
    self.tree.register(['obj_one'], obj)
    self.assertIsInstance(self.tree.get(['obj_one'])[0], TestObject)

  def test_get_returns_objects_with_same_attributes_as_registered(self):
    obj = TestObject('testobj')
    self.tree.register(['obj_one'], obj)
    self.assertEqual(self.tree.get(['obj_one'])[0].name(), 'testobj')

  def test_get_non_existent_path_returns_nothing(self):
    self.assertEqual(len(self.tree.get('/a/non-existent/path')), 0)

  def test_register_invalid_path_raises_exception(self):
    with self.assertRaises(XPathError):
      self.tree.register('an-invalid-path-name', TestObject('invalid'))

  def test_retrieve_object_at_bottom_of_hierarchy_returns_single_object(self):
    self.tree.register(['node0'], TestObject(0))
    self.tree.register(['node0', 'node1'], TestObject(1))
    self.tree.register(['node0', 'node1', 'node2'], TestObject(2))
    self.assertEqual(len(self.tree.get('/node0/node1/node2')), 1)

  def test_retrieve_object_at_bottom_of_hierarchy_has_proper_name(self):
    self.tree.register(['node0'], TestObject(0))
    self.tree.register(['node0', 'node1'], TestObject(1))
    self.tree.register(['node0', 'node1', 'node2'], TestObject(2))
    self.assertEqual(self.tree.get('/node0/node1/node2')[0].name(), 2)

  def test_register_object_with_attribute(self):
    self.tree.register(['container'], TestObject('container'))
    allowed = True
    try:
      self.tree.register(['container', 'foo[id=0]'], TestObject('bar'))
    except Exception:
      allowed = False
    self.assertTrue(allowed)

  def test_retrieve_object_by_attribute_returns_single_object(self):
    self.tree.register(['container'], TestObject('container'))
    self.tree.register(['container', 'foo[id=0]'], TestObject('bar0'))
    self.tree.register(['container', 'foo[id=1]'], TestObject('bar1'))
    self.assertEqual(len(self.tree.get('/container/foo[id=0]')), 1)

  def test_get_object_by_attribute_returns_object_of_same_class(self):
    self.tree.register(['container'], TestObject('container'))
    self.tree.register(['container', 'foo[id=0]'], TestObject('bar0'))
    self.assertIsInstance(self.tree.get('/container/foo[id=0]')[0], TestObject)

  def test_register_object_with_attribute_various_quoting_styles(self):
    self.tree.register(['container'], TestObject('container'))
    for style in ['"', "'", '']:
      with self.subTest(style=style):
        allowed = True
        try:
          self.tree.register(['container', 'foo[id={0}42{0}]'.format(style)], TestObject(42))
        except Exception:
          allowed = False
        self.assertTrue(allowed)

  def test_get_object_with_attribute_various_quoting_styles(self):
    self.tree.register(['container'], TestObject('container'))
    self.tree.register(['container', 'foo[id=42]'], TestObject('bar42'))
    for style in ['"', "'", '']:
      with self.subTest(style=style):
        obj = self.tree.get('/container/foo[id={0}42{0}]'.format(style))[0]
        self.assertEqual(obj.name(), 'bar42')
class PathHelperBaseTests(unittest.TestCase):

    def setUp(self):
        self.tree = YANGPathHelper()

    def test_get_returns_same_number_of_objects_as_registered(self):
        obj = TestObject("testobj")
        self.tree.register(["obj_one"], obj)
        self.assertEqual(len(self.tree.get(["obj_one"])), 1)

    def test_get_returns_objects_of_same_class_as_registered(self):
        obj = TestObject("testobj")
        self.tree.register(["obj_one"], obj)
        self.assertIsInstance(self.tree.get(["obj_one"])[0], TestObject)

    def test_get_returns_objects_with_same_attributes_as_registered(self):
        obj = TestObject("testobj")
        self.tree.register(["obj_one"], obj)
        self.assertEqual(self.tree.get(["obj_one"])[0].name(), "testobj")

    def test_get_non_existent_path_returns_nothing(self):
        self.assertEqual(len(self.tree.get("/a/non-existent/path")), 0)

    def test_register_invalid_path_raises_exception(self):
        with self.assertRaises(XPathError):
            self.tree.register("an-invalid-path-name", TestObject("invalid"))

    def test_retrieve_object_at_bottom_of_hierarchy_returns_single_object(self):
        self.tree.register(["node0"], TestObject(0))
        self.tree.register(["node0", "node1"], TestObject(1))
        self.tree.register(["node0", "node1", "node2"], TestObject(2))
        self.assertEqual(len(self.tree.get("/node0/node1/node2")), 1)

    def test_retrieve_object_at_bottom_of_hierarchy_has_proper_name(self):
        self.tree.register(["node0"], TestObject(0))
        self.tree.register(["node0", "node1"], TestObject(1))
        self.tree.register(["node0", "node1", "node2"], TestObject(2))
        self.assertEqual(self.tree.get("/node0/node1/node2")[0].name(), 2)

    def test_register_object_with_attribute(self):
        self.tree.register(["container"], TestObject("container"))
        allowed = True
        try:
            self.tree.register(["container", "foo[id=0]"], TestObject("bar"))
        except Exception:
            allowed = False
        self.assertTrue(allowed)

    def test_retrieve_object_by_attribute_returns_single_object(self):
        self.tree.register(["container"], TestObject("container"))
        self.tree.register(["container", "foo[id=0]"], TestObject("bar0"))
        self.tree.register(["container", "foo[id=1]"], TestObject("bar1"))
        self.assertEqual(len(self.tree.get("/container/foo[id=0]")), 1)

    def test_get_object_by_attribute_returns_object_of_same_class(self):
        self.tree.register(["container"], TestObject("container"))
        self.tree.register(["container", "foo[id=0]"], TestObject("bar0"))
        self.assertIsInstance(self.tree.get("/container/foo[id=0]")[0], TestObject)

    def test_register_object_with_attribute_various_quoting_styles(self):
        self.tree.register(["container"], TestObject("container"))
        for style in ['"', "'", ""]:
            with self.subTest(style=style):
                allowed = True
                try:
                    self.tree.register(["container", "foo[id={0}42{0}]".format(style)], TestObject(42))
                except Exception:
                    allowed = False
                self.assertTrue(allowed)

    def test_get_object_with_attribute_various_quoting_styles(self):
        self.tree.register(["container"], TestObject("container"))
        self.tree.register(["container", "foo[id=42]"], TestObject("bar42"))
        for style in ['"', "'", ""]:
            with self.subTest(style=style):
                obj = self.tree.get("/container/foo[id={0}42{0}]".format(style))[0]
                self.assertEqual(obj.name(), "bar42")