rubbos installation guide
[bottlenecks.git] / vstf / vstf / agent / unittest / env / test_sourcemanager.py
1 """
2 Created on 2015-10-9
3
4 @author: y00228926
5 """
6 import unittest
7 import shutil
8 import time
9 import os
10
11 from vstf.agent.env.basic.source_manager import SourceCodeManager
12 from vstf.agent.unittest.env import model
13
14
15 class TestSourceManager(model.Test):
16     def setUp(self):
17         super(TestSourceManager, self).setUp()
18         self.sm = SourceCodeManager()
19         self.dest_path = '/tmp/test_source_manager'
20         os.mkdir(self.dest_path)
21
22     def tearDown(self):
23         shutil.rmtree(self.dest_path, ignore_errors = True)
24
25     def _time(self,func):
26         def _deco(*args):
27             start_time = time.time()
28             func(*args)
29             end_time = time.time()
30             return end_time - start_time
31         return _deco
32
33     def test_download_source_code(self):
34         for key, item in self.source_repo.items():
35             print self.source_repo
36             url = item['url']
37             target = os.path.join(self.dest_path, key)
38             install = item['install']
39             if install:
40                 self.sm._git_pull(url, target)
41                 self.assertTrue(os.path.isdir(target))
42                 my_download = self._time(self.sm._git_pull)
43                 t = my_download(url, target)
44                 self.assertTrue(t < 1.0)
45             else:
46                 self.assertFalse(os.path.isdir(target))
47
48
49 if __name__ == "__main__":
50     import logging
51     logging.basicConfig(level = logging.INFO)
52     LOG = logging.getLogger(__name__)
53     unittest.main()