The Knowbot Program test cases exercises many fundamental
aspects of the Knowbot Operating System and its environment.
Most are intended to be run by submitting them as KPs to a
running KOS. The great majority run without operator
intervention; exceptions will be noted.
- Does nothing but allow the __main__() entry to point
to fall through.
- Accomplishes nothing, but consumes some CPU
resources in the process.
- Locates all the KOSs and sends a clone to as many as it
can, excepting the current host. The clones do not
- Exercise import of module transported with the KP from MIME
- Migrate to all the active kernels in the namespace -
uses suitcase, as well. pickle.mime
is a transportable-state version.
- This KP migrates to the current KOS repeatedly. This tests
the support for the suitcase and state migration.
- Migrate, retaining a working SimpleIOAPI connector.
- Migrate randomly among kernels, visiting each at most once.
A limit on the number of hops is imposed as well.
- Read a line from the standard input stream.
- Exercise standard I/O streams. This is used to test the
various remote-stream implementations.
- Sleep for a specified time. The time to sleep is specified
using a file in the KP's suitcase.
- Exercise conditional variables.
- Test receipt of ``command line'' arguments passed to the KP
using metadata. The arguments are received via
sys.argv, just as they would be when running the
program from the command line.
- Produce list of KP suitcase contents; this tests the
- Exercise the suitcase a bit; test creating, reading,
and writing files, and create a directory within the suitcase
- Wander around and exercise the suitcase at each KOS. This
includes more exercising of the path manipulation and
interpretation by the SuitcaseFilesystem
- Produce a dictionary of the KP suitcase contents.
- Produce list of services available at the current KOS.
- Produce list of entries in namespace, similar to
- Exit in various operational phases to test proper handling
of possible exit points.
- Errors in MIME packaging; these test the ????
- KPs which generate errors which should be detected by the
Supervisor component of the KOS.
- A KP which should be killed from another process will
running. This tests the ability of the KOS kernel to
determine the loss of the process and handle the error.
- KPs which cause the Python interpreter running the
Supervisor to core dump in various operational phases. This
tests the ability of the KOS kernel to correctly detect this
- Cause a migration failure due to an unpicklable value
stored on the KP object.
- Three generations of clone bifurcation, plus the
original makes seven KPs. This started as a performance
- Create lots of KPs and have them run around. This can
crash the system.
- Suitcase filesystem tests. This is not a KP; run
a command line.
- Exercise conflicting connector registration and bookkeeping.
- Exercise submit mechanism's "limit" capability.
- Exercise the HTTP plugin by loading several URLs specified
on the KP's ``command line.'' Each retrieved document and the
time it took to retrieve is printed to the KP's standard
- Exercise interface-finder plugin 'ifinder', migrating
among KOSs and collecting information about the interfaces
available at each.
- Exercise user-interface interaction using a migrated
connector. This tests the ability of the KOE to rebuild a
connection between a KP and a service (which may be another
- Exercise implicit-gzipping suitcase interface
- Basic service provider and consumer
- Slightly more complex service provider and consumer