Commit Graph

357 Commits

Author SHA1 Message Date
Alex Kohler 87b12ddced Remove DefaultMinimumPow patches in favor of using whisper config (#683) 2018-02-19 15:53:40 +01:00
Igor Mandrigin b83666a90e Fix linter warnings for StatusBackend. (#675) 2018-02-16 15:58:13 +02:00
Ivan Danyliuk 716f1b1cb0 Fix comment 2018-02-16 13:02:41 +01:00
Ivan Danyliuk f78b79b49b Change default connection state to unknown 2018-02-16 13:02:41 +01:00
Ivan Danyliuk bc1c3e6337 Make linters happy 2018-02-16 13:02:41 +01:00
Ivan Danyliuk 4982e1b8b8 Add ConnectionChange API call to backend for handling network state changes 2018-02-16 13:02:41 +01:00
Alex Kohler 228bda9fb3 Remove //nolint: gas directives from fmt.Fprintf #590 (#656)
Summary:
Filter out gas linter error checks for fmt.Fprintf commands. This required defining a custom linter around gas that additionally included the offending code.

Notes:

Gas format, without piping it through gometalinter, gives output like this:

$ gas -fmt=csv geth/jail/console/console.go
geth/jail/console/console.go,21,Errors unhandled.,LOW,HIGH,"fmt.Fprintf(w, ""%s: %s"", consoleEventName, formatForConsole(fn.ArgumentList))"
Gometalinter, by default, does not grab the line of code when it filters gas errors. To resolve this, I created a wrapper around gas (I wasn't sure what to call this "gas wrapper", I opted for gasv2, open to other names).

The first part of the regular expression was taken directly from gometalinter (see https://github.com/alecthomas/gometalinter/blob/master/linters.go#L236), and I then appended ,\".*\" to additionally grab the line of code of the offending line. Lastly, I excluded ".*Errors unhandled.*fmt.Fprintf.*" to filter out only fmt.Fprintf errors around omitted errors.

Also as a result of this change, gas lint output will now include the offending code.

Closes #590
2018-02-14 19:58:20 +02:00
Dmitry Shulyak 0b979c507d Fix async status api (#663) 2018-02-14 17:32:36 +01:00
Alex Kohler 365bc662a2 Enable gometalinter on tests and fix static analysis issues #631 (#644)
* Enable gometalinter on tests and fix static analysis issues

* Remove unneeded change

* Fix additional lint errors

* Add nolint directives and error checks

* Add error assertions instead of nolint directives

* Go back to using lint directive for loop.Run goroutine

* Add error check to loop.Run
2018-02-12 13:16:06 +02:00
Dmitry Shulyak 2d964bfe9f Remove async operations from node manager (#584)
The main goal of this change is to remove async operations from node manager.
Additionally all of the signals from node manager are moved to status backend.

All of the async operation now will have the following behaviour:
- If node in the correct state exit immediatly without error
- If node not in the correct state exit immediatly with error
- In all other cases spawn a goroutine with wanted operation
- All the progress regarding that operation will be reported
  by using signals
- Signals should be handled in once place, which is StatusBackend

There are 2 potentially breaking changes:
- Empty event field will be ommited when Envelope is sent to a client
- All errors will be delivered to a client as an Envelope, previously
  some errors (NodeExists, NoRunningNode) were delivered synchronously

Signed-off-by: Dmitry Shulyak <yashulyak@gmail.com>
2018-02-09 14:37:56 +01:00
Pedro Pombeiro 8c3aa9a619
Fix a couple of lint warnings 2018-02-09 10:28:27 +01:00
Adrià Cidre 3c83c93039 Update jail README (#626) 2018-02-09 02:25:17 +02:00
Dmitry Shulyak 4cddc362ac
Fix all data races in jail package (#632)
* Rework how loop is stopped

* Use atomic int32 for DummyTask

* Close loop channel only once

* Rename closeChan to closedChan
2018-02-08 15:03:04 +02:00
Sebastian Klier 70912ab8f6 Group tests in a dedicated testing package (#629) 2018-02-08 13:52:47 +01:00
Azer Koçulu 5bea85fa9b Improve `fetch` tests in Cell (#627) 2018-02-08 12:41:07 +01:00
Adrià Cidre 00df3ff9f8 [#618] Jail.Call to return valid JSON string based results (#619) 2018-02-08 12:25:01 +01:00
Adam Babik 9885d74db0 Fix sync-and-exit option logic (#628)
* fix sync-and-exit logic

* fix reading from doneSync channel

* clean up

* make statusd before using it

* move syncAndStopNode to different file

* change log level in travis chain sync command

* do not use fmt but log

* add progress log and set timeout to 20 mins

* set datadir to .ethereumtest

* fix datadir
2018-02-08 10:51:53 +02:00
Dmitry Shulyak d0ef64a177 Maintain local copy of the nonce for each used address (#538) 2018-02-08 00:23:57 +02:00
Caner Çıdam ca719af71c Sync blockchain before running e2e tests on public testnet #568 (#612) 2018-02-07 11:48:03 +01:00
Dmitry Shulyak ca5a8f6669 Enable ethereum metrics collection (#616) 2018-02-05 21:25:40 +02:00
Caner Çıdam 0dd47ab7bc Cover transaction manager with additional test cases #561 (#601) 2018-02-05 17:28:21 +01:00
Sebastian Delgado 607954bfc3 Enforce type safety in `NodeCrashEvent` #602 (#607) 2018-02-05 11:37:59 +01:00
Denis Makogon 230e4febb1 Fixing test imports (#593) 2018-02-05 00:07:47 +01:00
Dmitry Shulyak 653da5bcd0 Result of tx processing returned as QueuedTxResult
Currently it is quite easy to introduce concurrency issues while working
with transaction object. For example, race issue will exist every time
while transaction is processed in a separate goroutine and caller will
try to check for an error before event to Done channel is sent.

This change removes all the data that is updated on transaction and leaves
it with ID, Args and Context (which is not used at the moment).

Signed-off-by: Dmitry Shulyak <yashulyak@gmail.com>
2018-02-02 09:47:56 +02:00
Dmitry Shulyak b41c4895fe Remove syncpool.go (#594) 2018-01-31 23:50:38 +01:00
Adam Babik 89d89681a3
Add support for metrics (#558)
It adds support for metrics (expvar and Prometheus) along with docker-compose files to run a Whisper test cluster.
2018-01-30 12:51:48 +01:00
Dmitry Shulyak ba0b20e53f Remove mocks for transaction manager and transaction queue
It is very unlikely that there will be 2 or more implementations
of tx manager and queue, as they are tailored specifically to status project
requirements.
2018-01-26 15:21:34 +01:00
Dmitry Shulyak 680d0513b7 Refactoring of TxQueue and Manager (#530) 2018-01-25 21:59:21 -08:00
Dmitry Shulyak 28a122f4aa Fix PeerCount lint warning 2018-01-25 12:16:59 +02:00
Dmitry Shulyak 889eeca31d Add a workaround for waiting till node is synced with network (#565) 2018-01-24 23:26:34 -08:00
Daniel Nephin 755a646bd4 Use gometalinter config instead of makefile (#560) 2018-01-24 00:25:28 -08:00
Adam Babik e214e1e270
Manage discovery from flags and refactor handling interrupt signals (#557) 2018-01-22 21:16:13 -08:00
Adam Babik c153a60dc3
Clean up whisper log delivery (#555) 2018-01-19 15:53:16 +01:00
Dmitry Shulyak 0771e7d1b7 Use single codepath for sending transactions to a local and remote nodes (#527)
- new EthereumTransactor that provides higher level API for working with ethereum network, and it is fully conformant with ethclient
- new test rpc service that improves flexibility and coverage of txqueue manager tests
- run complete transaction sequantially for each address
- go-ethereum: Get pending nonce from transaction pool
- add a patch with getting nonce from transaction pool
2018-01-18 17:55:17 +01:00
F. Eugene Aumson 83763e0401 Make gas linter happy (#544) 2018-01-17 17:46:21 +01:00
Ivan Daniluk f93cd81d83
Upgrade to geth 1.7.3 and add geth patches (#492) 2018-01-15 21:26:41 +01:00
Adam Babik 953790c641 Add a test case to reproduce the issue (#548) 2018-01-11 18:17:41 +01:00
Adrià Cidre 7ab6a062ec [#516] Fix panic based on wrong error in setImmediate function (#535)
Additionally, this change clean ups and improves organization of `geth/jail/internal/timers` package.
2018-01-10 10:42:40 +01:00
Igor Mandrigin 21132a441f Remove creating global `_status_catalog` variable 2018-01-09 17:53:33 +01:00
Caner Çıdam 5c8b7758d5 add the missing dot at the end of comment sentence 2018-01-04 09:38:53 +01:00
Caner Çıdam a3663fa1cc fewer s.reinitMock() lines using SetupTest 2018-01-04 09:38:53 +01:00
Caner Çıdam 2d4391704e short comment for TestAccounts 2018-01-04 09:38:53 +01:00
Caner Çıdam 813c6df5f0 reduce error check in TestSelectAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam 83e71f3e4f fix order of s.Equal args 2018-01-04 09:38:53 +01:00
Caner Çıdam 74f38d4f94 update rest of the tests: expected errors 2018-01-04 09:38:53 +01:00
Caner Çıdam c0acd033a1 update table-driven tests: expected errors 2018-01-04 09:38:53 +01:00
Caner Çıdam 90123f4f40 remove unnecessary check in TestAddressToDecryptedAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam 491b4ca3ce split TestCreateAndRecoverAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam ca5b34afb7 verify accounts in TestAddressToDecryptedAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam f31fcd6c90 fix NotNil misuse 2018-01-04 09:38:53 +01:00
Caner Çıdam 1daeeee4fd few changes to TestSelectedAndReSelectAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam b37a1ced0d remove repetitive account creation from tests 2018-01-04 09:38:53 +01:00
Caner Çıdam 8c1b1e265c add TestAddressToDecryptedAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam 1326a1ab36 add TestAccounts 2018-01-04 09:38:53 +01:00
Caner Çıdam f3257da15e add TestLogout and test errors 2018-01-04 09:38:53 +01:00
Caner Çıdam 1f0655eba6 add TestSelectedAndReSelectAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam f92aff3eb0 add TestSelectedAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam 48d75d135c finalize TestCreateChildAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam 3fd4e04f59 workaround for EXPECT().Times(int) 2018-01-04 09:38:53 +01:00
Caner Çıdam 7b3c0d9e85 use a test suite to keep it DRY 2018-01-04 09:38:53 +01:00
Caner Çıdam 6ce30e158b remove extra lines & rename whisper service var 2018-01-04 09:38:53 +01:00
Caner Çıdam f15d16ba1e add test cases for SelectAccount 2018-01-04 09:38:53 +01:00
Caner Çıdam 3b4ee527f2 remove unnecessary comment 2018-01-04 09:38:53 +01:00
Caner Çıdam 3f952ebb50 rename 2018-01-04 09:38:53 +01:00
Caner Çıdam 521b841f53 don't fail on empty password 2018-01-04 09:38:53 +01:00
Caner Çıdam 87531d015f refactor tests 2018-01-04 09:38:53 +01:00
Caner Çıdam 18c41df326 tests for account creation and recovery 2018-01-04 09:38:53 +01:00
Pedro Pombeiro d4782a3f1e Change expected warning log level from `WARNING` to `WARN` (#526) 2018-01-03 15:11:21 +01:00
Donnie Adams 373fc86d1e Change Loop API to prevent it from accepting tasks when the loop is closed #415 (#448) 2017-12-28 22:50:36 +02:00
Adam Babik b7fb51d92a
Refactor shh_requestMessages method (#513) 2017-12-21 11:26:01 +01:00
b00ris ba6c96532b add enode to request messages params (#508) 2017-12-12 12:00:17 +01:00
Caner Çıdam 34df7e8abb CreateAndInitCell should allow reinitializing a cell #497 (#500)
Changes Jail.createCell to Jail.obtainCell, which alters the error-throwing behaviour for better Jail.CreateAndInitCell

This PR allows cells to be reinitialized without being recreated.

Important changes:
- Calling with same cell ID won't cause any errors.
- Consecutive calls with same cell ID only reinitialize existing cell.
- Parse in library.go uses StatusAPI.CreateAndInitCell.
2017-12-08 22:32:30 +07:00
Evgeny Danilenko 919ab285d3 add password for MailServer encryption (#494) 2017-12-07 17:58:11 +01:00
b00ris 9559ff074a Support for historic messages from MailServer (#503)
Add `shh_requestMessages` RPC method. It sends a message to MailServer that can return cached, possibly expired, Whisper message.
2017-12-07 14:37:43 +01:00
Evgeny Danilenko 596b7ea2e1 whisper standalone mode (#498) 2017-12-07 13:07:45 +01:00
Adam Babik ac76e4731f
Prepare wnode-status to support MailServer (#477) 2017-12-04 17:11:14 +01:00
Frank Mueller bddf15d74f Add internal RPC server and statusd-cli client (#463) 2017-12-02 19:51:55 +01:00
b00ris c530611642 Fix race #452 (#454)
It fixes race conditions in `geth/signal`.
2017-11-28 14:17:15 +01:00
b00ris 6bf980a1a7 Issue/fix dataraces in jail tests#457 (#460) 2017-11-27 22:56:52 +01:00
monokh 0a82e67379 Improve JSON-RPC handling for raw requests/responses, Fixes #364 (#458) 2017-11-27 19:53:33 +01:00
Adam Babik a22638f421 be consistent with comments 2017-11-23 13:51:52 +01:00
Adam Babik 47d16bffd0 fix Parse 2017-11-23 13:47:20 +01:00
Adam Babik 98b3f330af bring back Parse binding 2017-11-23 13:37:59 +01:00
perissology f0beeb3829 fix failing tests in PRs from other repos, fixes #459 (#461)
Fix failing tests for users w/o access to the ACCOUNT_PASSWORD env variable. Disable e2e public network tests in Travis pull requests. Exclude lib dir from unit tests.
2017-11-20 10:21:30 -08:00
Evgeny Danilenko 209d5fed74 Issue/fix public testnet tests #424 (#438)
* Accounts are now encrypted with a strong passphrase.
* The encrypted passphrase is stored in .travis.yml
* Public testnet tests are now run after tests on a private net
2017-11-07 12:46:11 -05:00
Adam Babik 086747a695 Refactor jail part 2 (#401)
Refactor jail so that it's more self-descriptive and easier to understand by newcomers. Also, the test coverage has been improved.

Changes requiring status-react team actions:
* Replace Parse calls with new CreateAndInitCell and ExecuteJS bindings,
* Make sure web3.isConnected is ok as its response change to boolean value.
2017-11-07 12:36:42 -05:00
Ewetumo Alexander cb5ccb52c4 Emit messages logs for processing and sorting out messaging problems (#420)
* Add DeliveryService to Whisper to track incoming and outgoing messages.
* Have log tagged log lines for incoming and outgoing messages.
2017-11-06 14:10:52 -05:00
Adam Babik a19e502686 Remove go.rice in favour of go generate (#444)
As fetch.go was the only consumer of go.rice, it could be safely removed in favour of go-bindata and go generate.
Motivation to do that was the fact that go.rice throws panic in iOS when compiled with gomobile.
2017-11-03 18:11:37 -04:00
Adam Babik 987cdd6221 Update Ropsten CHT to number 478 (#428) 2017-10-29 16:44:44 +03:00
Ivan Tomilov 21beb685b4 Add -network flag for Makefile to chose a network to run tests on #430
PR adds test flag -network to e2e pacakge, for the selection of the desired blockchain network for running tests. It updates readme to demonstrates usage of flag.
2017-10-26 22:51:04 +03:00
Ivan Tomilov 2897f0ec0f Merge pull request #390 from status-im/issue/refactor-api-notify-send-messages-#342
Refactor and little bit clean up Notify api:

Created interface and package "notification" and extracted related code into it
Set dependencies into constructor notificatotion.Manager
Mocks for notificatotion.Manager and FCMClient
Bacis unit tests for Notify and Send
Notify func is now deprecated
Notify users uses new API: message, Payload and a list of tokens
2017-10-26 20:54:12 +03:00
Alexander Ewetumo 8145412d1c Ensure to return err for nil RPCCLient 2017-10-26 14:25:38 +01:00
Adam Babik 8cbd7ed1c4 fix linter across the whole project 2017-10-26 12:20:16 +02:00
Alexander Ewetumo ed61a1b19c Update code with network id and url returner 2017-10-25 13:08:33 +01:00
Ivan Tomilov 39cc60b8a7 Fixed make lint 2017-10-24 19:48:31 +03:00
Evgeny Danienko 0e72e3d6b4
Update notify interface and mark old one as deprecated 2017-10-24 00:47:09 +03:00
Evgeny Danienko a3bca52f51
Fmt 2017-10-22 20:41:25 +03:00
Evgeny Danienko c823acfd04
All notifiers remaned into notification 2017-10-22 20:39:57 +03:00
Evgeny Danienko d22cdc5cbb
NotifyResult doesnt return error field if success 2017-10-22 20:39:57 +03:00
Evgeny Danienko 9efed591da
Notifier constructor renamed 2017-10-22 20:39:57 +03:00
Eugene 42cb6446b9
Return error for notify 2017-10-22 20:39:56 +03:00
Eugene 4f9788a158
Fix tests and rename field in Notifier 2017-10-22 20:39:56 +03:00
Eugene 390495342c
Make FCM client interface private 2017-10-22 20:39:56 +03:00
Eugene c304d3e7ae
Update PN tests 2017-10-22 20:39:56 +03:00
Eugene 804ed7c10c
Remove provider interface 2017-10-22 20:39:56 +03:00
Eugene c36a51d0cf
Firebase provider tests 2017-10-22 20:39:56 +03:00
Eugene 7195fe3f92
Create message provider interface 2017-10-22 20:39:55 +03:00
Eugene 9c1aff3655
Unnecessary test checks removed 2017-10-22 20:39:55 +03:00
Eugene acd1c1527c
Basic unit testing for notification service 2017-10-22 20:39:55 +03:00
Eugene 4aaeeb6ebf
Extract notification into separete package and interface 2017-10-22 20:39:51 +03:00
b00ris e911666b5d Fix make lint warnings (#417)
fixed make lint warnings
cleared linter_exclude_list.txt
removed some commented code
fixed comments from #388
2017-10-20 12:06:22 +03:00
Adam Babik ad9a8777a8 fix node unit tests (#416)
Fix tests that broke after introducing #414
2017-10-19 16:45:14 +03:00
Adam Babik 2e9302c631 removed CHT root from Rinkeby (#414)
CHT roots for Rinkeby do not work as their presence prevents status-go from even starting synchronization.
2017-10-19 15:02:42 +03:00
Adam Babik b9372459cc Rebase on geth 1.7.2 (#402) 2017-10-17 12:58:04 +03:00
Ewetumo Alexander 2159711fa3 Refactoring/blockchain sync#246 (#271)
PR adds a new API changes to the NodeManager to provide simple methods to validate the completed synchonization of the blockchain.
2017-10-17 01:36:36 +03:00
screwyprof 26fcfda87c Introduced a private Ethereum network for testing purposes (#397)
1. A new private testing network (StatusChain) is introduced.
2. An example test case implemented (TestSendEtherOnStatusChainTx)
3. Genesis file added static/config/status-chain-genesis.json
2017-10-17 00:54:56 +03:00
Oleg Raev 240149786f Jail.RemoveCells before logout and switching account (#382)
Called jail.Stop upon SwitchAccount and Logout to ensure all jail cells have been terminated.
2017-10-17 00:07:42 +03:00
Ivan Tomilov 16741f9517 Fixed jail.cells nil assignment (#398)
jail.cells is now re-created upon Jail.Stop, not assigned to nil. Assigning it to nil led to runtime panic when a node was stopped and started again.
2017-10-13 15:13:20 +03:00
Adam Babik 12412b3f58 Put int64 as the first word in Loop (#396)
Fix a bug with ARM and x86-32 and use of atomic operations on 64-bit values. More https://golang.org/pkg/sync/atomic/#pkg-note-BUG
2017-10-12 17:01:04 +02:00
Ivan Tomilov 88294b29be Removed homestead bootnodes (#394)
Remove homestead bootnodes from cht.json. Their existence reflected the reality incorrectly as we don't have any homestead bootnodes in our cluster.
2017-10-12 12:46:41 +03:00
Ivan Daniluk d4496332f9 Check for callback in makeAsyncHandler (#395)
This PR fixes regression from 3540972 and adds check for callback validity before putting it into event loop for sendAsync calls.
2017-10-12 12:15:07 +03:00
Adam Babik 281b304edb Extract e2e tests to a separate package (#375)
This change moves our e2e tests into a separate package to make room for proper unit and integration tests.

This is Phase 1 described in #371.

Changes:

Makefile has separate directives to run unit/integration tests and e2e tests,
CI runs unit/integration tests first and then e2e tests,
E2e tests are in reliability order, i.e. the least reliable tests are run in the end to be sure that nothing else is broken,
Some tests are fixed or quarantined.
2017-10-11 17:20:51 +03:00
Adam Babik 90acfedf7a Rebase geth 1.7.0 (#353) 2017-10-10 12:38:49 +03:00
Ivan Daniluk 3540972f0e Refactor and cleanup Jail (#368)
Refactor and clean up Jail package:

 Removes account.Manager and txqueue.Manager from Jail as they are not used anymore
 Removes messageID related code from Jail.Send
 Simplifies Jail.Send to be a wrapper around RPC client's CallRaw
 Renames jail_cell* to cell*
 Related cleanups
2017-10-06 19:52:26 +03:00
Adam Babik e61c39b0b2 Forward net_* rpc commands to the upstream (#377) 2017-09-29 17:09:41 +02:00
Adam Babik ede939dd9e Remove LES activation when using upstream (#373) 2017-09-29 09:40:10 +02:00
Ivan Daniluk 9cc5fd2112 Move transaction queue code into separate package (#365) 2017-09-27 02:50:41 +02:00
Adam Babik d625ddacfd Validate password in CompleteTransaction with remote node (#367) 2017-09-26 18:08:24 +02:00
Ivan Daniluk 93492cf606 Move accounts to separate package (#360) 2017-09-26 15:44:26 +02:00
Ivan Daniluk 14a04c1b20 Fix null result field bug for JSON-RPC raw response (#362) 2017-09-26 12:19:17 +02:00
Adam Babik edcb2d7933 Fix signals package to compile for ios (#363) 2017-09-26 11:23:13 +02:00
Ivan Daniluk 2acf1a1a6a Refactor/signals package (#359)
Move signals code to the separate package.
2017-09-25 20:22:57 +02:00
Ivan Tomilov fc8f59e121 Fixed eth_sendTransaction routing to the local node (#351)
* Fixed eth_sendTransaction routing to the local node
* Add local RPC handlers for eth_accounts and eth_sendTransaction
2017-09-25 18:04:40 +02:00
Adam Babik 750612f2bc fix SendTransaction signature in go-ethereum (#355)
I created a separate method SendTransactionWithPassphrase which accepts passphrase as a second argument. It's an exact copy of SendTransaction except for calling wallet.SignTxWithPassphrase.
2017-09-22 18:16:22 +03:00
Ivan Tomilov 283ae3e7df Fixed geth/node and geth/params tests (#332) 2017-09-19 14:40:43 +03:00
Ivan Tomilov 477cd92585 Merge branch 'develop' of github.com:status-im/status-go into develop 2017-09-19 14:31:58 +03:00
Ivan Tomilov 27a5090ad3 Started 0.9.9-unstable 2017-09-19 14:30:02 +03:00
Adam Babik ba963cc1bd estimate gas if missing in sending tx using upstream (#346)
I added a call to eth_estimateGas in case gas param is missing when using the upstream. This is a little bit ugly because I create an anonymous struct to match eth_call params. I spotted this struct in go-ethereum but I don't see it's exported.
2017-09-19 14:19:18 +03:00
Ivan Tomilov 9d01f7aa26 fixed that shh_newMessageFilter was erroneously routed to the upstream instead of local (#345)
An issue arose that shh_newMessageFilter was routed to the upstream instead of local node. This PR fixes that. It also revisits routing logic and makes all requests go to the local node by default.
2017-09-19 12:52:38 +03:00
Ivan Daniluk ca4bc5152f Add support for JSON-RPC batched calls (#341)
This PR introduces proper support for JSON-RPC batched requests (http://www.jsonrpc.org/specification#batch)
2017-09-18 17:24:35 +03:00
Ivan Tomilov 5f19c9cd0a Implemented sendAsync for js commands with a callback (#321)
Geth js commands coming through jail with a callback will now be executed truly asynchronously blocking jail only when an actual interaction with VM is performed.

Technically, it registers a new handler jeth.sendAsync which executes functions with callbacks asynchronously.

Changes include:

1. Send and SendAsync now use cell.VM instead of otto.Otto providing proper locking.
2. Unmarshalling in ExecuionPolicy.ExecuteWithClient is now done into var result interface{} instead of var result json.RawMessage because test case 0 of TestJailWhisper failed providing byte codes instead of 5.0.
3. Due to the asynchronous nature of web3 calls new weird timeouts in tests have been introduced. They may fail sometimes but I gave up trying to implement a more reliable and readable solution.
2017-09-18 15:13:32 +03:00
Adam Babik 79f744954c Prevent from completing tx multiple times (#330)
This commit prevents from completing (i.e. sending) the same transaction multiple times.
2017-09-18 11:53:08 +03:00
Ivan Daniluk 9eee21f1ca Add support for JSON-RPC array payload. (#335)
This PR introduces solution for #333 - it adds support for array JSON-RPC payload.

unmarshalMessage tries to unmarshal JSON paylod into *jsonrpcMessage object, and in case of failure, analyzes error and, if it's unmarshalling array error, tries to unmarshal it as an array.
2017-09-17 17:06:18 +03:00
Ivan Daniluk cf7a9949a3 Add some docs/readmes (#329)
Updates and adds some package docs.

It also provides autogenerated README's using https://github.com/jimmyfrasche/autoreadme tool. To use it, make sure it's installed on your system, and every time you update documentation, run go generate to update the README.md file.
2017-09-15 19:00:00 +03:00
Oskar Thorén f88de68f86 Push notifications: ability to trigger notifications via public API (#327)
This PR provides a way for status-react to trigger push notifications to contacts whose FCMToken they possess. It thus solves the basic user story as outlined in #326
2017-09-15 18:57:34 +03:00
Ivan Danyliuk 704d271c64
Update README for jail. 2017-09-15 14:16:50 +02:00
Adam Babik 8153d935d2 Improve geth/api tests (#328)
The goal of this PR is to make geth/api tests to finally pass from the beginning to the end. I tried to achieve it here by:

Removing calls to common.PanicAfter so that we know which tests fail the most,
Better sync of some tests using channels,
Small test improvements.
2017-09-15 13:35:31 +03:00
Ivan Daniluk 1c9c0f08f4 Bugfix/eth accounts workaround #294 (#318)
This PR is dirty hack workaround for #294 issue. It starts LES service with sync disabled (by MaxPeers option set to 0), even if Upstream is enabled. This ensures that all RPC calls are registered in local node (they are registered during LES service initialization and do not exist if LES service is not activated).
2017-09-15 11:44:31 +03:00
Ivan Daniluk 9a5c1774c3 Refactor RPC client #304 (#311)
This PR refactors RPC subsystem for status-go:

cleans up two different RPC client implementations (RPCManager and rpc.Client)
creates new package under geth/rpc
moves routing logic into this package (rpc.(*router))
add tests for routing
cleans up NodeManager
2017-09-14 23:14:31 +03:00
Ivan Daniluk fd8c110293 Add support for 'go test -v' flag for tests (#315)
Default log level for tests is now ERROR. If tests are invoked with -v, the log level becomes INFO.
2017-09-14 14:41:50 +03:00