def testBothNoTags(self): target_pair = traffic_pair.TrafficTargetPair( [TrafficTarget('s1-r1', 100)], [ TrafficTarget('s1-r1', 100), ], 's1-r1', False, None) self.assertEqual(target_pair.specTags, '-') self.assertEqual(target_pair.statusTags, '-') self.assertEqual(target_pair.urls, []) self.assertEqual(target_pair.displayTags, '')
def testSpecOneTag(self): target_pair = traffic_pair.TrafficTargetPair([ TrafficTarget('s1-r1', 100), TrafficTarget('s1-r1', None, tag='candidate') ], [], 's1-r1', False, None) self.assertEqual(target_pair.specTags, 'candidate') self.assertEqual(target_pair.statusTags, '-') self.assertEqual(target_pair.urls, []) self.assertEqual(target_pair.displayTags, 'candidate (currently -)')
def testStatusOneTag(self): target_pair = traffic_pair.TrafficTargetPair([], [ TrafficTarget('s1-r1', 100), TrafficTarget('s1-r1', None, tag='candidate', populate_url=True) ], 's1-r1', False, None) self.assertEqual(target_pair.specTags, '-') self.assertEqual(target_pair.statusTags, 'candidate') self.assertEqual(target_pair.urls, ['https://candidate---service.uc.a.run.app/']) self.assertEqual(target_pair.displayTags, '- (currently candidate)')
def testMultipleStatusTargetsWithPercentRevisionName(self): target_pair = traffic_pair.TrafficTargetPair([], [ TrafficTarget('s1-r2', 40), TrafficTarget('s1-r2', None), TrafficTarget('s1-r2', 60) ], 's1-r2', False, None) self.assertEqual(target_pair.key, 's1-r2') self.assertFalse(target_pair.latestRevision) self.assertEqual(target_pair.revisionName, 's1-r2') self.assertEqual(target_pair.specPercent, '-') self.assertEqual(target_pair.statusPercent, '100') self.assertEqual(target_pair.displayRevisionId, 's1-r2') self.assertEqual(target_pair.displayPercent, '- (currently 100%)')
def testMultipleStatusTargetsWithOverrideLatest(self): target_pair = traffic_pair.TrafficTargetPair([], [ TrafficTarget(traffic.LATEST_REVISION_KEY, 40), TrafficTarget(traffic.LATEST_REVISION_KEY, None), TrafficTarget(traffic.LATEST_REVISION_KEY, 60) ], 's1-r2', True, 80) self.assertEqual(target_pair.key, traffic.LATEST_REVISION_KEY) self.assertTrue(target_pair.latestRevision) self.assertEqual(target_pair.revisionName, 's1-r2') self.assertEqual(target_pair.specPercent, '-') self.assertEqual(target_pair.statusPercent, '80') self.assertEqual(target_pair.displayRevisionId, 'LATEST (currently s1-r2)') self.assertEqual(target_pair.displayPercent, '- (currently 80%)')
def testBothMultipleTags(self): target_pair = traffic_pair.TrafficTargetPair([ TrafficTarget('s1-r1', 100), TrafficTarget('s1-r1', None, tag='candidate'), TrafficTarget('s1-r1', None, tag='head') ], [ TrafficTarget('s1-r1', 100), TrafficTarget('s1-r1', None, tag='candidate', populate_url=True), TrafficTarget('s1-r1', None, tag='head', populate_url=True) ], 's1-r1', False, None) self.assertEqual(target_pair.specTags, 'candidate, head') self.assertEqual(target_pair.statusTags, 'candidate, head') self.assertEqual(target_pair.urls, [ 'https://candidate---service.uc.a.run.app/', 'https://head---service.uc.a.run.app/' ]) self.assertEqual(target_pair.displayTags, 'candidate, head')
def testSortsTagsAndUrls(self): target_pair = traffic_pair.TrafficTargetPair([ TrafficTarget('s1-r1', 100), TrafficTarget('s1-r1', tag='c'), TrafficTarget('s1-r1', tag='b'), TrafficTarget('s1-r1', tag='a'), TrafficTarget('s1-r1', tag='d') ], [ TrafficTarget('s1-r1', 100), TrafficTarget('s1-r1', tag='d', populate_url=True), TrafficTarget('s1-r1', tag='c', populate_url=True), TrafficTarget('s1-r1', tag='a', populate_url=True), TrafficTarget('s1-r1', tag='b', populate_url=True), ], 's1-r1', False, None) self.assertEqual(target_pair.specTags, 'a, b, c, d') self.assertEqual(target_pair.statusTags, 'a, b, c, d') self.assertEqual(target_pair.urls, [ 'https://a---service.uc.a.run.app/', 'https://b---service.uc.a.run.app/', 'https://c---service.uc.a.run.app/', 'https://d---service.uc.a.run.app/', ]) self.assertEqual(target_pair.displayTags, 'a, b, c, d')
def NewTrafficTargetPair(latest_revision_name, spec_percent=None, spec_latest=None, spec_revision_name=None, status_percent=None, status_latest=None, status_revision_name=None, status_percent_override=None, service_url=''): if (spec_percent is not None or spec_latest is not None or spec_revision_name is not None): spec_traffic = [ MESSAGES.TrafficTarget(latestRevision=spec_latest, revisionName=spec_revision_name, percent=spec_percent) ] else: spec_traffic = [] if (status_percent is not None and (status_latest is not None or status_revision_name is not None)): status_traffic = [ MESSAGES.TrafficTarget(latestRevision=status_latest, revisionName=status_revision_name, percent=status_percent) ] else: status_traffic = [] revision_name = (spec_revision_name or status_revision_name or latest_revision_name) is_latest = spec_latest or status_latest return traffic_pair.TrafficTargetPair(spec_traffic, status_traffic, revision_name, is_latest, status_percent_override, service_url)