needlstk: A system for expressing network performance queries
The name is a portmanteau of needle and stack to reflect the goal of finding needles in a haystack. It is pronounced "needle stack"
QuickStart
Requires java 8: sudo apt-add-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer
Requires maven from the apache maven website: https://maven.apache.org/download.cgi#Installation
If compiling queries to the domino backend, install the domino compiler by following instructions from: https://github.com/packet-transactions/domino-compiler
-
mvn install Packages sources into one assembly JAR for the compiler and the interpreter
-
./smoke_test.sh Runs smoke tests. These tests don't mean too much if they pass, but if you get an exception for any one, it probably means there's a bug.
-
Generate parse tree using mvn exec:java -Dexec.mainClass="org.antlr.v4.gui.TestRig" -Dexec.args="edu.mit.needlstk.PerfQuery prog -gui example_queries/flowlet_hist.sql" (should open up a window showing the parse tree)
-
Run compiler using cat example_queries/flowlet_hist.sql | java -ea -jar target/Compiler-jar-with-dependencies.jar
-
Run interpreter using cat example_queries/flowlet_hist.sql | java -ea -jar target/Interpreter-jar-with-dependencies.jar 2> /tmp/output.py
-
Run interpreted code using python3 /tmp/output.py