Home | History | Annotate | Download | only in server2
      1 # Copyright 2013 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 from branch_utility import BranchUtility, ChannelInfo
      6 from test_data.canned_data import (CANNED_BRANCHES, CANNED_CHANNELS)
      7 
      8 
      9 class TestBranchUtility(object):
     10   '''Mimics BranchUtility to return valid-ish data without needing omahaproxy
     11   data.
     12   '''
     13 
     14   def __init__(self, versions, channels):
     15     ''' Parameters: |version| is a mapping of versions to branches, and
     16     |channels| is a mapping of channels to versions.
     17     '''
     18     self._versions = versions
     19     self._channels = channels
     20 
     21   @staticmethod
     22   def CreateWithCannedData():
     23     '''Returns a TestBranchUtility that uses 'canned' test data pulled from
     24     older branches of SVN data.
     25     '''
     26     return TestBranchUtility(CANNED_BRANCHES, CANNED_CHANNELS)
     27 
     28   def GetAllChannelInfo(self):
     29     return tuple(self.GetChannelInfo(channel)
     30             for channel in BranchUtility.GetAllChannelNames())
     31 
     32   def GetChannelInfo(self, channel):
     33     version = self._channels[channel]
     34     return ChannelInfo(channel, self.GetBranchForVersion(version), version)
     35 
     36   def GetStableChannelInfo(self, version):
     37     return ChannelInfo('stable', self.GetBranchForVersion(version), version)
     38 
     39   def GetBranchForVersion(self, version):
     40     return self._versions[version]
     41 
     42   def GetChannelForVersion(self, version):
     43     if version <= self._channels['stable']:
     44       return 'stable'
     45     for channel in self._channels.iterkeys():
     46       if self._channels[channel] == version:
     47         return channel
     48 
     49   def Older(self, channel_info):
     50     versions = self._versions.keys()
     51     index = versions.index(channel_info.version)
     52     if index == len(versions) - 1:
     53       return None
     54     version = versions[index + 1]
     55     return ChannelInfo(self.GetChannelForVersion(version),
     56                        self.GetBranchForVersion(version),
     57                        version)
     58 
     59   def Newer(self, channel_info):
     60     versions = self._versions.keys()
     61     index = versions.index(channel_info.version)
     62     if not index:
     63       return None
     64     version = versions[index - 1]
     65     return ChannelInfo(self.GetChannelForVersion(version),
     66                        self.GetBranchForVersion(version),
     67                        version)
     68