Home | History | Annotate | Download | only in server2
      1 #!/usr/bin/env python
      2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 import os
      7 import sys
      8 import unittest
      9 
     10 from branch_utility import BranchUtility, ChannelInfo
     11 from fake_url_fetcher import FakeUrlFetcher
     12 from object_store_creator import ObjectStoreCreator
     13 from test_util import Server2Path
     14 
     15 
     16 class BranchUtilityTest(unittest.TestCase):
     17 
     18   def setUp(self):
     19     self._branch_util = BranchUtility(
     20         os.path.join('branch_utility', 'first.json'),
     21         os.path.join('branch_utility', 'second.json'),
     22         FakeUrlFetcher(Server2Path('test_data')),
     23         ObjectStoreCreator.ForTest())
     24 
     25   def testSplitChannelNameFromPath(self):
     26     self.assertEquals(('stable', 'extensions/stuff.html'),
     27                       self._branch_util.SplitChannelNameFromPath(
     28                       'stable/extensions/stuff.html'))
     29     self.assertEquals(('dev', 'extensions/stuff.html'),
     30                       self._branch_util.SplitChannelNameFromPath(
     31                       'dev/extensions/stuff.html'))
     32     self.assertEquals(('beta', 'extensions/stuff.html'),
     33                       self._branch_util.SplitChannelNameFromPath(
     34                       'beta/extensions/stuff.html'))
     35     self.assertEquals(('trunk', 'extensions/stuff.html'),
     36                       self._branch_util.SplitChannelNameFromPath(
     37                       'trunk/extensions/stuff.html'))
     38     self.assertEquals((None, 'extensions/stuff.html'),
     39                       self._branch_util.SplitChannelNameFromPath(
     40                       'extensions/stuff.html'))
     41     self.assertEquals((None, 'apps/stuff.html'),
     42                       self._branch_util.SplitChannelNameFromPath(
     43                       'apps/stuff.html'))
     44     self.assertEquals((None, 'extensions/dev/stuff.html'),
     45                       self._branch_util.SplitChannelNameFromPath(
     46                       'extensions/dev/stuff.html'))
     47     self.assertEquals((None, 'stuff.html'),
     48                       self._branch_util.SplitChannelNameFromPath(
     49                       'stuff.html'))
     50 
     51   def testNewestChannel(self):
     52     self.assertEquals('trunk',
     53         self._branch_util.NewestChannel(('trunk', 'dev', 'beta', 'stable')))
     54     self.assertEquals('trunk',
     55         self._branch_util.NewestChannel(('stable', 'beta', 'dev', 'trunk')))
     56     self.assertEquals('dev',
     57         self._branch_util.NewestChannel(('stable', 'beta', 'dev')))
     58     self.assertEquals('dev',
     59         self._branch_util.NewestChannel(('dev', 'beta', 'stable')))
     60     self.assertEquals('beta',
     61         self._branch_util.NewestChannel(('beta', 'stable')))
     62     self.assertEquals('beta',
     63         self._branch_util.NewestChannel(('stable', 'beta')))
     64     self.assertEquals('stable', self._branch_util.NewestChannel(('stable',)))
     65     self.assertEquals('beta', self._branch_util.NewestChannel(('beta',)))
     66     self.assertEquals('dev', self._branch_util.NewestChannel(('dev',)))
     67     self.assertEquals('trunk', self._branch_util.NewestChannel(('trunk',)))
     68 
     69   def testNewer(self):
     70     oldest_stable_info = ChannelInfo('stable', '963', 17)
     71     older_stable_info = ChannelInfo('stable', '1025', 18)
     72     old_stable_info = ChannelInfo('stable', '1084', 19)
     73     sort_of_old_stable_info = ChannelInfo('stable', '1364', 25)
     74     stable_info = ChannelInfo('stable', '1410', 26)
     75     beta_info = ChannelInfo('beta', '1453', 27)
     76     dev_info = ChannelInfo('dev', '1500', 28)
     77     trunk_info = ChannelInfo('trunk', 'trunk', 'trunk')
     78 
     79     self.assertEquals(older_stable_info,
     80                       self._branch_util.Newer(oldest_stable_info))
     81     self.assertEquals(old_stable_info,
     82                       self._branch_util.Newer(older_stable_info))
     83     self.assertEquals(stable_info,
     84                       self._branch_util.Newer(sort_of_old_stable_info))
     85     self.assertEquals(beta_info, self._branch_util.Newer(stable_info))
     86     self.assertEquals(dev_info, self._branch_util.Newer(beta_info))
     87     self.assertEquals(trunk_info, self._branch_util.Newer(dev_info))
     88     # Test the upper limit.
     89     self.assertEquals(None, self._branch_util.Newer(trunk_info))
     90 
     91 
     92   def testOlder(self):
     93     trunk_info = ChannelInfo('trunk', 'trunk', 'trunk')
     94     dev_info = ChannelInfo('dev', '1500', 28)
     95     beta_info = ChannelInfo('beta', '1453', 27)
     96     stable_info = ChannelInfo('stable', '1410', 26)
     97     old_stable_info = ChannelInfo('stable', '1364', 25)
     98     older_stable_info = ChannelInfo('stable', '1312', 24)
     99     oldest_stable_info = ChannelInfo('stable', '396', 5)
    100 
    101     self.assertEquals(dev_info, self._branch_util.Older(trunk_info))
    102     self.assertEquals(beta_info, self._branch_util.Older(dev_info))
    103     self.assertEquals(stable_info, self._branch_util.Older(beta_info))
    104     self.assertEquals(old_stable_info, self._branch_util.Older(stable_info))
    105     self.assertEquals(older_stable_info,
    106                       self._branch_util.Older(old_stable_info))
    107     # Test the lower limit.
    108     self.assertEquals(None, self._branch_util.Older(oldest_stable_info))
    109 
    110   def testGetChannelInfo(self):
    111     trunk_info = ChannelInfo('trunk', 'trunk', 'trunk')
    112     self.assertEquals(trunk_info, self._branch_util.GetChannelInfo('trunk'))
    113 
    114     dev_info = ChannelInfo('dev', '1500', 28)
    115     self.assertEquals(dev_info, self._branch_util.GetChannelInfo('dev'))
    116 
    117     beta_info = ChannelInfo('beta', '1453', 27)
    118     self.assertEquals(beta_info, self._branch_util.GetChannelInfo('beta'))
    119 
    120     stable_info = ChannelInfo('stable', '1410', 26)
    121     self.assertEquals(stable_info, self._branch_util.GetChannelInfo('stable'))
    122 
    123   def testGetLatestVersionNumber(self):
    124     self.assertEquals(37, self._branch_util.GetLatestVersionNumber())
    125 
    126   def testGetBranchForVersion(self):
    127     self.assertEquals('1500',
    128         self._branch_util.GetBranchForVersion(28))
    129     self.assertEquals('1453',
    130         self._branch_util.GetBranchForVersion(27))
    131     self.assertEquals('1410',
    132         self._branch_util.GetBranchForVersion(26))
    133     self.assertEquals('1364',
    134         self._branch_util.GetBranchForVersion(25))
    135     self.assertEquals('1312',
    136         self._branch_util.GetBranchForVersion(24))
    137     self.assertEquals('1271',
    138         self._branch_util.GetBranchForVersion(23))
    139     self.assertEquals('1229',
    140         self._branch_util.GetBranchForVersion(22))
    141     self.assertEquals('1180',
    142         self._branch_util.GetBranchForVersion(21))
    143     self.assertEquals('1132',
    144         self._branch_util.GetBranchForVersion(20))
    145     self.assertEquals('1084',
    146         self._branch_util.GetBranchForVersion(19))
    147     self.assertEquals('1025',
    148         self._branch_util.GetBranchForVersion(18))
    149     self.assertEquals('963',
    150         self._branch_util.GetBranchForVersion(17))
    151     self.assertEquals('696',
    152         self._branch_util.GetBranchForVersion(11))
    153     self.assertEquals('396',
    154         self._branch_util.GetBranchForVersion(5))
    155 
    156   def testGetChannelForVersion(self):
    157     self.assertEquals('trunk',
    158         self._branch_util.GetChannelForVersion('trunk'))
    159     self.assertEquals('dev',
    160         self._branch_util.GetChannelForVersion(28))
    161     self.assertEquals('beta',
    162         self._branch_util.GetChannelForVersion(27))
    163     self.assertEquals('stable',
    164         self._branch_util.GetChannelForVersion(26))
    165     self.assertEquals('stable',
    166         self._branch_util.GetChannelForVersion(22))
    167     self.assertEquals('stable',
    168         self._branch_util.GetChannelForVersion(18))
    169     self.assertEquals('stable',
    170         self._branch_util.GetChannelForVersion(14))
    171     self.assertEquals(None,
    172         self._branch_util.GetChannelForVersion(30))
    173     self.assertEquals(None,
    174         self._branch_util.GetChannelForVersion(42))
    175 
    176 
    177 if __name__ == '__main__':
    178   unittest.main()
    179