Source code for mods.test

# mods/test.py
#
#

""" plugin containing test commands and classes. """

from mads.misc import stripped
from mads.event import Event

from mids import cfg, fleet, kernel, users

import mads.errors

import logging
import string
import random
import types
import time

[docs]def randomname(): res = "" for x in range(random.randint(3,10)): res += random.choice(string.printable) return res
[docs]def randomarg(): t = random.choice(types.__all__) return types.new_class(t)()
[docs]def e(event): event.reply(event.nice())
[docs]def flood(event): txt = "b" * 5000 event.reply(txt)
[docs]def forced(event): for bot in fleet: try: bot._sock.shutdown(2) except AttributeError: pass
[docs]def exception(event): if not users.allowed(event.origin, "OPER"): event.reply("you are not allowed to give the exception command.") return raise Exception('test exception')
[docs]def wrongxml(event): event.reply('sending bork xml') for bot in fleet: bot.raw('<message asdfadf/>')
[docs]def unicode(event): event.reply(outtxt)
[docs]def deadline(event): try: nrseconds = int(event.parsed.rest) except: nrseconds = 2 event.reply('starting %s sec sleep' % nrseconds) time.sleep(nrseconds)
[docs]def testcfg(event): e = Event() path = e.save() event.reply(path)
[docs]def html(event): event.reply('<span style="font-family: fixed; font-size: 10pt"><b>YOOOO BROEDERS</b></span>')
[docs]def cmndrun(event): cfg.workdir = "test.data" for name in sorted(kernel.modules()): if name in ["mods.test", "mods.rss"]: continue mod = kernel.direct(name) for n in dir(mod): if n in exclude: continue func = getattr(mod, n, None) if func and type(func) in [types.FunctionType, types.MethodType]: if "event" in func.__code__.co_varnames: e = Event() e.id = event.id e._funcs.append(func) e.workdir = "test.data" e.origin = "test@bot" kernel.put(e)
[docs]def functest(event): cfg.workdir = "test.data" for name in sorted(kernel.modules()): if name in ["mods.test", "mods.rss"]: continue mod = kernel.direct(name) for n in dir(mod): if n in exclude: continue func = getattr(mod, n, None) if func and type(func) in [types.FunctionType, types.MethodType]: try: func(randomarg()) except (mads.errors.ENODATE, TypeError, AssertionError, AttributeError) as ex: pass
[docs]def testcmnds(event): cfg.workdir = "test.data" for cmnd in sorted(kernel._handlers.keys()): if cmnd in exclude: continue e = Event() e.id = event.id e.txt = "%s %s" % (cmnd, randomname()) e.origin = "test@bot" e.parse() kernel.put(e)
[docs]def runkernel(event): cfg.workdir = "test.data" if cfg.owner not in event.origin: event.reply("EOWNER %s" % event.origin) return thrs = [] try: nrloops = int(event._parsed.args[0]) except: nrloops = 1 for x in range(nrloops): thr = kernel.launch(testcmnds, event) thrs.append(thr) for thr in thrs: thr.join()
exclude = ["fetcher", "testcmnds", "runkernel", "getline", "start", "functest"] outtxt = u"Đíť ìš éèñ ëņċøďıńğŧęŝţ· .. にほんごがはなせません .. ₀0⁰₁1¹₂2²₃3³₄4⁴₅5⁵₆6⁶₇7⁷₈8⁸₉9⁹ .. ▁▂▃▄▅▆▇▉▇▆▅▄▃▂▁ .. .. uǝʌoqǝʇsɹǝpuo pɐdı ǝɾ ʇpnoɥ ǝɾ"