1b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 2b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)# found in the LICENSE file. 4b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)from branch_utility import BranchUtility, ChannelInfo 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfrom test_data.canned_data import (CANNED_BRANCHES, CANNED_CHANNELS) 7b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 8424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 9b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)class TestBranchUtility(object): 10b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) '''Mimics BranchUtility to return valid-ish data without needing omahaproxy 11b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) data. 12b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ''' 13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) def __init__(self, versions, channels): 15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ''' Parameters: |version| is a mapping of versions to branches, and 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch |channels| is a mapping of channels to versions. 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ''' 18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) self._versions = versions 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch self._channels = channels 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch @staticmethod 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch def CreateWithCannedData(): 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch '''Returns a TestBranchUtility that uses 'canned' test data pulled from 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch older branches of SVN data. 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ''' 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return TestBranchUtility(CANNED_BRANCHES, CANNED_CHANNELS) 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) def GetAllChannelInfo(self): 29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return tuple(self.GetChannelInfo(channel) 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) for channel in BranchUtility.GetAllChannelNames()) 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) def GetChannelInfo(self, channel): 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch version = self._channels[channel] 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return ChannelInfo(channel, self.GetBranchForVersion(version), version) 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 36424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) def GetStableChannelInfo(self, version): 37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return ChannelInfo('stable', self.GetBranchForVersion(version), version) 38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) def GetBranchForVersion(self, version): 40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return self._versions[version] 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch def GetChannelForVersion(self, version): 43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if version <= self._channels['stable']: 44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return 'stable' 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch for channel in self._channels.iterkeys(): 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if self._channels[channel] == version: 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return channel 48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) def Older(self, channel_info): 50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) versions = self._versions.keys() 51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) index = versions.index(channel_info.version) 52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if index == len(versions) - 1: 53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return None 54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) version = versions[index + 1] 55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return ChannelInfo(self.GetChannelForVersion(version), 56424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) self.GetBranchForVersion(version), 57424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) version) 58424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 59424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) def Newer(self, channel_info): 60424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) versions = self._versions.keys() 61424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) index = versions.index(channel_info.version) 62424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if not index: 63424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return None 64424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) version = versions[index - 1] 65424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return ChannelInfo(self.GetChannelForVersion(version), 66424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) self.GetBranchForVersion(version), 67424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) version) 68