Esempio n. 1
0
 def testGlob(self):
   self.assertEqual(qlang.MakeFilter(["*.site"], False),
                    [qlang.OP_OR, [qlang.OP_REGEXP, "name",
                                   utils.DnsNameGlobPattern("*.site")]])
   self.assertEqual(qlang.MakeFilter(["web?.example"], False),
                    [qlang.OP_OR, [qlang.OP_REGEXP, "name",
                                   utils.DnsNameGlobPattern("web?.example")]])
   self.assertEqual(qlang.MakeFilter(["*.a", "*.b", "?.c"], False),
                    [qlang.OP_OR,
                     [qlang.OP_REGEXP, "name",
                      utils.DnsNameGlobPattern("*.a")],
                     [qlang.OP_REGEXP, "name",
                      utils.DnsNameGlobPattern("*.b")],
                     [qlang.OP_REGEXP, "name",
                      utils.DnsNameGlobPattern("?.c")]])
Esempio n. 2
0
  def testFilter(self):
    self.assertEqual(qlang.MakeFilter(["foo/bar"], False),
                     [qlang.OP_TRUE, "foo/bar"])
    self.assertEqual(qlang.MakeFilter(["foo=='bar'"], False),
                     [qlang.OP_EQUAL, "foo", "bar"])
    self.assertEqual(qlang.MakeFilter(["field=*'*.site'"], False),
                     [qlang.OP_REGEXP, "field",
                      utils.DnsNameGlobPattern("*.site")])

    # Plain name parses as name filter, not boolean
    for name in ["node1", "n-o-d-e", "n_o_d_e", "node1.example.com",
                 "node1.example.com."]:
      self.assertEqual(qlang.MakeFilter([name], False),
                       [qlang.OP_OR, [qlang.OP_EQUAL, "name", name]])

    # Invalid filters
    for i in ["foo==bar", "foo+=1"]:
      self.assertRaises(errors.QueryFilterParseError,
                        qlang.MakeFilter, [i], False)
Esempio n. 3
0
  def testForcedFilter(self):
    for i in [None, [], ["1", "2"], ["", "", ""], ["a", "b", "c", "d"]]:
      self.assertRaises(errors.OpPrereqError, qlang.MakeFilter, i, True)

    # Glob pattern shouldn't parse as filter
    self.assertRaises(errors.QueryFilterParseError,
                      qlang.MakeFilter, ["*.site"], True)

    # Plain name parses as boolean filter
    self.assertEqual(qlang.MakeFilter(["web1"], True), [qlang.OP_TRUE, "web1"])
Esempio n. 4
0
 def _Test(self, qfilter, expected, expect_filter=True):
     self.assertEqual(qlang.MakeFilter([qfilter], not expect_filter),
                      expected)
     self.assertEqual(qlang.ParseFilter(qfilter, parser=self.parser),
                      expected)
Esempio n. 5
0
 def testPlainNamesOtherNamefield(self):
     self.assertEqual(
         qlang.MakeFilter(["mailA", "mailB"], False, namefield="id"), [
             qlang.OP_OR, [qlang.OP_EQUAL, "id", "mailA"],
             [qlang.OP_EQUAL, "id", "mailB"]
         ])
Esempio n. 6
0
 def testPlainNames(self):
     self.assertEqual(qlang.MakeFilter(["web1", "web2"], False), [
         qlang.OP_OR, [qlang.OP_EQUAL, "name", "web1"],
         [qlang.OP_EQUAL, "name", "web2"]
     ])
Esempio n. 7
0
 def testNoNames(self):
     self.assertEqual(qlang.MakeFilter([], False), None)
     self.assertEqual(qlang.MakeFilter(None, False), None)