def test_regex(): assert match({ "platform": "S50N", "vendor": "Force10" }, {"platform": { "$regex": "^S" }}) == True assert match({ "platform": "E600", "vendor": "Force10" }, {"platform": { "$regex": "^S" }}) == False assert match({ "platform": "S50N", "vendor": "Force10" }, { "platform": { "$regex": "^S" }, "vendor": "Force10" }) == True assert match({ "platform": "S50N", "vendor": "Force10" }, { "platform": { "$regex": "^S" }, "vendor": "Dell" }) == False
def test_between(): assert match({"version": "12.2(33)SE"}, {"version": { "$gte": "12.2(48)SE", "$lte": "12.2(52)SE" }}) == False assert match({"version": "12.2(48)SE"}, {"version": { "$gte": "12.2(48)SE", "$lte": "12.2(52)SE" }}) == True assert match({"version": "12.2(50)SE"}, {"version": { "$gte": "12.2(48)SE", "$lte": "12.2(52)SE" }}) == True assert match({"version": "12.2(52)SE"}, {"version": { "$gte": "12.2(48)SE", "$lte": "12.2(52)SE" }}) == True assert match({"version": "12.2(60)SE"}, {"version": { "$gte": "12.2(48)SE", "$lte": "12.2(52)SE" }}) == False
def test_gt(): assert match({"version": "12.2(50)SE"}, {"version": { "$gt": "12.2(48)SE" }}) == True assert match({"version": "12.2(50)SE"}, {"version": { "$gt": "12.2(50)SE" }}) == False assert match({"version": "12.2(50)SE"}, {"version": { "$gt": "12.2(51)SE" }}) == False
def iter_object_meta_matchers(self): ctx = { "vendor": self.object.vendor.name, "platform": self.object.platform.name, "version": self.object.version.version, } for matcher in self.object.get_profile().matchers: if match(ctx, self.object.get_profile().matchers[matcher]): yield "meta", "matchers", matcher
def iter_oids(self, script, metric): ctx = script.version for matcher, rule in self.oids: # match(ctx, []) always True, Priority in metrics matcher config matcher if (matcher is None or (match(ctx, self.matchers.get(matcher, [])) and matcher in self.matchers) or getattr(script, matcher, None)): for r in rule.iter_oids(script, metric): yield r else: # Only one match break
def test_in(): assert match({ "platform": "S50N", "vendor": "Force10" }, {"platform": { "$in": ["S50N", "S50P"] }}) == True assert match({ "platform": "S50N", "vendor": "Force10" }, { "platform": { "$in": ["S50N", "S50P"] }, "vendor": { "$in": ["Force10", "Dell"] } }) == True assert match({ "platform": "S25N", "vendor": "Force10" }, {"platform": { "$in": ["S50N", "S50P"] }}) == False
def get_matchers(c, matchers): return dict((m, match(c, matchers[m])) for m in matchers)
def test_eq_and(raw, config, expected): assert match(raw, config) is expected
def test_between(raw, config, expected): assert match(raw, config) is expected
def test_lte(raw, config, expected): assert match(raw, config) is expected
def test_regex(raw, config, expected): assert match(raw, config) is expected
def test_eq_and(): assert match({"x": "y", "m": "n"}, {"x": "y", "m": "k"}) == False assert match({"x": "y", "m": "n"}, {"x": "y", "m": "n"}) == True
def test_eq(): assert match({"x": "y"}, {"x": "y"}) == True
def test_zero(): assert match({}, {}) == True assert match({"k", "v"}, {}) == True
def get_matchers(c, matchers): return {m: match(c, matchers[m]) for m in matchers}