def test__policyCombination(self): for granularity in ValidRes: for status in ValidStatus: for oldStatus in ValidStatus: if status == oldStatus: continue for newStatus1 in ValidStatus: for newStatus2 in ValidStatus: pdp = PDP(self.VO, granularity, 'XX', status, oldStatus, 'XX') polRes = {'Status':newStatus1, 'Reason':'-Reason1-'} polRes2 = {'Status':newStatus2, 'Reason':'-Reason2-'} # 0 policies res = pdp._policyCombination([]) self.assertEqual(res, {}) # 1 policy res = pdp._policyCombination([polRes]) if status == 'Banned': self.assertTrue(value_of_status(res['Status']) <= 1) if status == 'Banned' and newStatus1 in ['Active','Bad','Probing']: self.assertEqual(res['Status'], 'Probing') else: self.assertEqual(res['Status'], newStatus1) # 2 policies res = pdp._policyCombination([polRes, polRes2]) if status == 'Banned': self.assertTrue(value_of_status(res['Status']) <= 1) if status == 'Banned' and newStatus1 in ['Active','Bad','Probing'] and newStatus2 in ['Active','Bad','Probing']: self.assertEqual(res['Status'], 'Probing') if status != 'Banned' and value_of_status(newStatus1) < value_of_status(newStatus1): self.assertEqual(res['Status'], newStatus1) if status != 'Banned' and value_of_status(newStatus2) < value_of_status(newStatus1): self.assertEqual(res['Status'], newStatus2) # all different policies def make_polres(status): return { 'Status': status, 'Reason': 'Because of ' + status } all_polres = map(make_polres, ValidStatus) res = pdp._policyCombination(all_polres) self.assertEqual(res['Status'], 'Banned')
def test__policyCombination(self): for granularity in ValidRes: for status in ValidStatus: for oldStatus in ValidStatus: if status == oldStatus: continue sm = StateMachine(self.VO, status) for newStatus1 in ValidStatus: for newStatus2 in ValidStatus: pdp = PDP(self.VO, granularity, 'XX', status, oldStatus, 'XX') polRes = {'Status':newStatus1, 'Reason':'-Reason1-'} polRes2 = {'Status':newStatus2, 'Reason':'-Reason2-'} # 0 policies res = pdp._policyCombination([]) self.assertEqual(res, {}) # 1 policy res = pdp._policyCombination([polRes]) if sm.transitionAllowed(newStatus1): self.assertEqual(res['Status'], newStatus1) self.assertEqual(res['Reason'], '-Reason1-') else: self.assertEqual(res, {}) # 2 policies res = pdp._policyCombination([polRes, polRes2]) if sm.valueOfPolicy(polRes) > sm.valueOfPolicy(polRes2): if sm.transitionAllowed(newStatus2): self.assertEqual(res['Status'], newStatus2) self.assertEqual(res['Reason'], '-Reason2-') elif sm.transitionAllowed(newStatus1): self.assertEqual(res['Status'], newStatus1) self.assertEqual(res['Reason'], '-Reason1-') else: self.assertEqual(res, {}) elif sm.valueOfPolicy(polRes) < sm.valueOfPolicy(polRes2): if sm.transitionAllowed(newStatus1): self.assertEqual(res['Status'], newStatus1) self.assertEqual(res['Reason'], '-Reason1-') elif sm.transitionAllowed(newStatus2): self.assertEqual(res['Status'], newStatus2) self.assertEqual(res['Reason'], '-Reason2-') else: self.assertEqual(res, {}) else: if sm.transitionAllowed(newStatus1): self.assertEqual(res['Status'], newStatus1) self.assertEqual(res['Reason'], '-Reason1- |###| -Reason2-') else: self.assertEqual(res, {}) # all different policies def make_polres(status): return { 'Status': status, 'Reason': 'Because of ' + status } all_polres = map(make_polres, ValidStatus) res = pdp._policyCombination(all_polres) self.assertEqual(res['Status'], 'Banned')
def test__policyCombination(self): for granularity in ValidRes: for status in ValidStatus: for oldStatus in ValidStatus: if status == oldStatus: continue for newStatus1 in ValidStatus: for newStatus2 in ValidStatus: pdp = PDP(self.VO, granularity, 'XX', status, oldStatus, 'XX') polRes = { 'Status': newStatus1, 'Reason': '-Reason1-' } polRes2 = { 'Status': newStatus2, 'Reason': '-Reason2-' } # 0 policies res = pdp._policyCombination([]) self.assertEqual(res, {}) # 1 policy res = pdp._policyCombination([polRes]) if status == 'Banned': self.assertTrue( value_of_status(res['Status']) <= 1) if status == 'Banned' and newStatus1 in [ 'Active', 'Bad', 'Probing' ]: self.assertEqual(res['Status'], 'Probing') else: self.assertEqual(res['Status'], newStatus1) # 2 policies res = pdp._policyCombination([polRes, polRes2]) if status == 'Banned': self.assertTrue( value_of_status(res['Status']) <= 1) if status == 'Banned' and newStatus1 in [ 'Active', 'Bad', 'Probing' ] and newStatus2 in ['Active', 'Bad', 'Probing']: self.assertEqual(res['Status'], 'Probing') if status != 'Banned' and value_of_status( newStatus1) < value_of_status(newStatus1): self.assertEqual(res['Status'], newStatus1) if status != 'Banned' and value_of_status( newStatus2) < value_of_status(newStatus1): self.assertEqual(res['Status'], newStatus2) # all different policies def make_polres(status): return { 'Status': status, 'Reason': 'Because of ' + status } all_polres = map(make_polres, ValidStatus) res = pdp._policyCombination(all_polres) self.assertEqual(res['Status'], 'Banned')