Browse Source

improved instructions, update pytest reqs

master
Adam Gibson 9 years ago
parent
commit
09443792a7
No known key found for this signature in database
GPG Key ID: B3AE09F1E9A3197A
  1. 65
      INSTALL.md
  2. 90
      README.md
  3. 23
      TESTING.md
  4. 4
      requirements-dev.txt

65
INSTALL.md

@ -0,0 +1,65 @@
### Installation on Linux
To install everything (client and server), install these packages:
sudo apt-get install python-dev python-pip git build-essential
automake pkg-config libtool libffi-dev libssl-dev
(+ libsodium-dev if you can find it, else build after)
(to build libsodium after):
git clone git://github.com/jedisct1/libsodium.git
cd libsodium
git checkout tags/1.0.4
./autogen.sh
./configure
make check
sudo make install
cd ..
Then:
sudo pip install virtualenv
mkdir jmvenv
cd jmvenv; source bin/activate; cd ..
Install this repo in the virtualenv:
git clone https://github.com/AdamISZ/joinmarket-clientserver
cd joinmarket-clientserver
#### Installing packages to run everything in-one:
python setupall.py --daemon
python setupall.py --client-bitcoin
If you have installed this "full" version of the client, you can use it with the
command line scripts as explained in the [scripts README](https://github.com/AdamISZ/joinmarket-clientserver/tree/master/scripts).
#### Installing the daemon separately
Just do
python setupall.py --daemon
Then, you can run the daemon on its own with
cd scripts; python joinmarketd.py <port number>
The reason for doing this may be either (1) to run command-line scripts provided here, but
in a separate process from the daemon; or, (2) to run a separate (e.g. wallet plugin) codebase
to do the bitcoin operations.
In the former case you will need still to install the local packages:
python setupall.py --client-bitcoin
and then edit your `joinmarket.cfg` section `DAEMON`, setting `no_daemon = 0`.
The latter case applies to the Electrum plugin, see [here](https://github.com/AdamISZ/electrum-joinmarket-plugin).
There, you need to install the client code (without Joinmarket's bitcoin):
python setupall.py --client-only

90
README.md

@ -18,93 +18,19 @@ have extremely minimal to no impact on the backend code, since the latter just i
communication of a set of formatted messages, and allows the client to decide on communication of a set of formatted messages, and allows the client to decide on
their validity beyond simply syntax. their validity beyond simply syntax.
Joinmarket's own [messaging protocol] is thus enforced *only* in the server/daemon. Joinmarket's own [messaging protocol](https://github.com/JoinMarket-Org/JoinMarket-Docs/blob/master/Joinmarket-messaging-protocol.md) is thus enforced *only* in the server/daemon.
The client and server currently communicate using twisted.protocol.amp, see The client and server currently communicate using twisted.protocol.amp, see
[AMP](https://amp-protocol.net/) which is a very clean asynchronous messaging protocol, [AMP](https://amp-protocol.net/),
and the specification of the communication between the client and server is isolated to and the specification of the communication between the client and server is isolated to
[this](https://github.com/AdamISZ/joinmarket-clientserver/blob/master/jmbase/commands.py) module. [this](https://github.com/AdamISZ/joinmarket-clientserver/blob/master/jmbase/commands.py) module.
Currently the messaging layer of Joinmarket is IRC-only (but easily extensible, see [here](https://github.com/JoinMarket-Org/joinmarket/issues/650).
The IRC layer is also implemented here using Twisted, reducing the complexity required with threading.
The server is currently implemented as a daemon (see `scripts/joinmarketd.py`), in future The "server" is just a daemon service that can be run as a separate process (see `scripts/joinmarketd.py`), or for convenience in the same process (the default for command line scripts).
it may be convenient to create the option to run it within the same process as the client.
To install, follow the instructions in INSTALL.md.
####Installation on Linux Instructions for running command line scripts are in scripts/README.md.
This is a WIP. Instructions for developers for testing in TESTING.md.
To install everything (client and server), install these packages:
sudo apt-get install python-dev python-pip git build-essential
automake pkg-config libtool libffi-dev libssl-dev
(+ libsodium-dev if you can find it, else build after)
(to build libsodium after):
git clone git://github.com/jedisct1/libsodium.git
cd libsodium
git checkout tags/1.0.4
./autogen.sh
./configure
make check
sudo make install
cd ..
Then:
sudo pip install virtualenv
mkdir jmvenv
cd jmvenv; source bin/activate; cd ..
Install this repo in the virtualenv:
git clone https://github.com/AdamISZ/joinmarket-clientserver
cd joinmarket-clientserver
Next, you can install in 3 different modes:
1. For the "backend", a daemon, install:
`python setupall.py --daemon`
Then, you can run the daemon with `cd scripts; python joinmarketd.py <port number>`
2. For the client code, using joinmarket's own bitcoin library on the command line:
`python setupall.py --client-bitcoin`
If you have installed this "full" version of the client, you can use it with the
command line scripts as explained in the [scripts README](https://github.com/AdamISZ/joinmarket-clientserver/tree/master/scripts).
3. For the client code, using another bitcoin backend library (currently only Electrum
supported, see https://github.com/AdamISZ/electrum-joinmarket-plugin for details):
`python setupall.py --client-only`
You can then access the library via `import jmclient`. In particular the
jmclient.Taker class must be instantiated.
#####Test instructions (for developers):
This is a rough sketch, some more background is found in [JM wiki](https://github.com/Joinmarket-Org/joinmarket/wiki/Testing)
Make sure to have bitcoind installed. Also need miniircd installed to the root dir:
git clone https://github.com/Joinmarket-Org/miniircd
Install the test requirements (still in your virtualenv as mentioned above):
pip install -r requirements-dev.txt
Curl is also needed:
sudo apt-get install curl
Running the test suite should be done like:
python -m py.test --cov=jmclient --cov=jmbitcoin --cov=jmbase --cov=jmdaemon --cov-report html --btcroot=/path/to/bitcoin/bin/ --btcpwd=123456abcdef --btcconf=/path/to/bitcoin.conf --nirc=2
(you'll first want to copy bitcoin.conf in the test/ directory to a place you choose, and
copy the regtest_joinmarket.cfg file from the test/ directory to the root directory,
both files will need minor edits for your btc configuration)

23
TESTING.md

@ -0,0 +1,23 @@
### Test instructions (for developers):
This is a rough sketch, some more background is found in [JM wiki](https://github.com/Joinmarket-Org/joinmarket/wiki/Testing)
Make sure to have bitcoind installed. Also need miniircd installed to the root dir:
git clone https://github.com/Joinmarket-Org/miniircd
Install the test requirements (still in your virtualenv as mentioned above):
pip install -r requirements-dev.txt
Curl is also needed:
sudo apt-get install curl
Running the test suite should be done like:
python -m py.test --cov=jmclient --cov=jmbitcoin --cov=jmbase --cov=jmdaemon --cov-report html --btcroot=/path/to/bitcoin/bin/ --btcpwd=123456abcdef --btcconf=/path/to/bitcoin.conf --nirc=2
(you'll first want to copy bitcoin.conf in the test/ directory to a place you choose, and
copy the regtest_joinmarket.cfg file from the test/ directory to the root directory,
both files will need minor edits for your btc configuration).

4
requirements-dev.txt

@ -1,8 +1,8 @@
# matplotlib # matplotlib
# numpy # numpy
pexpect pexpect
pytest==2.8.2 pytest==3.0.5
pytest-cov==2.2.1 pytest-cov==2.4.0
python-coveralls python-coveralls
mock mock

Loading…
Cancel
Save