Technical Requirements
This section lists high-level technical requirements.
1. Mock data generation.
-
1.1. Datatypes: Support for primitive datatypes such as integer, double, date, and string.
-
1.2. Collections: support for populating collections with real or mock values. There should be a simple way to
configure the range of values in a mock collection. It should be easy to access the values from a collection many
times.
-
1.3. Iterators: values can be accessed from a collection with a simple and well-known interface
(e.g. java.util.Iterator). It should be possible to access the values from a collection repeatedly, without
creating a new iterator each time.
-
1.3. Containers: A variety of containers should be available for grouping collections. The container should define
the group's behavior. For example, a simple container simply generates a value from each collection in turn. A
sequence container generates all values from the first collection before moving on to the second collection, and
so on. A parallel container generates values from each collection concurrently.
-
1.4. Functions: support for applying various operators to the values generated from one or more iterators. For
example, an addition operator might add the values generated by three iterators. A function should itself look
like an iterator, by returning the result of its operator.
2. Configuration. It should be easy to configure datamixer elements for access in a given language. For example,
elements accessed in Java are configured in XML. A configuration script allows element attributes to be defined, and
elements to be placed in relationship with one another. For example, a script could allow an iterator to be created
from a particular collection. The iterator could be named, and accessed at runtime by a Java program.
-
2.1. Variables. It should be possible to assign an id to a value defined in a configuration, so that the value
can be accessed later at runtime by id.
3. Deployment
-
3.1. Language support. It should be possible to write a datamixer application in a variety of languages, for
example Java, Perl, or Javascript.
-
3.2. Context. It should be easy to run a datamixer application standalone (for example as a Perl or Java
application) or embedded in another application (for example, a JSP page).
4. Performance. It should be possible to generate large datasets in a reasonably short time.