# - 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
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
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']])