irctest/irctest/basecontrollers.py

51 lines
1.4 KiB
Python
Raw Normal View History

2015-12-19 22:09:06 +00:00
import os
import shutil
import socket
import tempfile
import subprocess
2015-12-20 12:12:54 +00:00
from .optional_extensions import NotImplementedByController
2015-12-19 00:11:57 +00:00
class _BaseController:
pass
2015-12-19 22:09:06 +00:00
class DirectoryBasedController(_BaseController):
def __init__(self):
super().__init__()
self.directory = None
self.proc = None
2015-12-20 00:48:56 +00:00
def kill_proc(self):
self.proc.terminate()
try:
self.proc.wait(5)
except subprocess.TimeoutExpired:
self.proc.kill()
self.proc = None
2015-12-19 22:09:06 +00:00
def kill(self):
if self.proc:
2015-12-20 00:48:56 +00:00
self.kill_proc()
2015-12-19 22:09:06 +00:00
if self.directory:
shutil.rmtree(self.directory)
def open_file(self, name, mode='a'):
assert self.directory
if os.sep in name:
dir_ = os.path.join(self.directory, os.path.dirname(name))
if not os.path.isdir(dir_):
os.makedirs(dir_)
assert os.path.isdir(dir_)
return open(os.path.join(self.directory, name), mode)
def create_config(self):
self.directory = tempfile.mkdtemp()
2015-12-19 00:11:57 +00:00
class BaseClientController(_BaseController):
2015-12-19 16:52:38 +00:00
def run(self, hostname, port, auth):
2015-12-19 00:11:57 +00:00
raise NotImplementedError()
class BaseServerController(_BaseController):
2015-12-20 12:12:54 +00:00
def run(self, hostname, port, start_wait):
raise NotImplementedError()
def registerUser(self, case, username):
raise NotImplementedByController('registration')