Plugins
Command plugins
Any commands available in system PATH
then those commands can be executed using Binnacle. While working with multi node, make sure to install/deploy the additional commands to respective node.
For example, below python script(json-compare.py
) compares the two json files and validates only a few fields.
#!/usr/bin/env python
# file: json-compare
import json
import sys
file1 = json.load(open(sys.argv[1]))
file2 = json.load(open(sys.argv[2]))
if file1["name"] != file2["name"]:
print("name field doesn't match", file=sys.stderr)
print("Expected: %s Actual: %s" % (file1["name"], file2["name"]))
sys.exit(1)
if file1["value"] != file2["value"]:
print("value field doesn't match", file=sys.stderr)
print("Expected: %s Actual: %s" % (file1["value"], file2["value"]))
sys.exit(1)
$ chmod +x json-compare
$ sudo cp ./json-compare /usr/local/bin/
Now use that command in your test file
TEST "json-compare sample.json /uploads/input.json"
Writing command plugin is not limited to Python, it can be using any Programming language of your choice. Make sure that file is executable and available in PATH
.
Bonus: Below Python script helps to write multiple functions inside same Python file, instead of creating one file per plugin.
def test1():
# TODO: implement this
pass
def test2():
# TODO: implement this
pass
if __name__ == "__main__":
# TODO: Validate number of arguments
func_name = sys.argv[1]
func_args = sys.argv[2:]
func = globals().get(func_name, None)
if func is not None:
func(*func_args)
else:
# TODO: Error message and exit non zero
pass
Use the above script as,
TEST "python3 myscript.py test1 args.."
TEST "python3 myscript.py test2 args.."
Keywords Plugins
As of now, only Ruby programming is supported for adding new keyword to Binnacle. Documentation to add new keywords is coming soon.
Remote plugins
Coming soon