Commit Graph

41 Commits

Author SHA1 Message Date
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 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
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
Ivan Daniluk 9cc5fd2112 Move transaction queue code into separate package (#365) 2017-09-27 02:50:41 +02:00
Ivan Daniluk 93492cf606 Move accounts to separate package (#360) 2017-09-26 15:44:26 +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
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
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
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 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
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
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
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 fffd60d675 Add docs for Jail package (#285) 2017-09-02 01:18:09 +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
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
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
Ewetumo Alexander b50c46caa8 Add SetTimeout/SetInterval to JailCell otto.Otto, closes #189
* Commit initial change for settimeout/setinterval

* Add initial tests for jail setTimeout/setInterval

* Add ottoext dependency

* Add fetch jail test with function

* Add dependencies of fetch from ottoext

* Refactor with regards to PR review

* Refactor with regards to PR review

* Fix syntax errors

* Fix missing return statement
2017-07-13 18:04:47 +07:00
Victor Farazdagi 349103de1a major refactoring: node manager, tx queue, accounts, jail
- node: signals and node reset, fixes #152
- tests update (testify is used)
- node manager refactored, race conditions fixed
- node wrapper has been removed, we rely on go-ethereum node now
- tx queue refactored
- jail refactored
- backend and API introduced
2017-05-24 00:29:20 +03:00
Victor Farazdagi 82fe888853 whisper5: minor fixes 2017-05-16 11:02:34 +03:00
Victor Farazdagi 2f0c93fd3b refactor: linters + recommendations applied, closes #146 2017-05-15 08:19:46 +03:00
Victor Farazdagi ecea845d88 rebase: minor fixes to integrate with Geth 1.6.1 2017-05-03 16:00:36 +03:00
Victor Farazdagi 9a68fd211f whisper: `statusd wnode` sub-command, closes #140 2017-04-28 11:50:12 +03:00
Victor Farazdagi 21344af199 geth, jail: embed static resources, closes #131 2017-04-28 11:50:12 +03:00
Victor Farazdagi 3ce913f661 geth, jail: Whisper ver.5 enabled, tests expanded 2017-04-03 14:57:51 +03:00
Victor Farazdagi 8a96fc18c4 geth/params: stop transforming passed DataDir 2017-03-18 22:48:33 +03:00
Victor Farazdagi 031eeb33b8 geth/params: node settings implemented #116 2017-03-17 17:38:22 +03:00
Victor Farazdagi 34b19e6af9 geth: optimizes tests 2017-03-16 10:40:17 +03:00
Victor Farazdagi 57fb99c4ca jail, params: moved into geth package, refactored 2017-03-16 10:40:17 +03:00