This repository contains projects producing various independent
extensions to the BeepBeep 3
event stream query engine. Each project is also independent from the others,
and can be built separately. All projects require beepbeep-3-xxx.jar
in
their classpath.
At the moment, the folder contains the following palettes:
Apache
: for parsing Apache log filesComplex
: for creating complex events out of lower-level eventsConcurrency
: for using multi-threading in processorsDiagnostics
: to help debugging processor chainsDsl
: for creating Domain Specific Languages with the Bullwinkle parserFol
: for manipulation of first-order logic statementsFsm
: for manipulation of extended finite-state machinesGraphviz
: manipulate and draw directed graphs using GraphvizHibernation
: save/restore processor states to persistent storageHttp
: send and receive events over a networkJdbc
: to interface with relational databasesJson
: to read and write events in the JSON formatLtl
: to express properties in Linear Temporal LogicMtnp
: front-end to the MTNP library to manipulate tables and plotsProvenance
: traceability in processor chainsSerialization
: serialize/deserialize events with the Azrael librarySets
: to manipulate streams of setsSignal
: basic signal processing functions (peak detection, etc.)Tuples
: for manipulating tuples and using BeepBeep as a JDBC driverWebSocket
: to read/write events from/to a web socketWidgets
: to manipulate AWT and Swing widgets as processorsXml
: to read and write events in the XML format
Depending on the projects, additional dependencies may need to be
downloaded and installed. Please refer to the Readme.md
file of each
particular project (if any) for more information on compiling and
building these extensions.
You can download the latest JAR files and place them in your classpath. Otherwise, you can declare the palettes as a dependency in your project. This will download a single JAR file that bundles all the palettes together.
<dependency>
<groupId>io.github.liflab</groupId>
<artifactId>beepbeep-3-palettes</artifactId>
<version>0.8</version>
</dependency>
<dependency org="io.github.liflab" name="beepbeep-3-palettes" rev="0.8"/>
compileOnly group: 'io.github.liflab', name: 'beepbeep-3-palettes', version: '0.8'
@Grab('io.github.liflab:beepbeep-3-palettes:0.8')
- Run
ant
to build all palettes in succession. Since some palettes have dependencies on other palettes, the script must be run twice. - If everything goes well, all the resulting jars will be created in the
jars
repository. Move them around and enjoy. - You can also run the test scripts for each palette by running
ant test
script.
First make sure you have the following installed:
- The Java Development Kit (JDK) to compile. BeepBeep was developed and tested on version 8 of the JDK, but it is probably safe to use any later version.
- Ant to automate the compilation and build process
Each palette depends on BeepBeep's core library, which must be built or downloaded beforehand. Please refer to the build instructions for BeepBeep's main engine. The resulting JAR file, must be placed at the root of this repository prior to building any of the palettes.
The repository is separated into multiple projects. Each of these projects has the same Ant build script that allows you to compile them (see below).
If the project you want to compile has dependencies, you can automatically download any libraries missing from your system by typing:
ant download-deps
This will put the missing JAR files in the deps
folder in the project's
root. These libraries should then be put somewhere in the classpath, such as
in Java's extension folder (don't leave them there, it won't work).
Compile the sources by simply typing:
ant
This will produce a file called xxx.jar
(depending on the palette you
are compiling) in the jars
folder.
In addition, the script generates in the doc
folder the Javadoc
documentation for using BeepBeep. To show documentation in Eclipse,
right-click on the jar, click "Properties", then fill the Javadoc location.
Some of these palettes can can test themselves by running:
ant test
Unit tests are run with jUnit; a detailed report of
these tests in HTML format is availble in the folder tests
, which
is automatically created. Code coverage is also computed with
JaCoCo; a detailed report is available
in the folder coverage
.
Once all the palettes have been built, a (fat) JAR file packaging all the palettes can be creating by typing:
ant fat-jar
in the root folder of this repository. The resulting file will be called
beepbeep-3-palettes-x.x.zip
, where x.x
is the current version.
Once all the palettes have been built, a (fat) zip file containing all the generated JARs can be creating by typing:
ant zip
in the root folder of this repository. The resulting file will be called
beepbeep-3-palettes-vYYYYMMDD.zip
, where YYYYMMDD
is the current date.
Some precompiled bundles are available in GitHub's Releases page, but they
may not contain the latest version of each palette. Use at your own risk!
The BeepBeep project is under heavy development. The repository may be restructured, the API may change, and so on. This is R&D!
BeepBeep 3 was written by Sylvain Hallé, full professor at Université du Québec à Chicoutimi, Canada. Part of this work has been funded by the Canada Research Chair in Software Specification, Testing and Verification and the Natural Sciences and Engineering Research Council of Canada.