Exemplo n.º 1
0
  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')
Exemplo n.º 2
0
  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')
Exemplo n.º 3
0
    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')