Purpose of this Document
Networking Features
- The Node starts up in bootstrap node when configured to do so
- The node connects to peers when configured in networking mode
- The node starts up in standalone mode
Rholang CLI (Interpreter)
- Interpreter can be invoked via gRPC API
- Rholang Code can be evaluated in the Node regardless of the mode the node boots up in
- standalone mode
- Bootstrap mode
- Connected mode
- Rholang CLI can be invoked in 2 modes
- REPL
- EVAL - accepts a file
STDOUT channel works:
- @"stdout"!("foo") returns 'foo' to STDOUT Channel.
gRPC API (Node API)
- Server accepts requests and returns responses
- List of peers is accurate & matches what is presented on the server console.
- Response from peers reflects peers currently connected and changes as the peer list changes
- Deploy-demo call works (--deploy-demo)
Metrics
- Check Promethus server
- Check that all metrics in the release appear
Installation, Starting and Ending the program
- Installation completes without issues
- Ctrl-C terminates the program without throwing an exception
- Program starts without exceptions (providing that the directories needed exist on the system)
- In the event that the bootstrap node cannot be found, system provides a message an ends normally.
git clone https://github.com/rchain/rchain.git cd rchain git checkout dev sbt clean bnfc:generate node/debian:packageBin sudo apt install ./node/target/ sudo apt install ./node/target/rnode_0.3.1_all.deb sudo systemctl start rnode.service # in one terminal sudo journalctl -f -u rnode.service # in another terminal (for repl testing) rnode --repl # after that (for deploy testing) rnode --deploy-demo
git clone https://github.com/rchain/rchain.git cd rchain git checkout dev sbt clean bnfc:generate node/rpm:packageBin sudo dnf install node/target/rpm/RPMS/noarch/rnode-0.3.1-1.noarch.rpm sudo systemctl start rnode.service # in one terminal sudo journalctl -f -u rnode.service # in another terminal (for repl testing) rnode --repl # after that (for deploy testing) rnode --deploy-demo
Clean-up scripts (need a bit of improvement, but should get you started):
https://gist.github.com/henrytill/ac72d8616e52d836efc3008bbd9f67dd
Run this at the REPL as many times as humanly possible:
@"stdout"!("foo")
Run this to evaluate rholange example files
for i in $(ls /usr/share/rnode/examples/*.rho); do echo $i; rnode --eval $i; done
Testing Matrix
Who? | What Test the tasks described above in your assigned environment below. | |||
---|---|---|---|---|
Jeremy | Ubuntu 16.04 LTS Results (DEB):
Comments: | Fedora 27 VM Results (RPM):
Comments: | Debian Stable VM Results (DEB):
Comments: | I can't see my cursor/text after I exit using CTRL-C from REPL 1GB Ubuntu VM 2GB Debian VM 4GB Fedora VM Ubuntu LTS baremetal 32GB |
Henry | Debian Stable VM (1 GB RAM, 1 CPU): (DEB, Binary Tarball) Results (Binary Tarball):
Results (DEB):
| Fedora Laptop (8 GB RAM, 4 CPU) (RPM, Binary Tarball) Results (Binary Tarball):
Results (RPM):
| Comments: Still seeing NPE when I exit REPL with CTRL-C https://rchain.atlassian.net/browse/CORE-485 Eval works "as advertised" but it is really counterintuitive to have to provide the absolute path to a file on the server, rather than client. Jeremy and I evaluated every file in the top-level of | |
Medha | Test docker 1 CPU, 1 GB RAM | Results (Docker)
| Comments: If the path is wrong in eval mode, exception is not returned to user. Exception appears on server side. Need to file a ticket. Casper issue, at some point the same block is passed around (observed at block 8) Starting standalone mode after having been in connected mode results in: 17:35:55.795 [main] INFO logger - Starting stand-alone node. 17:36:04.044 [repl-io-26] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 0f365f1016a54747b384b386b8e85352}) 17:36:04.061 [repl-io-24] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 0f365f1016a54747b384b386b8e85352}) 17:36:10.500 [repl-io-26] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 08ecdc398b4040ebb51a87e441097ac5}) 17:36:10.506 [repl-io-24] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 08ecdc398b4040ebb51a87e441097ac5}) 17:36:10.512 [repl-io-26] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 0f365f1016a54747b384b386b8e85352}) 17:36:10.517 [repl-io-24] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 08ecdc398b4040ebb51a87e441097ac5}) 17:36:10.520 [repl-io-26] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 0f365f1016a54747b384b386b8e85352}) 17:36:44.116 [repl-io-24] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 0f365f1016a54747b384b386b8e85352}) 17:36:44.127 [repl-io-27] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 0f365f1016a54747b384b386b8e85352}) 17:36:50.709 [repl-io-24] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 08ecdc398b4040ebb51a87e441097ac5}) 17:36:50.715 [repl-io-27] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 08ecdc398b4040ebb51a87e441097ac5}) 17:36:50.725 [repl-io-24] ERROR logger - error while handling frame message: PeerNodeNotFound(#{PeerNode 08ecdc398b4040ebb51a87e441097ac5}) | |
Mateusz | Ubuntu 16.04 (8 CPU 32GB RAM)
Comments: Still seeing NPE when I exit REPL with CTRL-C | |||
Michael Birch | test locally with dev | assembly jar docker Result: Both work fine (modulo NPE on exit of repl via ^D) | ||
Sebastian | test locally with dev | test docker with dev |