diff --git a/README.md b/README.md index 9bf4f4fc..ce74df1b 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ There are several add-on services available to extend the functionality of Bitco - [Services](docs/services.md) - [Bitcoind](docs/services/bitcoind.md) - Interface to Bitcoin Core - [Web](docs/services/web.md) - Creates an express application over which services can expose their web/API content -- [Testing & Development](docs/testing.md) - Developer guide for testing +- [Development Environment](docs/development.md) - Guide for setting up a development environment - [Node](docs/node.md) - Details on the node constructor - [Bus](docs/bus.md) - Overview of the event bus constructor - [Release Process](docs/release.md) - Information about verifying a release and the release process. diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 00000000..7c867a72 --- /dev/null +++ b/docs/development.md @@ -0,0 +1,156 @@ +# Setting up Development Environment + +## Install Node.js + +Install Node.js by your favorite method, or use Node Version Manager by following directions at https://github.com/creationix/nvm + +```bash +nvm install v4 +``` + +## Fork and Download Repositories + +To develop bitcore-node: + +```bash +cd ~ +git clone git@github.com:/bitcore-node.git +git clone git@github.com:/bitcore-lib.git +``` + +To develop bitcoin or to compile from source: + +```bash +git clone git@github.com:/bitcoin.git +git fetch origin : +git checkout +``` +**Note**: See bitcoin documentation for building bitcoin on your platform. + + +## Install ZeroMQ Development Dependency + +For Ubuntu: +```bash +sudo apt-get install libzmq-dev +``` + +For Mac OS X: +```bash +brew install zeromq +``` + +## Install and Symlink + +```bash +cd bitcore-lib +npm install +cd ../bitcore-node +npm install +``` +**Note**: If you get a message about not being able to download bitcoin distribution, you'll need to compile bitcoind from source, and setup your configuration to use that version. + + +We now will setup symlinks in `bitcore-node` *(repeat this for any other modules you're planning on developing)*: +```bash +cd node_modules +rm -rf bitcore-lib +ln -s ~/bitcore-lib +rm -rf bitcoind-rpc +ln -s ~/bitcoind-rpc +``` + +And if you're compiling or developing bitcoin: +```bash +cd ../bin +ln -sf ~/bitcoin/src/bitcoind +``` + +## Run Tests + +If you do not already have mocha installed: +```bash +npm install mocha -g +``` + +To run all test suites: +```bash +cd bitcore-node +npm run regtest +npm run test +``` + +To run a specific unit test in watch mode: +```bash +mocha -w -R spec test/services/bitcoind.unit.js +``` + +To run a specific regtest: +```bash +mocha -R spec regtest/bitcoind.js +``` + +## Running a Development Node + +To test running the node, you can setup a configuration that will specify development versions of all of the services: + +```bash +cd ~ +mkdir devnode +cd devnode +mkdir node_modules +touch bitcore-node.json +touch package.json +``` + +Edit `bitcore-node.json` with something similar to: +```json +{ + "network": "livenet", + "port": 3001, + "services": [ + "bitcoind", + "web", + "insight-api", + "insight-ui" + ], + "servicesConfig": { + "bitcoind": { + "spawn": { + "datadir": "/home//.bitcoin", + "exec": "/home//bitcoin/src/bitcoind" + } + } + } +} +``` + +Setup symlinks for all of the services and dependencies: + +```bash +cd node_modules +ln -s ~/bitcore-lib +ln -s ~/bitcore-node +ln -s ~/insight-api +ln -s ~/insight-ui +``` + +Make sure that the `/bitcoin.conf` has the necessary settings, for example: +``` +server=1 +whitelist=127.0.0.1 +txindex=1 +addressindex=1 +timestampindex=1 +spentindex=1 +zmqpubrawtx=tcp://127.0.0.1:28332 +zmqpubhashblock=tcp://127.0.0.1:28332 +rpcallowip=127.0.0.1 +rpcuser=bitcoin +rpcpassword=local321 +``` + +From within the `devnode` directory with the configuration file, start the node: +```bash +../bitcore-node/bin/bitcore-node start +``` \ No newline at end of file diff --git a/docs/testing.md b/docs/testing.md deleted file mode 100644 index a1a6844e..00000000 --- a/docs/testing.md +++ /dev/null @@ -1,37 +0,0 @@ -# Development & Testing -To run all of the JavaScript tests: - -```bash -npm run test -``` - -If you do not already have mocha installed: - -```bash -npm install mocha -g -``` - -To run the regression tests: - -```bash -mocha -R spec regtest/bitcoind.js -``` - -To be able to debug bitcoind you'll need to have `gdb` and `node` compiled for debugging with gdb using `--gdb` (sometimes called node_g), and you can then run: - -```bash -$ gdb --args node examples/node.js -``` - -To run mocha from within gdb (notice `_mocha` and not `mocha` so that the tests run in the same process): - -```bash -$ gdb --args node /path/to/_mocha -R spec integration/regtest.js -``` - -To run the benchmarks: - -```bash -$ cd benchmarks -$ node index.js -```