Rev 56: Server tests passing with a first rough implementation. in file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Mon Feb 23 11:27:14 GMT 2009
At file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/
------------------------------------------------------------
revno: 56
revision-id: v.ladeuil+lp at free.fr-20090223112714-skdetd3uwoofskri
parent: v.ladeuil+lp at free.fr-20090223102417-v7kc6gbd9fab2tu4
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: local_test_server
timestamp: Mon 2009-02-23 12:27:14 +0100
message:
Server tests passing with a first rough implementation.
* tests/test_utils.py:
(full_scenarios): We have a server now.
* server.py:
(Muddleftpd): New class.
(_next_available_port, _max_available_port): Silly port check in
muddleftpd forcing us to use ports less than 32768.
* configs/muddleftpd.conf:
(pidfile): Deleted, this is not supported anymore (and not
mentioned in the doc either but instead in
muddleftpd-1.3.13.1/NEWS ...).
* config.py:
(Muddleftpd.__init__): Needs a /var/lock directory.
-------------- next part --------------
=== modified file 'config.py'
--- a/config.py 2009-02-23 10:24:17 +0000
+++ b/config.py 2009-02-23 11:27:14 +0000
@@ -196,6 +196,10 @@
class Muddleftpd(Config):
- def __init__(self, _base_dir=None):
- super(Muddleftpd, self).__init__('muddleftpd', _base_dir=_base_dir)
+ _required_dirs = dict(var_lock_dir='var/lock')
+ def __init__(self, name=None, required_dirs=None, _base_dir=None):
+ if name is None:
+ name = 'muddleftpd'
+ super(Muddleftpd, self).__init__(
+ name, required_dirs=self._required_dirs, _base_dir=_base_dir)
=== modified file 'configs/muddleftpd.conf'
--- a/configs/muddleftpd.conf 2009-02-23 10:24:17 +0000
+++ b/configs/muddleftpd.conf 2009-02-23 11:27:14 +0000
@@ -9,7 +9,6 @@
maxusers 100
timeout 300
logfile %(log_file)s
-pidfile %(pid_file)s
scratchfile %(var_lock_dir)s/muddleftpd.scratch
# log everything except debugging logs
=== modified file 'server.py'
--- a/server.py 2009-02-20 15:57:48 +0000
+++ b/server.py 2009-02-23 11:27:14 +0000
@@ -695,8 +695,49 @@
raise LTSCantStopError(self)
-_next_available_port = 49000
-_max_available_port = 49151
+class Muddleftpd(Server):
+
+ _server_command_name = 'muddleftpd'
+
+ def __init__(self, port, _conf=None):
+ if _conf is None:
+ _conf = config.Muddleftpd()
+ # FIXME: it's weird to reverse parameter order
+ super(Muddleftpd, self).__init__(_conf, port)
+ self.output_config_path = self.config.abspath('etc/muddleftpd.conf')
+
+ def _start(self):
+ # This is the best we can do: just spawn the process hoping nothing
+ # goes wrong during server launch...
+
+ # NOTE: muddleftpd uses a strange policy, the pidfile is not supported
+ # (it was in the past). Instead a scratchfile is used to synchronize
+ # communications between the various processes involved (muddleftpd,
+ # ftpwho). This sounds too complicated to respect, so we just spawn the
+ # server and handle the pidfile ourselve.
+ proc = subprocess.Popen([self._server_command_name,
+ '-c', self.output_config_path])
+ if proc.returncode is not None:
+ raise LTSCantStartError(self, 'return code: %s' % proc.returncode)
+ f = open(self.get_config_value('pid_file'), 'w')
+ try:
+ f.write('%s' % proc.pid)
+ finally:
+ f.close()
+
+ def _stop(self):
+ if not self._wait_for_server_process_death():
+ raise LTSCantStopError(self)
+ # We need to delete the pid file ourselves
+ osutils.delete_any(self.get_config_value('pid_file'))
+
+
+# For self tests we use a range of unassigned port numbers as described
+# in http://www.iana.org/assignments/port-numbers
+# We use the 29168-30000 range
+
+_next_available_port = 29168
+_max_available_port = 30000
def _get_available_port():
"""Returns an hopefully available port for test purposes.
@@ -723,18 +764,20 @@
# The test servers provided use a range of unassigned port numbers as described
# in http://www.iana.org/assignments/port-numbers
+# We use the 25010-25792 range
_servers = dict()
-_servers['apache2'] = Apache2(37000)
-_servers['cherokee'] = Cherokee(37001)
-_servers['lighttpd'] = Lighttpd(37002)
-_servers['apache2-dav'] = Apache2DAV(37003)
-_servers['lighttpd-dav'] = LighttpdDAV(37004)
-_servers['apache2-svn'] = Apache2SVN(37005)
-_servers['apache2-krb5'] = Apache2Kerberos(37006)
-_servers['vsftpd'] = Vsftpd(37006)
-_servers['proftpd'] = Proftpd(37007)
-_servers['apache2-https'] = Apache2HTTPS(37008)
+_servers['apache2'] = Apache2(25010)
+_servers['cherokee'] = Cherokee(25011)
+_servers['lighttpd'] = Lighttpd(25012)
+_servers['apache2-dav'] = Apache2DAV(25013)
+_servers['lighttpd-dav'] = LighttpdDAV(25014)
+_servers['apache2-svn'] = Apache2SVN(25015)
+_servers['apache2-krb5'] = Apache2Kerberos(25016)
+_servers['vsftpd'] = Vsftpd(25017)
+_servers['proftpd'] = Proftpd(25018)
+_servers['apache2-https'] = Apache2HTTPS(25019)
+_servers['muddleftpd'] = Muddleftpd(25020)
def get_server(name):
=== modified file 'tests/test_utils.py'
--- a/tests/test_utils.py 2009-02-23 10:24:17 +0000
+++ b/tests/test_utils.py 2009-02-23 11:27:14 +0000
@@ -170,7 +170,7 @@
('muddleftpd', dict(
_server_name='muddleftpd',
_config_class=config.Muddleftpd,
-# _server_class=server.Muddleftpd,
+ _server_class=server.Muddleftpd,
# _server_feature_class=test_server.MuddleftpdFeature,
# _test_server_class=test_server.Muddleftpd,
)),
More information about the bazaar-commits
mailing list