Commit Graph

234 Commits

Author SHA1 Message Date
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
Roman Volosovskyi 03b868402c jail: sendSignal handler (#310) 2017-09-14 13:43:01 +03:00
Ivan Daniluk 01448d53fc Update jail docs (#313) 2017-09-13 17:27:19 +03:00
Marin 4fb0faa061 Small NodeManager refactoring (#253)
Introduced `isNodeAvailable()`.
2017-09-11 17:07:35 +03:00
Ivan Tomilov c85525e139 Extended testGetDefaultConfig to support Rinkeby (#241)
This pull requests only extends testGetDefaultConfig to run against Rinkeby as well and fixes TestJailWhisper.
2017-09-08 15:32:02 +03:00
Ivan Daniluk 6a096607cf Add FetchAPI support and fix loop race [upd] #289 (#293)
This PR adds Fetch API and fixes #289 by using concurrency safe Otto VM wrapper wherever it's possible. This involves new package geth/jail/vm that is used by jail and by our forked ottoext/{fetch/timers/loop} packages.

It also adds more tests that are supposed to be run with --race flag of go test.
2017-09-08 14:55:17 +03:00
Ivan Tomilov 9463d3843a Updated CHT (#279)
Syncing for Ropsten should now start from something around block 1617921 and from 839680 for Rinkeby.
2017-09-07 10:54:33 +03:00
Ewetumo Alexander 792cd1d9c5 Route geth requests to the upstream or local node correctly (#276)
Geth requests have been revised and if the upstream is enabled, only queries regarding working Ethereum protocol are routed to upstream.
Whisper, most web3 requests and various utility methods are still routed to the local node as well as requests for accounts.
2017-09-07 10:49:40 +03:00
Adam Babik 8fb2424ea5 Port the transactions queue from go-ethereum to status-go (#261)
Now all transactions in both cases are waiting for CompleteTransaction or DiscardTransaction to proceed independently from their destination: upstream of local
2017-09-04 15:56:58 +03:00
Ivan Tomilov beb552d13c Refactoring (#290), closes #247
* 3. Removed extra `jail` prefix in the jail package

* Removed sendMessage and showSuggestions handlers because they're already set in registerHandlers()

* Remove extra asserts

* Changed assertions everywhere to testify

* Exposed JailCell.Call and removed Jail.Cell duplicate method

* Fixed review comments
2017-09-02 20:04:23 +03:00
Ivan Daniluk 75398a19d5 Fix "Slow CreateAccount" #251 (#283) 2017-09-02 03:17:34 +07:00
Ivan Daniluk 0c4603d825 Add file logger support (#269) 2017-09-02 01:44:50 +07:00
Ivan Daniluk fffd60d675 Add docs for Jail package (#285) 2017-09-02 01:18:09 +07:00
Adam Babik 9f57cf422f bugfix: properly handle no LES service (#272) 2017-08-26 15:42:34 +08:00
Adam Babik a4d2fdfa4a cht: remove downloading CHT from GH but embed it (#270) 2017-08-25 10:56:54 +01:00
Ivan Daniluk 4321f9b2e5 Fix log levels and enable ethereum-go logger (#256) 2017-08-24 15:50:16 +07:00
Ricardo Geraldes e6e05aff01 jail.go: removed import to go-ethereum log package 2017-08-15 14:52:09 +01:00
Ewetumo Alexander 1fb7d47c66 JSON RPC Proxy configuration (#193)
IMPORTANT: The known issue is that in case of configured UpstreamRPCServer transactions are sent immediately not waiting for CompleteTransaction or DiscardTransaction which brings inconsistency in behaviour and acts as a security breach.

* new UpstreamRPConfig in geth/params to provide upstream configuration
* conditional start of ethereum blockchain sequence based on NodeConfig.UpstreamConfig.Enabled flag state
2017-08-15 17:27:12 +07:00
Adam Babik 7433828a26 Validate JSON config (#240)
* exposed ValidateNodeConfig()
* extended NodeConfig interface with Validate() method
* added validate tag to some NodeConfig fields
2017-08-10 22:31:29 +07:00
Marin 3b316c0700 Beta/refactor logging#221 (#244)
Added a lightweight logger wrapper around go-ethereum/log which adds StatusIM prefix to all messages and allows to clearly distinguish between status-go and go-ethereum logs.

Logs under vendor/go-ethereum left unchanged because those pieces of code might undergo huge refactoring in the near term.
2017-08-10 20:35:58 +07:00
Ivan Tomilov 0270590646 Fixed develop functionality (#237)
* Fixed tests (only when they run one by one; they can still fail if run together)
* Fixed TestJailSendQueuedTransaction: the second command in case 4 was altering status.message_id and thus the test was failing. Earlier it had been working because cells were cloned during every Call
* Added a check into TestJailVMPersistence: now its concurrent-resiliency is asserted
* Fixed CallRPC: shh_version now return "5.0" instead of "0x5"
* Fixed TestWhisperFilterRace: there was changed Whisper API which should just be adhered to
* Fixed geth1.6.7 rebase consequences: primarily genesis blocks which now contain metropolishash
2017-08-07 17:48:14 +07:00
Ivan Tomilov ebd77aabe2 Merging bug/whisper-on-geth1.6.1 (#236) which acts like develop
* static: updates Whisper test (to work with Geth 1.6.1)
* jail: VM persistence implemented
* jail: sendMessage/showSuggestions minor fixes (to be squashed)
* node: CHT and boot nodes auto-load implemented
* Replaced CHT data file from farazdagi's to tiabc's
* Rewrote config_test.go using testify having reduced it twice in size
* Increased SyncTime and panic timeout in tests
* Fixed test - remove go default test to testify/suite (#207)
* Add flag setup for RPCEnabled and add comment (#225)
* jail: register method handlers before running initial js in jail (#226)
* Console Jail Mod #179 (#228)
* Added ./statusd-data into .gitignore
* Increased log level for the test node from INFO to ERROR
* Add call to loop.Run to evaluate all setTimeout/setIntervals methods. (#208)
* Rebase onto geth1.6.7 (#232)
* Got back sync duration from 60s to 30s, updated bindata.go
2017-08-04 23:14:17 +07:00
David Aaron c274cf5222 Fixed all typos on bootstrap spelling (#202)
Changed all typos on bootstrap spelling from "bootstap" to "bootstrap".
For example in function makeBootstrapNodes, line 326 now reads:
var bootstrapNodes []*discover.Node
2017-07-24 14:06:27 +07:00
Roman Volosovskyi 444a2d93b7 jail: sendMessage and showSuggestions handlers (#195)
Merging what's already implemented in bugs/whisper-on-geth.1.6.1
2017-07-18 21:26:24 +07:00