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ɥ ǝɾ"