示例#1
0
 def __init__(self, cal, fallback, team_name, people=None):
     super(Calendar, self).__init__()
     self.cal = cal
     self.people = People() if people is None else people
     self.fallback = fallback
     self.fb_bzmail = self.people.get_bzmail_from_name(self.fallback)
     self.fb_mozmail = self.people.get_moz_mail(self.fb_bzmail)
     self.team_name = team_name
     self.cache = {}
示例#2
0
 def __init__(self):
     super(Nag, self).__init__()
     self.people = People()
     self.send_nag_mail = True
     self.data = {}
     self.nag_date = None
     self.white_list = []
     self.black_list = []
     self.escalation = Escalation(self.people)
     self.triage_owners = {}
     self.all_owners = None
     self.query_params = {}
示例#3
0
    def __init__(self):
        super(CodeFreezeWeek, self).__init__()
        self.versions = utils.get_checked_versions()
        if not self.versions:
            return

        self.people = People()
        self.nightly = self.versions['central']
        self.beta = self.versions['beta']
        self.release = self.versions['release']
        self.status_nightly = utils.get_flag(self.nightly, 'status', 'central')
        self.status_beta = utils.get_flag(self.beta, 'status', 'beta')
        self.status_release = utils.get_flag(self.release, 'status', 'release')
        self.tracking_nightly = utils.get_flag(self.nightly, 'tracking',
                                               'central')
        self.tracking_beta = utils.get_flag(self.beta, 'tracking', 'beta')
        self.tracking_release = utils.get_flag(self.release, 'tracking',
                                               'release')
示例#4
0
 def __init__(self):
     super(LeaveOpenNoActivity, self).__init__()
     self.people = People()
     self.nmonths = utils.get_config(self.name(), 'months_lookup')
     self.max_ni = utils.get_config(self.name(), 'max_ni')
     self.skiplist = set(utils.get_config(self.name(), 'skiplist', []))
 def __init__(self):
     super(NewbieWithNI, self).__init__()
     self.people = People()
     self.ndays = utils.get_config(self.name(), 'number_of_days', 14)
     self.ncomments = utils.get_config(self.name(), 'number_of_comments', 2)
     self.autofix_reporters = {}
示例#6
0
 def __init__(self, rr=None, people=None):
     self.feed(rr=rr)
     self.nicks = {}
     self.people = People() if people is None else people
示例#7
0
class TestRoundRobin(unittest.TestCase):

    default = {
        "duty-start-dates": {
            "2019-02-14": "A B",
            "2019-02-21": "C D",
            "2019-02-28": "E F",
        }
    }

    special = {
        "duty-start-dates": {
            "2019-02-14": "E F",
            "2019-02-21": "A B",
            "2019-02-28": "C D",
        }
    }

    config = {
        "fallback": "G H",
        "components": {"P1::C1": "default", "P2::C2": "default", "P3::C3": "special"},
        "default": {"calendar": json.dumps(default)},
        "special": {"calendar": json.dumps(special)},
    }

    config_ics = {
        "fallback": "G H",
        "components": {"P1::C1": "default", "P2::C2": "default"},
        "default": {"calendar": "auto_nag/tests/calendar.ics"},
    }

    people = People(
        [
            {
                "mail": "{}{}@mozilla.com".format(x, y),
                "cn": "{} {}".format(x.upper(), y.upper()),
                "ismanager": "FALSE",
                "title": "nothing",
            }
            for x, y in zip("aceg", "bdfh")
        ]
    )

    def mk_bug(self, pc):
        p, c = pc.split("::")
        return {
            "product": p,
            "component": c,
            "triage_owner": "*****@*****.**",
            "triage_owner_detail": {"nick": "ij"},
        }

    @staticmethod
    def _get_nick(x, bzmail, pc, cal):
        return bzmail.split("@")[0]

    def test_get(self):
        with patch.object(RoundRobin, "get_nick", new=TestRoundRobin._get_nick):
            rr = RoundRobin(
                rr={"team": TestRoundRobin.config}, people=TestRoundRobin.people
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-02-17") == (
                "*****@*****.**",
                "ab",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-02-17") == (
                "*****@*****.**",
                "ab",
            )
            assert rr.get(self.mk_bug("P3::C3"), "2019-02-17") == (
                "*****@*****.**",
                "ef",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-02-24") == (
                "*****@*****.**",
                "cd",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-02-24") == (
                "*****@*****.**",
                "cd",
            )
            assert rr.get(self.mk_bug("P3::C3"), "2019-02-24") == (
                "*****@*****.**",
                "ab",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-02-28") == (
                "*****@*****.**",
                "ef",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-02-28") == (
                "*****@*****.**",
                "ef",
            )
            assert rr.get(self.mk_bug("P3::C3"), "2019-02-28") == (
                "*****@*****.**",
                "cd",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-03-05") == (
                "*****@*****.**",
                "ef",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-03-05") == (
                "*****@*****.**",
                "ef",
            )
            assert rr.get(self.mk_bug("P3::C3"), "2019-03-05") == (
                "*****@*****.**",
                "cd",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-03-08") == (
                "*****@*****.**",
                "gh",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-03-08") == (
                "*****@*****.**",
                "gh",
            )
            assert rr.get(self.mk_bug("P3::C3"), "2019-03-08") == (
                "*****@*****.**",
                "gh",
            )

            assert rr.get(self.mk_bug("Foo::Bar"), "2019-03-01") == (
                "*****@*****.**",
                "ij",
            )

    def test_get_ics(self):
        with patch.object(RoundRobin, "get_nick", new=TestRoundRobin._get_nick):
            rr = RoundRobin(
                rr={"team": TestRoundRobin.config_ics}, people=TestRoundRobin.people
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-02-17") == (
                "*****@*****.**",
                "ab",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-02-17") == (
                "*****@*****.**",
                "ab",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-02-24") == (
                "*****@*****.**",
                "cd",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-02-24") == (
                "*****@*****.**",
                "cd",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-02-28") == (
                "*****@*****.**",
                "ef",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-02-28") == (
                "*****@*****.**",
                "ef",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-03-05") == (
                "*****@*****.**",
                "ef",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-03-05") == (
                "*****@*****.**",
                "ef",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-03-08") == (
                "*****@*****.**",
                "ab",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-03-08") == (
                "*****@*****.**",
                "ab",
            )

            assert rr.get(self.mk_bug("P1::C1"), "2019-03-15") == (
                "*****@*****.**",
                "gh",
            )
            assert rr.get(self.mk_bug("P2::C2"), "2019-03-15") == (
                "*****@*****.**",
                "gh",
            )

            assert rr.get(self.mk_bug("Foo::Bar"), "2019-03-01") == (
                "*****@*****.**",
                "ij",
            )

    def test_get_who_to_nag(self):
        rr = RoundRobin(
            rr={"team": TestRoundRobin.config}, people=TestRoundRobin.people
        )

        empty = {"team": {"nobody": True, "persons": []}}

        assert rr.get_who_to_nag("2019-02-25") == {}
        assert rr.get_who_to_nag("2019-03-01") == {"*****@*****.**": empty}
        assert rr.get_who_to_nag("2019-03-05") == {"*****@*****.**": empty}
        assert rr.get_who_to_nag("2019-03-07") == {"*****@*****.**": empty}
        assert rr.get_who_to_nag("2019-03-10") == {"*****@*****.**": empty}

        with patch.object(People, "get_moz_mail", return_value=None):
            rr = RoundRobin(
                rr={"team": TestRoundRobin.config}, people=TestRoundRobin.people
            )

            self.assertRaises(BadFallback, rr.get_who_to_nag, "2019-03-01")
示例#8
0
 def __init__(self):
     super(HasSTRNoRange, self).__init__()
     self.people = People()
     self.autofix_reporters = {}
 def __init__(self, rr=None, people=None, teams=None):
     self.people = People() if people is None else people
     self.all_calendars = []
     self.feed(teams, rr=rr)
     self.nicks = {}
示例#10
0
class TestRoundRobin(unittest.TestCase):

    config = {
        'doc': 'The triagers need to have a \'Fallback\' entry.',
        'triagers': {
            'A B': {
                'bzmail': '*****@*****.**'
            },
            'C D': {
                'bzmail': '*****@*****.**'
            },
            'E F': {
                'bzmail': '*****@*****.**'
            },
            'Fallback': {
                'bzmail': '*****@*****.**'
            },
        },
        'components': {
            'P1::C1': 'default',
            'P2::C2': 'default',
            'P3::C3': 'special'
        },
        'default': {
            'doc': 'All the dates are the duty end dates.',
            '2019-02-21': 'A B',
            '2019-02-28': 'C D',
            '2019-03-07': 'E F',
        },
        'special': {
            'doc': 'All the dates are the duty end dates.',
            '2019-02-21': 'E F',
            '2019-02-28': 'A B',
            '2019-03-07': 'C D',
        },
    }

    people = People([{
        'mail': '*****@*****.**',
        'cn': 'G H',
        'ismanager': 'FALSE',
        'title': 'nothing',
    }])

    def mk_bug(self, pc):
        p, c = pc.split('::')
        return {
            'product': p,
            'component': c,
            'triage_owner': '*****@*****.**',
            'triage_owner_detail': {
                'nick': 'ij'
            },
        }

    @staticmethod
    def _get_nick(x, bzmail):
        return bzmail.split('@')[0]

    def test_get(self):
        with patch.object(RoundRobin, 'get_nick',
                          new=TestRoundRobin._get_nick):
            rr = RoundRobin(rr={'team': TestRoundRobin.config},
                            people=TestRoundRobin.people)

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-17') == (
                '*****@*****.**',
                'ab',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-17') == (
                '*****@*****.**',
                'ab',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-02-17') == (
                '*****@*****.**',
                'ef',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-24') == (
                '*****@*****.**',
                'cd',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-24') == (
                '*****@*****.**',
                'cd',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-02-24') == (
                '*****@*****.**',
                'ab',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-28') == (
                '*****@*****.**',
                'cd',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-28') == (
                '*****@*****.**',
                'cd',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-02-28') == (
                '*****@*****.**',
                'ab',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-03-05') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-03-05') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-03-05') == (
                '*****@*****.**',
                'cd',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )

            assert rr.get(self.mk_bug('Foo::Bar'), '2019-03-01') == (
                '*****@*****.**',
                'ij',
            )

    def test_get_who_to_nag(self):
        rr = RoundRobin(rr={'team': TestRoundRobin.config},
                        people=TestRoundRobin.people)

        assert rr.get_who_to_nag('2019-02-25') == {}
        assert rr.get_who_to_nag('2019-02-28') == {'*****@*****.**': ['']}
        assert rr.get_who_to_nag('2019-03-05') == {'*****@*****.**': ['']}
        assert rr.get_who_to_nag('2019-03-07') == {'*****@*****.**': ['']}
        assert rr.get_who_to_nag('2019-03-10') == {'*****@*****.**': ['']}

        with patch.object(RoundRobin, 'is_mozilla', return_value=False):
            rr = RoundRobin(rr={'team': TestRoundRobin.config},
                            people=TestRoundRobin.people)

            self.assertRaises(BadFallback, rr.get_who_to_nag, '2019-03-01')
示例#11
0
class TestRoundRobin(unittest.TestCase):

    default = {
        'duty-start-dates': {
            '2019-02-14': 'A B',
            '2019-02-21': 'C D',
            '2019-02-28': 'E F',
        }
    }

    special = {
        'duty-start-dates': {
            '2019-02-14': 'E F',
            '2019-02-21': 'A B',
            '2019-02-28': 'C D',
        }
    }

    config = {
        'fallback': 'G H',
        'components': {
            'P1::C1': 'default',
            'P2::C2': 'default',
            'P3::C3': 'special'
        },
        'default': {
            'calendar': json.dumps(default)
        },
        'special': {
            'calendar': json.dumps(special)
        },
    }

    config_ics = {
        'fallback': 'G H',
        'components': {
            'P1::C1': 'default',
            'P2::C2': 'default'
        },
        'default': {
            'calendar': 'auto_nag/tests/calendar.ics'
        },
    }

    people = People([{
        'mail': '{}{}@mozilla.com'.format(x, y),
        'cn': '{} {}'.format(x.upper(), y.upper()),
        'ismanager': 'FALSE',
        'title': 'nothing',
    } for x, y in zip('aceg', 'bdfh')])

    def mk_bug(self, pc):
        p, c = pc.split('::')
        return {
            'product': p,
            'component': c,
            'triage_owner': '*****@*****.**',
            'triage_owner_detail': {
                'nick': 'ij'
            },
        }

    @staticmethod
    def _get_nick(x, bzmail):
        return bzmail.split('@')[0]

    def test_get(self):
        with patch.object(RoundRobin, 'get_nick',
                          new=TestRoundRobin._get_nick):
            rr = RoundRobin(rr={'team': TestRoundRobin.config},
                            people=TestRoundRobin.people)

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-17') == (
                '*****@*****.**',
                'ab',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-17') == (
                '*****@*****.**',
                'ab',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-02-17') == (
                '*****@*****.**',
                'ef',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-24') == (
                '*****@*****.**',
                'cd',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-24') == (
                '*****@*****.**',
                'cd',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-02-24') == (
                '*****@*****.**',
                'ab',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-28') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-28') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-02-28') == (
                '*****@*****.**',
                'cd',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-03-05') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-03-05') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-03-05') == (
                '*****@*****.**',
                'cd',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )
            assert rr.get(self.mk_bug('P3::C3'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )

            assert rr.get(self.mk_bug('Foo::Bar'), '2019-03-01') == (
                '*****@*****.**',
                'ij',
            )

    def test_get_ics(self):
        with patch.object(RoundRobin, 'get_nick',
                          new=TestRoundRobin._get_nick):
            rr = RoundRobin(rr={'team': TestRoundRobin.config_ics},
                            people=TestRoundRobin.people)

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-17') == (
                '*****@*****.**',
                'ab',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-17') == (
                '*****@*****.**',
                'ab',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-24') == (
                '*****@*****.**',
                'cd',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-24') == (
                '*****@*****.**',
                'cd',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-02-28') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-02-28') == (
                '*****@*****.**',
                'ef',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-03-05') == (
                '*****@*****.**',
                'ef',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-03-05') == (
                '*****@*****.**',
                'ef',
            )

            assert rr.get(self.mk_bug('P1::C1'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )
            assert rr.get(self.mk_bug('P2::C2'), '2019-03-08') == (
                '*****@*****.**',
                'gh',
            )

            assert rr.get(self.mk_bug('Foo::Bar'), '2019-03-01') == (
                '*****@*****.**',
                'ij',
            )

    def test_get_who_to_nag(self):
        rr = RoundRobin(rr={'team': TestRoundRobin.config},
                        people=TestRoundRobin.people)

        empty = {'team': {'nobody': True, 'persons': []}}

        assert rr.get_who_to_nag('2019-02-25') == {}
        assert rr.get_who_to_nag('2019-03-01') == {'*****@*****.**': empty}
        assert rr.get_who_to_nag('2019-03-05') == {'*****@*****.**': empty}
        assert rr.get_who_to_nag('2019-03-07') == {'*****@*****.**': empty}
        assert rr.get_who_to_nag('2019-03-10') == {'*****@*****.**': empty}

        with patch.object(People, 'get_moz_mail', return_value=None):
            rr = RoundRobin(rr={'team': TestRoundRobin.config},
                            people=TestRoundRobin.people)

            self.assertRaises(BadFallback, rr.get_who_to_nag, '2019-03-01')
示例#12
0
 def __init__(self):
     super(MetaNoDepsNoActivity, self).__init__()
     self.people = People()
     self.nmonths = utils.get_config(self.name(), 'months_lookup')
     self.max_ni = utils.get_config(self.name(), 'max_ni')
     self.blacklist = set(utils.get_config(self.name(), 'blacklist', []))
示例#13
0
    def test_escalation(self):
        people = [
            {
                "mail": "*****@*****.**",
                "cn": "A B",
                "ismanager": "FALSE",
                "manager": {
                    "dn": "[email protected],o=org,dc=mozilla"
                },
                "title": "nothing",
            },
            {
                "mail": "*****@*****.**",
                "cn": "C D",
                "ismanager": "TRUE",
                "manager": {
                    "dn": "[email protected],o=org,dc=mozilla"
                },
                "title": "manager",
            },
            {
                "mail": "*****@*****.**",
                "cn": "E F",
                "ismanager": "TRUE",
                "manager": {
                    "dn": "[email protected],o=org,dc=mozilla"
                },
                "title": "super manager",
            },
            {
                "mail": "*****@*****.**",
                "cn": "G H",
                "ismanager": "TRUE",
                "manager": {
                    "dn": "[email protected],o=org,dc=mozilla"
                },
                "title": "super manager",
            },
            {
                "mail": "*****@*****.**",
                "cn": "I J",
                "ismanager": "TRUE",
                "manager": {
                    "dn": "[email protected],o=org,dc=mozilla"
                },
                "title": "director",
            },
            {
                "mail": "*****@*****.**",
                "cn": "K L",
                "ismanager": "TRUE",
                "title": "vice president",
            },
        ]

        e = Escalation(People(people), data=TestEscalation.config)
        assert (e.get_supervisor(
            "high", 35, "*****@*****.**",
            foobar="*****@*****.**") == "*****@*****.**")
        assert e.get_supervisor("high", 25,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("high", 20,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("high", 18,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("high", 7,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("high", 1,
                                "*****@*****.**") == "*****@*****.**"

        assert e.filter("high", 25, 0) is False
        assert e.filter("high", 25, 3) is True
        assert e.filter("high", 18, 0) is True
        assert e.filter("high", 18, 1) is False
        assert e.filter("high", 18, 3) is True
        assert e.filter("high", 18, 5) is False
        assert e.filter("high", 7, 1) is False
        assert e.filter("high", 7, 3) is True
        assert e.filter("high", 7, 5) is False
        assert e.filter("high", 1, 1) is True
        assert e.filter("high", 1, 3) is True
        assert e.filter("high", 1, 4) is True
        assert e.filter("high", 7, 5) is False

        assert e.get_supervisor("normal", 17,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("normal", 15,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("normal", 12,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("normal", 7,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("normal", 1,
                                "*****@*****.**") == "*****@*****.**"

        assert e.get_supervisor("default", 17,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("default", 7,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("default", 1,
                                "*****@*****.**") == "*****@*****.**"
        assert e.get_supervisor("default", 0,
                                "*****@*****.**") == "*****@*****.**"
    def test_escalation(self):
        people = [
            {
                'mail': '*****@*****.**',
                'cn': 'A B',
                'ismanager': 'FALSE',
                'manager': {
                    'dn': '[email protected],o=org,dc=mozilla'
                },
                'title': 'nothing',
            },
            {
                'mail': '*****@*****.**',
                'cn': 'C D',
                'ismanager': 'TRUE',
                'manager': {
                    'dn': '[email protected],o=org,dc=mozilla'
                },
                'title': 'manager',
            },
            {
                'mail': '*****@*****.**',
                'cn': 'E F',
                'ismanager': 'TRUE',
                'manager': {
                    'dn': '[email protected],o=org,dc=mozilla'
                },
                'title': 'super manager',
            },
            {
                'mail': '*****@*****.**',
                'cn': 'G H',
                'ismanager': 'TRUE',
                'manager': {
                    'dn': '[email protected],o=org,dc=mozilla'
                },
                'title': 'super manager',
            },
            {
                'mail': '*****@*****.**',
                'cn': 'I J',
                'ismanager': 'TRUE',
                'manager': {
                    'dn': '[email protected],o=org,dc=mozilla'
                },
                'title': 'director',
            },
            {
                'mail': '*****@*****.**',
                'cn': 'K L',
                'ismanager': 'TRUE',
                'title': 'vice president',
            },
        ]

        e = Escalation(People(people), data=TestEscalation.config)
        assert e.get_supervisor(
            'high', 35, '*****@*****.**',
            foobar='*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('high', 25,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('high', 20,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('high', 18,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('high', 7,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('high', 1,
                                '*****@*****.**') == '*****@*****.**'

        assert e.filter('high', 25, 0) == False
        assert e.filter('high', 25, 3) == True
        assert e.filter('high', 18, 0) == True
        assert e.filter('high', 18, 1) == False
        assert e.filter('high', 18, 3) == True
        assert e.filter('high', 18, 5) == False
        assert e.filter('high', 7, 1) == False
        assert e.filter('high', 7, 3) == True
        assert e.filter('high', 7, 5) == False
        assert e.filter('high', 1, 1) == True
        assert e.filter('high', 1, 3) == True
        assert e.filter('high', 1, 4) == True
        assert e.filter('high', 7, 5) == False

        assert e.get_supervisor('normal', 17,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('normal', 15,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('normal', 12,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('normal', 7,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('normal', 1,
                                '*****@*****.**') == '*****@*****.**'

        assert e.get_supervisor('default', 17,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('default', 7,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('default', 1,
                                '*****@*****.**') == '*****@*****.**'
        assert e.get_supervisor('default', 0,
                                '*****@*****.**') == '*****@*****.**'