[TIC-CORE] Logger support and add test-cast for repodata
[archive/20170607/tools/tic-core.git] / test / test_dependency.py
index 89d3a41..bfcae8d 100644 (file)
 # - S-Core Co., Ltd
 
 import os
+import base64
 import time
 import unittest
 
 from tic.dependency import analyze_dependency
 from tic.parser.repo_parser import RepodataParser
+from tic.repo import Repo
+from tic.repo import get_repodata_from_repos
 
 
 current_milli_time = lambda: int(round(time.time() * 1000))
 CWD = os.path.dirname(__file__) or '.'
-TEST_REPODATA_LOC = os.path.join(CWD, 'dependency_fixtures')
+TEST_REPODATA_LOC=os.path.join(CWD, 'dependency_fixtures')
+DEFAULT_CACHEDIR='/var/tmp/tic-core/cached'
 
 def suite():
     # return unittest.makeSuite(DependencyTest, ['testsun1', 'testTrue'])
     return unittest.makeSuite(DependencyTest)
-    
+
 class DependencyTest(unittest.TestCase):
     def setUp(self):
         # test environment setup
-        self.repo_list = [os.path.join(TEST_REPODATA_LOC, 'repodata/base-primary.xml'),
-                          os.path.join(TEST_REPODATA_LOC, 'repodata/mobile-primary.xml')]
+        self.repo_list = ['file:/' + TEST_REPODATA_LOC + '/base',
+                          'file:/' + TEST_REPODATA_LOC + '/mobile']
+        
+        repos = []
+        for repo_url in self.repo_list:
+            repos.append(Repo(base64.urlsafe_b64encode(repo_url), repo_url))
+        self.repodata_list = get_repodata_from_repos(repos, DEFAULT_CACHEDIR)
+        
         self.pkg_group = None
         try:
-            repo_parser = RepodataParser(self.repo_list)
+            repo_parser = RepodataParser(self.repodata_list)
             self.pkg_group = repo_parser.parse()
         except Exception as e:
             raise self.failureException
-        
-        
+
 
     def tearDown(self):
         # clear environment after test 
@@ -67,22 +76,20 @@ class DependencyTest(unittest.TestCase):
         for pkg_id in range(len(pkg_list)):
             pkg_info = pkg_list[pkg_id]
             self.assertEqual(pkg_id, pkg2id.get(pkg_info['name']))
-        
+    
     def test_dependency(self):
         # 1st package install-depdency analysis
-        start_time = current_milli_time()
         analyze_dependency(self.pkg_group)
         # print('time:', current_milli_time() - start_time)
         pkg_list = self.pkg_group['pkg_list']
         
         # 2nd package install-depdency analysis for test (using bruteforce)
-        test_repo_parser = RepodataParser(self.repo_list)
+        test_repo_parser = RepodataParser(self.repodata_list)
         test_pkg_group = test_repo_parser.parse()
         test_pkg_list = test_pkg_group.get('pkg_list')
         test_pkg2id = test_pkg_group.get('pkg2id')
         
-        start_time = current_milli_time()
-        count = 1;
+        count = 1
         visited = [0]*len(test_pkg_list)
         for pkg_id in range(len(test_pkg_list)):
             visited[pkg_id] = count
@@ -99,18 +106,22 @@ class DependencyTest(unittest.TestCase):
             pkg_info = pkg_list[pkg_id]
             test_pkg_info = test_pkg_list[test_pkg2id[pkg_info['name']]]
             
+            # package check 
             if pkg_info['name'] != test_pkg_info['name']:
                 raise self.failureException
-            elif len(pkg_info['dependency']) != len(test_pkg_info['dependency']):
+            
+            # dependency count 
+            if len(pkg_info['dependency']) != len(test_pkg_info['dependency']):
                 print('pkg_info_1:', pkg_info['dependency'])
                 print('pkg_info_2:', test_pkg_info['dependency'])
                 raise self.failureException
             
+            # dependency validation between pkg_info and test_pkg_info
             for dep in test_pkg_info.get('dependency'):
                 if dep not in pkg_info['dependency']:
                     print(dep, 'does not exist')
                     raise self.failureException
-                    
+    
     def dep_dfs(self, count, pkg_id, pkg_list, visited):
         dep_set = set([pkg_list[pkg_id]['name']])