<!-- -*- coding: utf-8 -*- -->
Overview
Description
The HaskellExt backend is a Python XML-RPC service, which provides -
in tandem with ECSpooler - automatic testing of Haskell programs.
Therefore the backend compares the output of a program with the
output of a model solution for a set of test data.
The HaskellExt backend is derived from the Haskell backend and
should be used if a test data call doesn't start with the function
which should be tested (see the example below).
Prerequisites
* A UNIX or UNIX-like operating system, e.g., NetBSD, Solaris, Mac
OS X, or Linux.
The HaskellExt backend does run on Windows (with some
restrictions), but this is neither supported nor recommended.
* "Python":http://python.org/
* "Hugs":http://www.haskell.org/hugs/
* "ECSpooler":http://wdok.cs.uni-magdeburg.de/software/ecspooler
* ECSpooler is primarily intended to be used via the
"ECAutoAssessmentBox":http://plone.org/products/ecautoassessmentbox
Plone product. So you will normally have a Plone installation
with ECAutoAssessmentBox.
* Haskell backend since HaskellExt is derived from it.
Installation
* Unzip this archive under the 'backends' directory of your
ECSpooler installation (for example '/opt/ESpooler/backends/').
* Even if the Haskell backend is already installed, please
check the following twice
* Adjust values for INTERPRTER and OPTIONS in the script
'backends/haskell/runhugs.sh' to your system environemnt.
* Make sure that the script 'backends/haskell/runhugs.sh' is
executable.
Security
Please read the security section in the Haskell backend's README
file and be be aware of the risks if you are *not* able to deal with
the configuration issues.
Quick Start
After installation, first start ECSpooler (see the ECSpooler
documentation for details). Then you should be able to start the
HaskellExt backend using the following command (you may have to
specify the path)::
backendctl -u root -p bazquux HaskellExt start
If you run this command as root, the process will be started as user
"nobody".
Once the backend is running, check the status of the backend using::
spoolerctl -u root -p bazquux status
or
backendctl -u root -p bazquux HaskellExt status
and get a response similar to::
{'queue': 0, 'backends': ['haskellext'], 'pid': 2642, 'results': 0}
For administrative tasks such as starting/stopping backends
authentication is required. Therefore ECSpooler ships with a
password file ('etc/passwd') containing a user "root" with default
password "bazquux". See the ECSpooler documentation if you would
like to add/change users and passwords.
Testing a Haskell program with the HaskellExt backend requires a
model solution and a set of test data, e.g.,
TODO:
* Model solution::
infiniteOddNumbers :: Int -> [Int]
infiniteOddNumbers startFrom = [ x | x <- [startFrom ..], odd x]
* Test data (one test call per line)::
take 10 (infiniteOddNumbers 0)
take 10 (infiniteOddNumbers 3)
take 10 (infiniteOddNumbers (-5))
The HaskellExt backend currently supports three compare modes:
* simple - the results of the student and model solutions for same
test data must be equal
* permutation - accept student solution if the returned list is a
permutation of the result from the model solution
* tolerance - result of student and model solution must be equal to
15 positions after decimal point
Support
For questions and discussions about backends, please join the
"eduComponents mailing
list":https://listserv.uni-magdeburg.de/mailman/listinfo/educomponents.
Credits
The HaskellExt backend was written by "Mario
Amelung":http://wdok.cs.uni-magdeburg.de/Members/amelung.
License
The HaskellExt backend is licensed under the
"GPL":http://opensource.org/licenses/gpl-license.
Copyright © 2007-2011 Otto-von-Guericke-Universität Magdeburg
The HaskellExt backend is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The HaskellExt backend is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with ECSpooler; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA