You could use the LineSender program to provide sample input from a file to Odysseus.
The source code can be found here: https://git.swl.informatik.uni-oldenburg.de/projects/ODYDATGEN/repos/linesender/browse
A runnable jar can be downloaded here: https://odysseus.informatik.uni-oldenburg.de/download/linesender/linesender.jar
Usage: LineSender [-hrsV] [-d=<delay>] [-p=<port>] <path> Sends a csv file to a tcp socket connection <path> The file whose checksum to calculate. -d, --delay=<delay> Delay ms between each line sent. -h, --help Show this help message and exit. -p, --port=<port> The server port. -r, --repeat Repeat the file when ended. Default is false. -s, --skip Skip the first line in csv, e.g. because of table header. Default is false. -V, --version Print version information and exit.
This program reads a csv CSV file and sends each csv CSV file via tcp TCP to a connected tcp TCP client. For each new connected client, the reading starts from the beginning of the file. If you set the repeat flag, the content of the csv CSV file is sent again and again to simulate a never ending input stream. You could limit the datarate data rate with the delay flag.
If you have the following csv CSV file:
a;1;1.0 b;2;2.0 c;3;3.0 d;4;4.0 e;5;5.0
and you have started the sender on port 9876. You could use the following Odysseus query to access the content:
Here, we first check, if the new starttimestamp start timestamp is lower than the old one. This means, the input file has started from the beginning and nextRound is set to true.
Then the TIMESTAMP operator creates timestamps from the B attribute values and increases the concounter each time, nextRound is true. Here we use 10 as a maximum value.