1*9c5db199SXin Li#!/usr/bin/python3 2*9c5db199SXin Lifrom __future__ import absolute_import 3*9c5db199SXin Lifrom __future__ import division 4*9c5db199SXin Lifrom __future__ import print_function 5*9c5db199SXin Liimport unittest 6*9c5db199SXin Liimport common 7*9c5db199SXin Lifrom autotest_lib.client.bin import kernel_versions 8*9c5db199SXin Lifrom six.moves import range 9*9c5db199SXin Li 10*9c5db199SXin Li 11*9c5db199SXin Liclass kernel_versions_test(unittest.TestCase): 12*9c5db199SXin Li 13*9c5db199SXin Li def increases(self, kernels): 14*9c5db199SXin Li for i in range(len(kernels)-1): 15*9c5db199SXin Li k1 = kernels[i] 16*9c5db199SXin Li k2 = kernels[i+1] 17*9c5db199SXin Li ek1 = kernel_versions.version_encode(k1) 18*9c5db199SXin Li ek2 = kernel_versions.version_encode(k2) 19*9c5db199SXin Li self.assertTrue(ek1 < ek2, 20*9c5db199SXin Li '%s (-> %s) should sort < %s (-> %s)' 21*9c5db199SXin Li % (k1, ek1, k2, ek2) ) 22*9c5db199SXin Li 23*9c5db199SXin Li 24*9c5db199SXin Li def test_version_encode(self): 25*9c5db199SXin Li series1 = [ 26*9c5db199SXin Li '2.6', 27*9c5db199SXin Li '2.6.0', 28*9c5db199SXin Li '2.6.1-rc1', 29*9c5db199SXin Li '2.6.1-rc1_fix', 30*9c5db199SXin Li '2.6.1-rc1_patch', 31*9c5db199SXin Li '2.6.1-rc9', 32*9c5db199SXin Li '2.6.1-rc9-mm1', 33*9c5db199SXin Li '2.6.1-rc9-mm2', 34*9c5db199SXin Li '2.6.1-rc10', 35*9c5db199SXin Li '2.6.1-rc98', 36*9c5db199SXin Li '2.6.1', 37*9c5db199SXin Li '2.6.1_patch', 38*9c5db199SXin Li '2.6.9', 39*9c5db199SXin Li '2.6.10', 40*9c5db199SXin Li '2.6.99', 41*9c5db199SXin Li '2.7', 42*9c5db199SXin Li '2.9.99', 43*9c5db199SXin Li '2.10.0', 44*9c5db199SXin Li '99.99.99', 45*9c5db199SXin Li 'UNKNOWN', 46*9c5db199SXin Li ] 47*9c5db199SXin Li self.increases(series1) 48*9c5db199SXin Li self.increases(['pathX'+k for k in series1]) 49*9c5db199SXin Li series2 = [ 50*9c5db199SXin Li '2.6.18-smp-220', 51*9c5db199SXin Li '2.6.18-smp-220.0', 52*9c5db199SXin Li '2.6.18-smp-220.1_rc1', 53*9c5db199SXin Li '2.6.18-smp-220.1_rc1_fix', 54*9c5db199SXin Li '2.6.18-smp-220.1_rc1_patch', 55*9c5db199SXin Li '2.6.18-smp-220.1_rc9', 56*9c5db199SXin Li '2.6.18-smp-220.1_rc9_mm1', 57*9c5db199SXin Li '2.6.18-smp-220.1_rc9_mm2', 58*9c5db199SXin Li '2.6.18-smp-220.1_rc10', 59*9c5db199SXin Li '2.6.18-smp-220.1_rc98', 60*9c5db199SXin Li '2.6.18-smp-220.1', 61*9c5db199SXin Li '2.6.18-smp-220.1_patch', 62*9c5db199SXin Li '2.6.18-smp-220.9', 63*9c5db199SXin Li '2.6.18-smp-220.10', 64*9c5db199SXin Li '2.6.18-smp-220.99', 65*9c5db199SXin Li '2.6.18-smp-221', 66*9c5db199SXin Li 'UNKNOWN', 67*9c5db199SXin Li ] 68*9c5db199SXin Li self.increases(series2) 69*9c5db199SXin Li self.increases(['pathX'+k for k in series2]) 70*9c5db199SXin Li 71*9c5db199SXin Li 72*9c5db199SXin Li releases = ['2.6.1' , '2.6.18-smp-220.0' ] 73*9c5db199SXin Li candidates = ['2.6.1-rc1' , '2.6.18-smp-220.0_rc1'] 74*9c5db199SXin Li experiments = ['2.6.1-patch', '2.6.1-rc1_patch', '2.6.18-smp-220.0_patch', 75*9c5db199SXin Li 'UNKNOWN'] 76*9c5db199SXin Li 77*9c5db199SXin Li def test_is_released_kernel(self): 78*9c5db199SXin Li for v in self.releases: 79*9c5db199SXin Li self.assertTrue(kernel_versions.is_released_kernel(v)) 80*9c5db199SXin Li for v in self.candidates + self.experiments: 81*9c5db199SXin Li self.assertFalse(kernel_versions.is_released_kernel(v)) 82*9c5db199SXin Li 83*9c5db199SXin Li 84*9c5db199SXin Li def test_is_release_candidate(self): 85*9c5db199SXin Li for v in self.releases + self.candidates: 86*9c5db199SXin Li self.assertTrue(kernel_versions.is_release_candidate(v)) 87*9c5db199SXin Li for v in self.experiments: 88*9c5db199SXin Li self.assertFalse(kernel_versions.is_release_candidate(v)) 89*9c5db199SXin Li 90*9c5db199SXin Li 91*9c5db199SXin Liif __name__ == "__main__": 92*9c5db199SXin Li unittest.main() 93