diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/helper/Stubs.py | 107 | ||||
-rw-r--r-- | tests/manager/test_accountManager.py | 9 | ||||
-rw-r--r-- | tests/manager/test_downloadManager.py | 42 | ||||
-rw-r--r-- | tests/manager/test_filemanager.py | 32 |
4 files changed, 87 insertions, 103 deletions
diff --git a/tests/helper/Stubs.py b/tests/helper/Stubs.py index 81b7d8a09..3541e4ffb 100644 --- a/tests/helper/Stubs.py +++ b/tests/helper/Stubs.py @@ -1,33 +1,32 @@ # -*- coding: utf-8 -*- -import sys -from os.path import abspath, dirname, join +from os.path import join from time import strftime from traceback import format_exc -from collections import defaultdict - -sys.path.append(abspath(join(dirname(__file__), "..", "..", "pyload", "lib"))) -sys.path.append(abspath(join(dirname(__file__), "..", ".."))) import __builtin__ from pyload.Api import Role +from pyload.Core import Core +from pyload.InitHomeDir import init_dir from pyload.datatypes.User import User -from pyload.datatypes.PyPackage import PyPackage from pyload.threads.BaseThread import BaseThread from pyload.config.ConfigParser import ConfigParser -from pyload.network.RequestFactory import RequestFactory -from pyload.PluginManager import PluginManager -from pyload.utils.JsEngine import JsEngine -from logging import log, DEBUG, INFO, WARN, ERROR +init_dir(join("tests", "config")) +from logging import log, DEBUG, INFO, WARN, ERROR # Do nothing def noop(*args, **kwargs): pass +class NoopClass: + def __getattr__(self, item): + return noop + + ConfigParser.save = noop @@ -45,80 +44,31 @@ class LogStub: log(WARN, *args) -class NoLog: - def debug(self, *args): - pass - - def info(self, *args): - pass - - def error(self, *args): - log(ERROR, *args) - - def warning(self, *args): - log(WARN, *args) - - -class Core: +class TestCore(Core): def __init__(self): - self.log = NoLog() - - self.api = self.core = self - self.threadManager = self - self.debug = True - self.captcha = True - self.config = ConfigParser() - self.pluginManager = PluginManager(self) - self.requestFactory = RequestFactory(self) - __builtin__.pyreq = self.requestFactory - self.accountManager = AccountManager() - self.addonManager = AddonManager() - self.eventManager = self.evm = NoopClass() - self.interactionManager = self.im = NoopClass() - self.scheduler = NoopClass() - self.js = JsEngine() - self.cache = {} - self.packageCache = {} - - self.statusMsg = defaultdict(lambda: "statusmsg") + super(TestCore, self).__init__() + self.start(tests=True) + self.db.getUserData = self.getUserData self.log = LogStub() def getServerVersion(self): return "TEST_RUNNER on %s" % strftime("%d %h %Y") - def path(self, path): - return path - - def updateFile(self, *args): - pass + def init_logger(self, level): + # init with empty logger + self.log = NoopClass() - def updatePackage(self, *args): - pass - - def processingIds(self, *args): - return [] - - def getPackage(self, *args): - return PyPackage(self, 0, "tmp", "tmp", -1, 0, "", "", "", 0, "", 0, 0, 0) - - def print_exc(self): + def print_exc(self, force=False): log(ERROR, format_exc()) + def getUserData(self, uid): + if uid == 0: + return adminUser + elif uid == 1: + return normalUser -class NoopClass: - def __getattr__(self, item): - return noop - - -class AddonManager(NoopClass): - def activePlugins(self): - return [] - - -class AccountManager: - def getAccountForPlugin(self, name): - return None + return otherUser class Thread(BaseThread): @@ -136,10 +86,11 @@ class Thread(BaseThread): return dump +Core = TestCore + __builtin__._ = lambda x: x -__builtin__.pypath = abspath(join(dirname(__file__), "..", "..")) -__builtin__.addonManager = AddonManager() -__builtin__.pyreq = None adminUser = User(None, uid=0, role=Role.Admin) -normalUser = User(None, uid=1, role=Role.User)
\ No newline at end of file +normalUser = User(None, uid=1, role=Role.User) +otherUser = User(None, uid=2, role=Role.User) + diff --git a/tests/manager/test_accountManager.py b/tests/manager/test_accountManager.py index 1b328f892..b7166b2bd 100644 --- a/tests/manager/test_accountManager.py +++ b/tests/manager/test_accountManager.py @@ -4,17 +4,12 @@ from unittest import TestCase from tests.helper.Stubs import Core, adminUser, normalUser -from pyload.database import DatabaseBackend -from pyload.AccountManager import AccountManager - class TestAccountManager(TestCase): @classmethod def setUpClass(cls): cls.core = Core() - cls.db = DatabaseBackend(cls.core) - cls.core.db = cls.db - cls.db.setup() + cls.db = cls.core.db @classmethod def tearDownClass(cls): @@ -22,7 +17,7 @@ class TestAccountManager(TestCase): def setUp(self): self.db.purgeAccounts() - self.manager = AccountManager(self.core) + self.manager = self.core.accountManager def test_access(self): account = self.manager.updateAccount("Http", "User", "somepw", adminUser) diff --git a/tests/manager/test_downloadManager.py b/tests/manager/test_downloadManager.py new file mode 100644 index 000000000..9906ca1a0 --- /dev/null +++ b/tests/manager/test_downloadManager.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +from tests.helper.Stubs import Core, normalUser, adminUser +from tests.helper.BenchmarkTest import BenchmarkTest + +from pyload.database import DatabaseBackend +# disable asyncronous queries +DatabaseBackend.async = DatabaseBackend.queue + +class TestDownloadManager(BenchmarkTest): + + bench = ["add_links", "db"] + + @classmethod + def setUpClass(cls): + cls.c = Core() + cls.db = cls.c.db + cls.db.purgeAll() + + cls.files = cls.c.files + cls.m = cls.c.downloadManager + + @classmethod + def tearDownClass(cls): + cls.db.purgeAll() + cls.db.shutdown() + + def setUp(self): + self.test_add_links() + + def test_add_links(self): + # just generate some links and files + for i in range(10): + pid = self.files.addPackage("name %d", "folder", -1, "", "", "", False, normalUser.uid) + self.files.addLinks([("plugin%d" % i, "url%d" %i) for i in range(50)], pid, normalUser.uid) + + def test_db(self): + pass + + +if __name__ == "__main__": + TestDownloadManager.benchmark()
\ No newline at end of file diff --git a/tests/manager/test_filemanager.py b/tests/manager/test_filemanager.py index a7507cada..212ea6d8c 100644 --- a/tests/manager/test_filemanager.py +++ b/tests/manager/test_filemanager.py @@ -2,7 +2,7 @@ from random import choice -from tests.helper.Stubs import Core +from tests.helper.Stubs import Core, normalUser from tests.helper.BenchmarkTest import BenchmarkTest from pyload.database import DatabaseBackend @@ -10,8 +10,6 @@ from pyload.database import DatabaseBackend DatabaseBackend.async = DatabaseBackend.queue from pyload.Api import DownloadState -from pyload.FileManager import FileManager - class TestFileManager(BenchmarkTest): bench = ["add_packages", "add_files", "get_files_root", "get", @@ -24,19 +22,17 @@ class TestFileManager(BenchmarkTest): @classmethod def setUpClass(cls): c = Core() - # db needs seperate initialisation - cls.db = c.db = DatabaseBackend(c) - cls.db.setup() + # db needs separate initialisation + cls.db = c.db cls.db.purgeAll() - cls.m = cls.db.manager = FileManager(c) + cls.m = cls.db.manager = c.files @classmethod def tearDownClass(cls): cls.db.purgeAll() cls.db.shutdown() - # benchmarker ignore setup def setUp(self): self.db.purgeAll() @@ -48,7 +44,7 @@ class TestFileManager(BenchmarkTest): def test_add_packages(self): for i in range(100): - pid = self.m.addPackage("name", "folder", choice(self.pids), "", "", "", False) + pid = self.m.addPackage("name", "folder", choice(self.pids), "", "", "", False, normalUser.uid) self.pids.append(pid) if -1 in self.pids: @@ -56,7 +52,7 @@ class TestFileManager(BenchmarkTest): def test_add_files(self): for pid in self.pids: - self.m.addLinks([("plugin %d" % i, "url %s" % i) for i in range(self.count)], pid) + self.m.addLinks([("plugin %d" % i, "url %s" % i) for i in range(self.count)], pid, normalUser.uid) count = self.m.getQueueStats()[0] files = self.count * len(self.pids) @@ -120,14 +116,14 @@ class TestFileManager(BenchmarkTest): for fid in view.root.fids: assert fid in view.files def test_delete(self): - self.m.deleteFile(self.count * 5) - self.m.deletePackage(choice(self.pids)) + self.m.removeFile(self.count * 5) + self.m.removePackage(choice(self.pids)) def test_order_package(self): - parent = self.m.addPackage("order", "", -1, "", "", "", False) - self.m.addLinks([("url", "plugin") for i in range(100)], parent) + parent = self.m.addPackage("order", "", -1, "", "", "", False, normalUser.uid) + self.m.addLinks([("url", "plugin") for i in range(100)], parent, normalUser.uid) - pids = [self.m.addPackage("c", "", parent, "", "", "", False) for i in range(5)] + pids = [self.m.addPackage("c", "", parent, "", "", "", False, normalUser.uid) for i in range(5)] v = self.m.getTree(parent, False, None) self.assert_ordered(pids, 0, 5, v.root.pids, v.packages, True) @@ -143,8 +139,8 @@ class TestFileManager(BenchmarkTest): def test_order_files(self): - parent = self.m.addPackage("order", "", -1, "", "", "", False) - self.m.addLinks([("url", "plugin") for i in range(100)], parent) + parent = self.m.addPackage("order", "", -1, "", "", "", False, normalUser.uid) + self.m.addLinks([("url", "plugin") for i in range(100)], parent, normalUser.uid) v = self.m.getTree(parent, False, None) fids = v.root.fids[10:20] @@ -206,7 +202,7 @@ class TestFileManager(BenchmarkTest): self.m.movePackage(pid, -1) v = self.m.getTree(-1, False, False) - assert v.root.pids[-1] == pid + assert pid in v.root.pids assert sorted([p.packageorder for p in v.packages.values()]) == range(len(v.packages)) v = self.m.getTree(pid, False, False) |