The Status module that consumes go-ethereum https://status.im
Go to file
Andrea Franz 809db97e54
mailserver pagination (#1039)
* mailserver sends envelopes in descending order

* add limit value in mailserver request payload

* mailserver sends messages up to the limit specified in the request

* update Archive method to return key and error

* processRequest returns the next page cursor

* add cursor to mailserver request

* add limit and cursor to request payload

* fix request limit encoding

* wait for request completed event in TrackerSuite/TestRequestCompleted

* add cursor to mailserver response

* fix cursor position in payload

* add e2e test for mail server pagination

* validate mail server response size

* remove old limitReached var

* fix lint warnings

* add whisper patch

* fix tests after rebase

* check all return values to avoid lint warnings

* check that all messages have been retrieved after 2 paginated requests

* fix lint warnings

* rename geth patch

* merge mailserver patches into one

* add last envelope hash to mailserver response and EventEnvelopeAvailable event

* update whisper patch

* add docs to MailServerResponse

* update whisper patch

* fix tests and lint warnings

* send mailserver response data on EventMailServerRequestCompleted signal

* update tracker tests

* optimise pagination test waiting for mailserver to archive only before requesting

* rollback mailserver interface changes

* refactoring and docs changes

* fix payload size check to determine if a limit is specified

* add more docs to the processRequest method

* add constants for request payload field lengths

* add const noLimits to specify that limit=0 means no limits
2018-07-02 09:38:10 +02:00
.github Move CONTRIBUTING.md to top level (#798) 2018-04-04 12:51:05 +02:00
.vscode Add config required to debug statusd on VS Code 2018-05-01 14:15:43 +02:00
_assets mailserver pagination (#1039) 2018-07-02 09:38:10 +02:00
account Update to geth 1.8.11. Closes #1033 2018-06-22 18:04:13 +02:00
api Clean api package (#1055) 2018-06-27 10:11:45 +02:00
cmd collect process metrics (#1051) 2018-06-25 17:21:04 +02:00
db [#856] move geth subpackages to root level (#1007) 2018-06-08 13:29:50 +02:00
extkeys extkeys: extended key can derive a child only if its depth is less than 255 (#1032) 2018-06-22 14:21:49 +02:00
jail Fix issues reported by lint. Part of #1017 2018-06-14 13:52:51 +02:00
lib Desktop platform jail signal callback support 2018-06-28 02:16:27 +03:00
logutils Add LogEnabled attribute to NodeConfig to, used in the call from status-react (#866) 2018-04-26 18:28:42 +02:00
mailserver mailserver pagination (#1039) 2018-07-02 09:38:10 +02:00
metrics Fix issues reported by lint. Part of #1017 2018-06-14 13:52:51 +02:00
node [#1054] : Introducing t/helpers and WaitForPeer (#1064) 2018-06-27 09:55:25 +02:00
notifications/push Fix issues reported by lint. Part of #1017 2018-06-14 13:52:51 +02:00
notifier Notifier package to interact with gorush notifications (#910) 2018-05-08 16:30:03 +02:00
params New debug_postSync endpoint (#1046) 2018-06-25 15:27:17 +02:00
peers [#856] move geth subpackages to root level (#1007) 2018-06-08 13:29:50 +02:00
profiling Add profiling with pprof (#754) 2018-03-23 14:58:40 +01:00
rpc Fix issues reported by lint. Part of #1017 2018-06-14 13:52:51 +02:00
services mailserver pagination (#1039) 2018-07-02 09:38:10 +02:00
sign Assert that no error is returned in `TestConcurrentComplete()` (#1028) 2018-06-14 11:00:15 +02:00
signal mailserver pagination (#1039) 2018-07-02 09:38:10 +02:00
static Update bindata 2018-04-09 15:42:36 +02:00
t mailserver pagination (#1039) 2018-07-02 09:38:10 +02:00
timesource Sanity validate ntp response 2018-06-08 19:10:29 +03:00
transactions Update to geth 1.8.11. Closes #1033 2018-06-22 18:04:13 +02:00
vendor mailserver pagination (#1039) 2018-07-02 09:38:10 +02:00
.codeclimate.yml #759 Codeclimate config (#843) 2018-04-23 15:55:21 +02:00
.dockerignore Ignore *.test files from all folders (#635) 2018-02-08 14:23:08 +02:00
.gitignore Add config required to debug statusd on VS Code 2018-05-01 14:15:43 +02:00
.golangci.yml Enable `typecheck` to catch syntax errors on files which are not normally compiled 2018-06-20 19:35:53 +02:00
.travis.yml Use `EnvelopeTracer` as an event source to avoid relying on timeouts in tests. Fixes #1021 2018-06-18 15:24:27 +02:00
CONTRIBUTING.md Move CONTRIBUTING.md to top level (#798) 2018-04-04 12:51:05 +02:00
Gopkg.lock Update to geth 1.8.11. Closes #1033 2018-06-22 18:04:13 +02:00
Gopkg.toml Update to geth 1.8.11. Closes #1033 2018-06-22 18:04:13 +02:00
LICENSE.md Create LICENSE.md 2016-09-21 10:00:29 +08:00
Makefile New debug_postSync endpoint (#1046) 2018-06-25 15:27:17 +02:00
README.md [#856] move geth subpackages to root level (#1007) 2018-06-08 13:29:50 +02:00

README.md

Status bindings for go-ethereum

TravisCI Builds GoDoc Master Build Status Develop Build Status

Docs

Intro

status-go is an underlying part of Status - a browser, messenger, and gateway to a decentralized world.

It's written in Go and requires Go 1.8 or above.

It uses Makefile to do most common actions. See make help output for available commands.

status-go uses go-ethereum with some patches applied in it, located under vendor/ directory. See geth patches README for more info.

Build

There are two main modes status-go can be built:

  • standalone server
  • library to link for Android or iOS

Use following Makefile commands:

  • make statusgo (builds binary into build/bin/statusd)
  • make statusgo-android (builds .aar file build/android-16/aar)
  • make statusgo-ios and make statusgo-ios-simulator (builds iOS related artifacts in build/os-9.3/framework)

In order to build and use status-go directly from status-react, follow the instructions in https://wiki.status.im/Building_Status, under the 'Building Status with the checked-out version of status-go' section.

Debugging

In order to see the log files while debugging on an Android device, do the following:

  • Ensure that the app can write to disk by granting it file permissions. For that, you can for instance set your avatar from a file on disk.
  • Connect a USB cable to your phone and make sure you can use adb.

Run

adb shell tail -f sdcard/Download/geth.log

IDE Debugging

If you're using Visual Studio Code, you can rename the .vscode/launch.example.json file to launch.json so that you can run the app with the debugger attached.

Testing

To setup accounts passphrase you need to setup an environment variable: export ACCOUNT_PASSWORD="secret_pass_phrase".

Make sure the dependencies are installed first by running:

make lint-install
make mock-install

To test fully statusgo, use:

make ci

To test statusgo using a given network by name, use:

make ci networkid=rinkeby

To test statusgo using a given network by number ID, use:

make ci networkid=3

If you have problems running tests on public network we suggest reading e2e guide.

If you want to launch specific test, for instance RPCSendTransactions, use the following command:

go test -v ./api/ -testify.m ^RPCSendTransaction$

Note -testify.m as testify/suite is used to group individual tests.

Licence

Mozilla Public License 2.0