Commit Graph

249 Commits

Author SHA1 Message Date
emizzle dcdcfb5b32
Minor fixes for rebase 2018-10-25 13:04:33 +02:00
emizzle f5c77b1416
Process logs API refactor
There are three separate instances of process log APIs: embark logs, blockchain logs (when in standalone mode), and child process logs (storage, communication, blockchain, etc). Each one was repeating the implementation of creating a process log API endpoint. This commit centralises the API declaration by using the class `ProcessLogsApi`.

`ProcessLogsApi` is started for all three components mentioned above: blockchain (in standalone) in the `BlockchainListener` module, embark in the `EmbarkListener` module, and for all child processes in the `ProcessLauncher`.

These listeners have two functions:
1. Create the process logs API endpoints for `get` and `ws`, and
2. Ensure that all logs are logged through the `LogHandler`, which normalises the output of the log and ensures each log has a timestamp and id (used in the cockpit for log ordering).

Also, this commit moved the pipeline in to a module, so that the `embark` object could be passed to the `ProcessLogsApi` (to be used for registering API endpoints).
2018-10-25 13:04:28 +02:00
emizzle 728713a183
Embark blockchain logs when running standalone
When running `embark blockchain` followed by `embark run` previously, logs generated in the standalone `embark blockchain` process were black boxed and not accessible to the main Embark process.

This is fixed by creating a client IPC connection in the `embark blockchain` process that connects to the IPC server connection running in `embark run`. The connection is made by way of polling `ipc.connect` and continues polling even after a connection is made in case `embark run` is killed and restarted without restarting `embark blockchain`.

`LogHandler` was introduced to extrapolate functionality used in `ProcessLauncher` that needed to also be used in the standalone blockchain process. It also caps the number of logs that are stored in memory per process by a constant value defined in `constants.json`.

A `blockchain_listener` was module was created (and run inside of `embark run`) that listens for logs emitted by the `embark blockchain` client IPC and runs them through the `LogHandler`. Additionally, this module registers the API endpoints needed to handle requests for blockchain process logs in the cockpit (which were 404’ing before).

# Conflicts:
#	lib/modules/blockchain_process/blockchain.js
2018-10-25 12:51:43 +02:00
Iuri Matias 1d6da99e8f display last error found
display last line on tx

fix debugger call

listen to source event only after jumping to the end

keep track of last tx; add minimal debug feature; fix ast issue

initial debugger apis & ui integration

prevent crash when step is out of bounds; send all all available data in websocket

add debugger commands

fix line number tracking in editor; toggle breakpoints

replace timeouts with callbacks

add debugger manager & refactor

refactor debugger api

refactor cmd line debugger

reduce debugger decoupling

reduce debugger decoupling

fix debug buttons

trigger source update so api triggers ws event to update source location

move locals and contracts vars to a json view

improve debugger icons

simplify debugger data

update debug package

add command handler to get a contract given a tx; update debugger so it can get a contract by its tx instead of tracking latest txs only

update debugger package
2018-10-23 18:27:40 -04:00
Jonathan Rainville c201b6e491 fix ens with no registration 2018-10-23 11:59:43 -04:00
Pascal Precht 853ab2d855
fix: make code compile again after rebase 2018-10-23 11:26:15 +02:00
Iuri Matias b06d224883
fix services & processes; improve UI 2018-10-23 11:11:58 +02:00
emizzle d4d7e3b8ac
Addressed PR comments
*Console.js*
- Moved `DEFAULT_PROCESS` const to outside of the `Console` class (but inside the module).
- Removed `(` and `)` from `.filter` in `getProcessLogs()`.
- Updated comments

*logger.js*
- Moved `dateFormat` and `logRegex` to constants outside of `Logger` class
- Moved the `parseLogFile` method inside of the `Logger` class (ES6 style)
- Added a log limit to the `parseLogFile` method
- Added the log path to the constants file and used inside of `Logger`

*cmd_controller.js*
- Defaulted `this.context` to `[constants.context.any]` in the constructor.
- Changed `’embark’` to split modules`coreProcess` and `loggerApi`.

*engine.js*
- Changed `’embark’` to split modules`coreProcess` and `loggerApi`.
2018-10-23 10:57:04 +02:00
emizzle 0760965bda
Overwrite log file so .embark doesn’t bloat
The embark log file is being overwritten each time embark is run. There is a separate log file for each context, so that running, for example, `embark run` then `embark console` doesn’t get the `run` log overwritten with the `console` log.
2018-10-23 10:54:35 +02:00
emizzle 7de72cb474
Addressed PR feedback
- Created an “embark” module so that an “embark” process could be registered in the correct way. This service is only used on `embark run` (can be extended to other commands if needed).

- extracted “embark” to a const `DEFAULT_PROCESS` param in the `Console` component.

- extracted commands result rendering to it’s own function to keep the `renderTabs` function from getting cluttered

- Added sorting of logs by timestamp

- Added milliseconds to the log file data (which helps in sorting log messages).
2018-10-23 10:53:25 +02:00
emizzle 42cc9b559f
Fills embark logs tabs with existing embark logs
A logfile is now generated by default, in the format `.embark/embark-log__YYYY-MM-DD_HH-mm-ss.log`.

When the home tab is loaded, the process logs are fetched for all the processes. The list of processes returned now includes `embark`, and when `/embark-api/process-logs/embark` is fetched, the logFile is parsed and an array of log messages are returned.
2018-10-23 10:52:26 +02:00
Richard Ramos 2c0644b5cb
Changed scaffolding to service 2018-10-23 10:50:37 +02:00
emizzle 25297027c8
Moved ‘authenticator’ module startup to console service 2018-10-23 10:45:51 +02:00
Jonathan Rainville 422a98e172
add basic authentication 2018-10-23 10:41:22 +02:00
Jonathan Rainville 3a6ed745f6
add transactionTracker to track transactions and their time 2018-10-23 10:38:13 +02:00
Iuri Matias 7e96eb661e
define api for profiler 2018-10-23 10:27:39 +02:00
Anthony Laibe 7df9ae66f9
Add blockchain account endpoint 2018-10-23 10:22:37 +02:00
Iuri Matias 4e30ddeb1b
fix rebase issues 2018-10-23 10:21:39 +02:00
Iuri Matias 30f25ef389
clean up 2018-10-23 10:14:03 +02:00
Iuri Matias bae3ee884d
move code generator to a module 2018-10-23 10:14:03 +02:00
Iuri Matias f873a26caf
fixes due to bad rebase 2018-10-23 09:57:47 +02:00
Iuri Matias f02de020de
fixes due to bad rebase 2018-10-23 09:57:47 +02:00
Iuri Matias db7f3d39d3
first stab at refactor blockchain launcher 2018-10-23 09:55:10 +02:00
Iuri Matias 8ed808a101
fixes due to bad rebase 2018-10-23 09:47:41 +02:00
Iuri Matias c4ea6abc4b
fixes due to bad rebase 2018-10-23 09:42:59 +02:00
Iuri Matias 2e3102444d
fixes due to bad rebase 2018-10-23 09:42:58 +02:00
Iuri Matias 4406dddf1e
first stab at refactor blockchain launcher 2018-10-23 09:39:02 +02:00
Jonathan Rainville b6d89d9001
hotfix: fix empty assets array 2018-10-22 20:26:01 +02:00
emizzle 7c9d90090a
Replaced async.queue with async.cargo
Cargo in fact, bundles up subsequent tasks in to an array, so any tasks that are not immediately run get bundled in to another run later. This helps when lots of changes have been made in a short period of time.
2018-10-22 19:54:49 +02:00
emizzle e788b7d3d4
Reduce async.queue concurrency to 3
Due to a process being spawned for every pipeline run, concurrency should remain around 3 to keep number of child processes from running away and allowing the CPU to stay on top.
2018-10-22 19:54:49 +02:00
emizzle 91e5e9c990
Do not run webpack for file changes that do not need webpack
For file changes that do not require a webpack run, ie HTML, the assets will still be copied to the output directory, but webpack will not run (as it’s too slow).
2018-10-22 19:54:48 +02:00
Jonathan Rainville ac9dbdd1d6
conflict in test 2018-10-22 19:54:46 +02:00
Jonathan Rainville ca3aea7923
BROKEN: solc doesnt load 2018-10-22 19:54:45 +02:00
Jonathan Rainville e8574f33eb
conflict in run_tests 2018-10-22 19:54:44 +02:00
Subramanian Venkatesan f686fec74a
ens resolve 2018-10-22 19:53:50 +02:00
Giuseppe Bertone 81e798c89c
Add support for Parity
Addons
 - New chain initialization and genesis management
 - Option to choose client to use
 - Option to "ping forever" for Geth
 - Creation and unlock of accounts at client's start
 - Utility to fund accounts with ethers
 - Miner settings inside the ethereum client
 - Workaround to CORS problem: origin is now http://embark
 - Several double callback's checks

Updates
 - Boilerplate, templates, configuration files and demo stuff
 - Messages and i18n strings
 - Tests

Fixes
 - Geth client now uses miner.gastarget instead of the deprecated targetGasLimit
 - Workaround for shh_version with Parity

Reworks of other PRs into the new code
 - Included delayed proxy
 - Send ready only when the proxy is started
 - Start HTTP and WS proxies individually
 - Async setupProxy
 - Fixed datadir for GethMiner
2018-10-22 19:53:49 +02:00
Pascal Precht 80c80e9beb
fix(commands/build): don't start blockchain node when `--contracts` is used
Prior to this commit `$ embark build --contracts` spinned up a blockchain node
which is not necessary as `--contracts` can be seen as a "compile only" option.

This commit ensures we don't start any web3 services with `--contracts` is used.
2018-10-22 19:40:52 +02:00
Pascal Precht 71e92358a8
feat(modules/watcher): introduce watcher plugin module
As part of a bigger refactoring to make Embark's build pipeline pluggable,
this commit moves the watcher into its own plugin module so it can be
consumed via Embark's event bus.

It also introduces new command handlers for all watcher related APIs respectively:

- watcher:start
- watcher:stop
- watcher:restart
2018-10-22 19:35:58 +02:00
Pascal Precht a0ef234fea
feat(modules/pipeline): move pipeline into its own module plugin
This is the first step of refactoring Embark's pipeline abstraction into
dedicated plugin modules that take advantage of Embark's event system.

With this commit we're moving `Pipeline` into `lib/modules/pipeline` and
introduce a new command handler `pipeline:build`. Embark's engine now
requests builds via this command handler.

Notice that `Watch` still lives in `lib/pipeline` as this is a step-by-step
refactoring to reduce chances of introducing regressions.
2018-10-22 19:35:58 +02:00
Anthony Laibe dd8c6b9a35
Add missing config
The configuration for test is not passed via the engine
2018-10-22 19:25:16 +02:00
Michael Bradley, Jr c360975e8f webServer svc doesn't need to handle cli opts (handled in core/config) 2018-09-17 17:59:52 -05:00
Anthony Laibe 1b242baefd No webserver and no ipc server on console 2018-09-13 09:19:57 +01:00
Subramanian Venkatesan fe0bbc3559 changes from the code review 2018-09-10 22:38:17 +05:30
Subramanian Venkatesan 53de6dcb19 Fixes to npm command parsing 2018-09-10 16:19:37 +05:30
Subramanian Venkatesan cb751b5213 install npm package using shell.js 2018-09-10 14:01:36 +05:30
Subramanian Venkatesan 74f0d05ca0 Plugin Command 2018-09-09 23:07:55 +05:30
Anthony Laibe c92f6f8865 Fix dynamic IPC 2018-09-05 10:40:37 +01:00
Michael Bradley, Jr 1d38af1f58 expose buildDir to webserver in same manner as its done for pipeline 2018-09-03 10:17:45 -05:00
Iuri Matias a1c2d7e77a
Merge pull request #756 from embark-framework/feature/console-ipc-server-client
Console can be a client or server ipc
2018-08-31 07:58:55 -04:00
Iuri Matias 46076c8d4e
Merge pull request #751 from embark-framework/feature/embarkjs-console
Feature/embarkjs console
2018-08-31 07:46:54 -04:00