Skip to content

Commit

Permalink
Script to start IPFS daemon with Docker
Browse files Browse the repository at this point in the history
  • Loading branch information
c0llab0rat0r committed May 18, 2021
1 parent cab4cd0 commit 08e6ba2
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 41 deletions.
16 changes: 5 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,8 @@ You can submit bug reports using the

### Setting up a local development environment

1. [Install and configure a local IPFS server](tools/ipfs/README.md):
2. Follow the instructions in the (Python) tox documentation to install the `tox` Python environment runner:
https://tox.readthedocs.io/en/latest/install.html
1. [Install tox](https://tox.readthedocs.io/en/latest/install.html)
2. [Install a local IPFS server](tools/ipfs/README.md):
3. Clone the GIT repository if you haven't already:
`git clone https://github.com/ipfs-shipyard/py-ipfs-http-client.git`

Expand All @@ -236,19 +235,14 @@ make sure that your code passes both the

As well as the tests:

1. Start IPFS server (do this once in a separate terminal):

$ ./tools/ipfs/run.sh

2. Execute unit and functional tests:

$ tox -e py3 -e py3-httpx

If you are unsure, don't hesitate to just submit your code, and a human will
take a look. 🙂

If you can, Please make sure to include new unit tests for new features or
changes in behavior. We aim to bring coverage to 100% at some point.
Please make sure to include new unit tests for new features or
changes in behavior.


#### Installing the pre-commit Hook

Expand Down
7 changes: 7 additions & 0 deletions tools/ipfs/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM ipfs/go-ipfs:v0.8.0

RUN sed -i 's/exec ipfs "$@"//' /usr/local/bin/start_ipfs
ADD entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
CMD ["ipfs", "daemon", "--migrate=true", "--enable-namesys-pubsub"]
42 changes: 29 additions & 13 deletions tools/ipfs/README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,43 @@

# Local IPFS Server
# Running Tests

`py-ipfs-httpclient` requires a live local server to run its
functional tests.
Tests are primarily run from the command line using a locally installed IPFS server.

## Installation
Alternatively, you can launch the IPFS daemon with Docker and run tests from your IDE.

To install it, follow the [official instructions](https://docs.ipfs.io/install/command-line/),
then finish with some [local configuration](configure.sh):

$ ./configure.sh
## Local IPFS Server Installation

The above script is run once after installing.
To install it, follow the [official instructions](https://docs.ipfs.io/install/command-line/).

## Running Tests
Remaining configuration is applied by [run_tests.py](../../test/run-tests.py) on each run.


## Running Tests Using Local Installation From Command Line

* `tox -e py3`
* `tox -e py3-httpx`


## Running Tests Using Docker from IDE (e.g. PyCharm)

1. Start [daemon.sh](daemon.sh)
2. Run `pytest` tests from your IDE as your normally would

You can keep the Docker container running across multiple
executions of the functional test suite.


## Running Tests Without Live Server

You can run unit tests without a live server; `pytest` will skip
over the functional tests when our fixtures detect the server
isn't running.

In a separate terminal, start IPFS with:

$ ./run.sh
## pytest-docker Plugin

While `pytest-docker` supports running functional tests against a
Docker container using Docker Compose, it is not supported on
Windows or Mac with Travis and IPFS.

Stop it with Ctrl+C. You can keep it running across multiple
executions of the functional test suite.
12 changes: 0 additions & 12 deletions tools/ipfs/configure.sh

This file was deleted.

9 changes: 9 additions & 0 deletions tools/ipfs/daemon.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

set -e

tag=py-ipfs-http-client-daemon:latest

docker build -t $tag .
docker run --rm -p 4001:4001 -p 5001:5001 -p 8080:8080 $tag

15 changes: 15 additions & 0 deletions tools/ipfs/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/sh

set -e

# Only does configuration; doesn't start the daemon
/usr/local/bin/start_ipfs

echo "Enabling experimental features"

ipfs config --json Experimental.FilestoreEnabled true

echo "Enabled experimental features"

# Start the daemon (unless other args provided)
exec "$@"
5 changes: 0 additions & 5 deletions tools/ipfs/run.sh

This file was deleted.

0 comments on commit 08e6ba2

Please sign in to comment.