m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md104
1 files changed, 99 insertions, 5 deletions
diff --git a/README.md b/README.md
index 3a5ad5b..877b150 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
## Running
-The agent, fetcher, and interpreter take an optional `-Dhostname=<agent's external hostname`
-argument, which defaults to `localhost`.
+The agent, fetcher, and interpreter take optional `-Dflagname=flagvalue`
+argument. Otherwise those values are set to default ones, as described below.
### Query Signer
# start rmiregistry
@@ -13,7 +13,16 @@ argument, which defaults to `localhost`.
# run Query Signer
./gradlew runQuerySigner
-### API Agent
+Relies on generation of public and private keys by scripts/generate_keys.sh.
+
+Flags:
+
+* java.rmi.server.hostname - RMI registry hostname, default: localhost
+* querySignerHostname - query signer public RMI API hostname, default: localhost
+* publicKeyFilename - path to public key file, relative to root of project, default: build/tmp/query_signer.pub
+* privateKeyFilename - path to private key file, relative to root of project, default: build/tmp/query_signer
+
+### Agent
# start rmiregistry
./scripts/registry
@@ -22,13 +31,35 @@ argument, which defaults to `localhost`.
Relies on keys generated during query signer setup.
+Flags:
+
+* java.rmi.server.hostname - RMI registry hostname, default: localhost
+* freshnessPeriod - data refresh period, default: 60 * 1000
+* queryPeriod - query rerun period, default: 5 * 1000
+* gossipPeriod - gossiping period, default: 5 * 1000
+* hostname - public UDP server hostname, default: hostname
+* port - public UDP port, default: 5999
+* timeout - UDP server timeout, default: 5 * 1000
+* bufsize - UDP message buffer size, default: 512
+* zoneSelectionStrategy - zone selection strategy for gossiping, default: RandomUniform,
+ available options: RoundRobinExp, RoundRobinUniform, RandomExp, RandomUniform
+* zonePath - zone pathname of agent, default: /uw/violet07
+* publicKeyFilename - path to public key file, relative to root of project,
+ default: build/tmp/query_signer.pub
+
### Client
./gradlew runClient
-Relies on a running agent.
+Exposes a web application on `localhost:8082`.
-Exposes a web application on `localhost:8080`.
+Relies on a running agent with fetcher.
+
+Flags:
+
+* hostname - agent RMI API hostname, default: localhost
+* zonePath - zone pathname of agent, default: /uw/violet07
+* querySignerHostname - query signer RMI API hostname, default: localhost
### Fetcher
@@ -36,6 +67,15 @@ Exposes a web application on `localhost:8080`.
Sends system information to an agent.
+Relies on a running agent.
+
+Flags:
+
+* hostname - agent RMI API hostname, default: localhost
+* zonePath - zone pathname of agent, default: /uw/violet07
+* ownAddr - public IP address or domain name of agent/fetcher machine
+* fallbackContacts - initialize fallback contacts, default: {}, example: \{\"/uw/violet07\":[192,168,0,11]}
+
### Interpreter
./gradlew runInterpreter
@@ -53,3 +93,57 @@ a hard-coded test hierarchy.
./gradlew test --tests InterpreterTests.fileTest13
Generates an HTML test report at `build/reports/tests/test/index.html`.
+
+## Demo setup
+
+The `scripts/` directory contains a bundle of scripts that can be helpful when
+setting up a simple hierarchy.
+
+### Envrionment Variables
+
+The scripts assume that there are 5 machines with hostnames `rainbow01`, ...,
+`rainbow05`. Each machine should have the following environment variables
+available:
+
+* `NODE_NUMBER`: ranging from `01` to `05`
+* `ZONE`: a level-1 zone name (e.g. `uw`)
+
+For example, if `rainbow01` corresponds to node `/uw/rainbow01` in the
+hierarchy, it should have `NODE_NUMBER=01` and `ZONE=uw`.
+
+### RMI registry
+
+Each node should have an RMI registry running, started with
+
+ ./scripts/registry
+
+### Query signer
+
+The scripts assume that the query signer runs on `rainbow01`. Before first
+starting it, run
+
+ ./scripts/generate_keys.sh
+
+to generate keys.
+
+If `rainbow01` has ssh access to the other machines, the public key can then be
+distributed with
+
+ ./scripts/copyKey.sh
+
+Finally, start the query signer on `rainbow01` with
+
+ ./scripts/runQuerySigner.sh
+
+### Agent and fetcher
+
+On each machine, the agent and fetcher components should be started with
+
+ ./scripts/runAgent.sh
+ ./scripts/runFetcher.sh
+
+### Client (optional)
+
+A client connected to the local agent can be optionally started with
+
+ ./scripts/runClient.sh