PR: ethereum/go-ethereum#14332
- Development environment is a Linux bash shell which runs in a Docker container
- Includes common tools and Go 1.8.1
- Local directory is mounted in the container at
/go/src/github.com/ethereum/go-ethereumso can edit files locally and runmakein the container to build binaries intoswarm/dev/bin - Has scripts for booting multi-node Swarm clusters (includes bootnode + geth)
- Swarm nodes are just daemon processes in the bash shell with distinct IPs using network namespaces
- Should
swarm up file.txtmake the resulting file available atbzz:/<hash>,bzz:/<hash>/,bzz:/<hash>/file.txtor all of the above? (see this issue) - Should we prevent files (i.e. entries which are not
application/bzz-manifest+json) from having a trailing slash (which causes issues when mounting the manifest as a filesystem)? (see this issue) - Should we support making files available via HTTP at both
pathandpath/with some configurable behaviour (redirect or serve content at both paths)? An example where trailing slash is wanted is HTML directory indexes like nginx - Should files be available using arbitrary suffix (e.g.
bzz:/<hash>/file.txt-somerandomstring)?
- We need end-to-end tests which use the CLI + multi-node Swarm clusters
- Example test: start 3 Swarm nodes, run
swarm up file.txt, check file can be downloaded from all nodes - Also need to cover all CLI / API features (e.g. does
swarm up file.txtcreatebzz:/<hash>/file.txt)