Skip to content
  1. Jun 16, 2020
    • Demi Obenour's avatar
      Add IPC support (#6348) · 69070184
      Demi Obenour authored
      This is useful for both security and performance reasons. IPC is faster
      than TCP, and it is subject to OS access controls.
      69070184
  2. Jun 12, 2020
    • André Silva's avatar
      client: use appropriate ExecutionContext for initial sync / regular import (#6180) · 0dc66347
      André Silva authored
      * client: use appropriate ExecutionContext for sync/import
      
      * client: remove dead code
      
      * client: ExecutionContext: distinguish between own and foreign imports
      
      * client: fix cli parameter doc
      
      * Revert "client: ExecutionContext: distinguish between own and foreign imports"
      
      This reverts commit 0fac1152.
      
      * primitives: add docs for ExecutionContext
      
      * cli: execution strategy docs
      
      * cli: use different execution context for importing block on validator
      
      * cli: remove defaults from execution context flags
      0dc66347
  3. Jun 10, 2020
  4. May 26, 2020
    • Bastian Köcher's avatar
      CLI: Make `--dev` conflict with `--chain` (#6146) · 4fd3ee18
      Bastian Köcher authored
      If we are running `--dev` chain, we should forbid the `--chain`
      argument. The `--dev` chain is always special by only having one
      authority etc and some other chain spec is probably not setup for this
      correctly. In the end `--dev` is just a shortcut for `--validator --alice`.
      4fd3ee18
  5. May 22, 2020
    • pscott's avatar
      Add JSON format to import blocks and set it as default (#5816) · 9aa7b8f8
      pscott authored
      
      
      * Add BlockStream Enum and utility fn
      
      * WIP: Modify import closure to work with BlockStream
      
      * Fix trait bounds
      
      * Working prototype
      
      * Revamp block importing
      
      * Add export_import_flow tests
      
      * Add comments and clean code
      
      * Add more comments in the import fn
      
      * Add link code to import function
      
      * Add condition when returning Ready(Ok(()) to make sure we've imported every block
      
      * Add check for imported blocks in JSON case
      
      * Use rest pattern
      
      * Fix compilation error for undeclared variable
      
      * Add polling and waker before pending
      
      * Print read_block_count instead of count
      
      * Simplify binary cli option with structopt
      
      * Update test to reflect changes in CLI api
      
      * Change Stream to take SignedBlock<B> instead of B
      
      * Add comments to BlockStream
      
      * Move out logic to smaller functions for clearer code
      
      * Remove result over import_blocks return type
      
      * Check for error in command output rather than simply checking command exit status
      
      * Revamp export/import/revert testing
      
      * Fix minor typos and formatting errors
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Remove unnecessary if condition in terminating condition
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Explicit error instead of returning it as a string
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Pass BlockStream to log_importing_status_updates and simplify matching arms for block stream
      
      * Use .contains() instead of regex match
      
      * Line break in match block; return future::ready instead of poll_fn
      
      * Update Cargo.lock
      
      * Add check so that queue doesn't grow too big
      
      * Use Iterator instead of Stream
      
      * Remove allow dead_code
      
      * Remove outdated comments
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Return Errors instead of logging them
      
      * Simplify match arms
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Remove check before terminating block import
      
      * Apply suggestions from code review
      
      * Check that queue is not full BEFORE calling
      
      * Revert "Remove check before terminating block import"
      
      This reverts commit 377823c0
      
      .
      
      * Improve unit tests to make sure we actually import blocks
      
      * Remove Unpin implementation for BlockIter
      
      * Add prototype of enum for ImportStates
      
      * Add working prototype for StateMachine
      
      * Add comments for clearer code
      
      * Add sleep before calling Waker when waiting for import queue
      
      * Add Speedometer
      
      * add dbg!(&log) for test debugging
      
      * Fix lines with more than 100 cols
      
      * Fix regex capture for test
      
      * Update regexes to take to capture the whole number
      
      * Rename Cmd to Command
      
      Co-authored-by: default avatarGavin Wood <[email protected]>
      
      * Actually rename Cmd to Command
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarGavin Wood <[email protected]>
      
      * Fix compilation errors for tests
      
      * Fix compilation errors from code review suggestion
      
      * Update bin/node/cli/tests/export_import_flow.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarGavin Wood <[email protected]>
      Co-authored-by: default avatarBenjamin Kampmann <[email protected]>
      9aa7b8f8
  6. May 21, 2020
  7. May 20, 2020
  8. May 18, 2020
  9. May 15, 2020
  10. May 12, 2020
  11. May 06, 2020
    • Igor Matuszewski's avatar
      client: Replace `unsafe_rpc_expose` with an `RpcMethods` enum (#5729) · 24486f52
      Igor Matuszewski authored
      
      
      * client: Replace `unsafe_rpc_expose` with an `RpcMethods` enum
      
      which can be either Default, Safe or Unsafe. The idea is to have the
      following:
      |                       | --rpc-external=false  | --rpc-external=true   |
      |---------------------  |-------------------    |-----------------      |
      | --rpc-methods=Default |                       | unsafe calls denied   |
      | --rpc-methods=Safe    | unsafe calls denied   | unsafe calls denied   |
      | --rpc-methods=Unsafe  |                       |                       |
      Since the previous `unsafe-rpc-expose` option was confusing.
      
      * client: Only warn against exposing externally unsafe RPC method set
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarCecile Tonglet <[email protected]>
      
      * cli: Rephrase doc comment for rpc_methods config
      
      * Improve debuggability of build_spec_works
      
      ...by printing to stderr the stderr of the command. This is normally
      suppressed for succesful tests but not for failing ones - if that's the
      case then it's useful to see the test failure reason inline rather than
      having to execute the command separately ourselves.
      
      * Rename RpcMethods::{Default => Auto} variant
      
      * Update bin/node/cli/tests/build_spec_works.rs
      
      Co-authored-by: default avatarBenjamin Kampmann <[email protected]>
      Co-authored-by: default avatarCecile Tonglet <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      24486f52
  12. Apr 30, 2020
  13. Apr 29, 2020
  14. Apr 28, 2020
    • Web3 Philosopher's avatar
      Move sc-client into sc-service (#5502) · fc6d55c9
      Web3 Philosopher authored
      * Drop client from sc-network and sc-client-db, move LongestChain to sc-client-api
      
      * move leaves, cht, in_mem to sc-client-api, drop client from sc-finality-grandpa
      
      * drop sc-service from sc-rpc
      
      * drop sc-service from sc-consensus-aura
      
      * drop sc-client from manual-seal and babe
      
      * drop sc-client from utils/frame/rpc/system and utils/frame/benchmarking-cli
      
      * drop sc-client from bin/node and bin/node-template
      
      * drop sc-client
      
      * fix tests
      
      * remove check -p sc-client from gitlab.yml
      
      * fix warnings
      
      * fixes ui test
      
      * fix light client tests
      
      * adds associated Client type to AbstractService
      
      * adds UsageProvider to Client
      
      * fixed ui test, again
      
      * tried and failed to get node-cli to compile for wasm
      
      * thanks to tomaka for helping me get node-cli to compile for wasmm
      
      * ui test pls pas 🙏🏾
      
      
      
      * all tests passing 🪄
      
      * no_run documentation code
      
      * rm -f documentation code
      
      * ClientProvider
      
      * fix mega trait
      
      * move LongestChain to sc-consensus, use adds minimal bounds to AbstractService::Client
      
      * adds license to sc-consensus
      
      Co-authored-by: default avatarBenjamin Kampmann <[email protected]>
      fc6d55c9
  15. Apr 27, 2020
  16. Apr 24, 2020
  17. Apr 20, 2020
    • Igor Matuszewski's avatar
      Allow to expose a subset of unsafe RPCs (#5233) · 58d32c13
      Igor Matuszewski authored
      * sc-cli: Use type-safe constructors for RPC/Prometheus interfaces
      
      * service: Simplify rpc handler creation
      
      Could probably be further simplifies once [this][commit] lands.
      
      [commit]: https://github.com/paritytech/jsonrpc/commit/20485387ed06a48f1a70bf4d609a7cde6cf0accf
      
      * service: Streamline some HTTP & WS server start logic
      
      * client: Introduce a simple RPC policy mechanism
      
      * rpc/system: Check unsafe RPCs
      
      * rpc/offchain: Check unsafe RPCs
      
      * rpc/author: Check unsafe RPCs
      58d32c13
  18. Apr 17, 2020
    • Ashley's avatar
      Make network_config_path an Option (#5661) · 2d8f3b42
      Ashley authored
      * Make network_config_path an Option
      
      * Fix network tests
      
      * Use None as the network config path
      
      * Fix cli
      
      * Don't make PathBuf an Option in a cli context
      2d8f3b42
  19. Apr 15, 2020
  20. Apr 07, 2020
    • Cecile Tonglet's avatar
      CLI: refactoring: remove Options from sc_service::Configuration's fields (#5271) · b0efaa2c
      Cecile Tonglet authored
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * Rename IntoConfiguration to CliConfiguration
      
      * Renamed into_configuration to create_configuration
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * Move keystore params to its own module
      
      * Use in-memory keystore even for build-spec
      
      * Enforce proper value for node name
      
      * dev_key_seed
      
      * Telemetry endpoints
      
      * rustfmt
      
      * Converted all RunCmd
      
      * rustfmt
      
      * Added export-blocks
      
      * Missed something
      
      * Removed config_path in NetworkConfiguration (not used)
      
      * Fixed warnings
      
      * public_addresses is used but never set, keeping it
      
      * Merge Configuration.node and NetworkConfiguration.node_name
      
      ...because they are the same thing
      
      * Added: import-blocks
      
      * Adding a proc_macro to help impl SubstrateCli
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * Re-export spec_factory from sc_cli
      
      * Re-added all the commands
      
      * Refactored node_key_params
      
      * Fixed previous refucktoring
      
      * Clean-up and removed full_version()
      
      * Renamed get_is_dev to not confuse with Configuration field
      
      * Fixed sc-cli-derive example
      
      * Fixing tests
      
      * Fixing tests and removing some (will re-add later)
      
      * Fixing more tests
      
      * Removes the need of type parameter
      
      * Converting bin/node and simplifying API
      
      * Converting more
      
      * Converting last command
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * Fixing tests and added default for WasmExecutionMethod
      
      * Fixing stuff
      
      * Fixed something I broke oops
      
      * Update Cargo.lock
      
      * Moving things around
      
      * Convert everything to Result
      
      * Added new macros to simplify the impl of CliConfiguration
      
      * Added a macro to generate CliConfiguration automatically for subcommands
      
      * Revert... too many macros (this one is not really useful)
      
      This reverts commit 9c516dd3
      
      .
      
      * Renamed is_dev to get_is_dev
      
      Good enough for now
      
      * Fixed name roles (this is plural, not singular)
      
      * Clean-up
      
      * Re-export NodeKeyConfig and TelemetryEndpoints from sc_service
      
      * Improve styling/formatting
      
      * Added copyrights
      
      * Added doc and fixed warnings
      
      * Added myself to code owners
      
      * Yes it is needed according to the history
      
      * Revert formatting
      
      * Fixing conflict
      
      * Updated build.rs
      
      * Cargo.lock
      
      * Clean-up
      
      * Update client/cli-derive/Cargo.toml
      
      Co-Authored-By: default avatarSeun Lanlege <[email protected]>
      
      * Fail if using proc_macro and build.rs is not set properly
      
      * Dropped all get_ in front of methods
      
      * Clean-up
      
      * Fixing proc macro missing env var
      
      * Get the configuration inside the Runtime (needed for polkadot)
      
      * Clean-up
      
      * Get is_dev from argument like the others
      
      * Get chain ID instead of chain spec from shared params
      
      * &self is passed to spec_factory/load_spec
      
      * Wrong text
      
      * Fix example
      
      * Officialize macro and made a cool doc
      
      * Renamed spec_factory to load_spec (substrate_cli_configuration)
      
      * Removed not so useful ChainSpec
      
      * Renamed SubstrateCLI to SubstrateCli
      
      * Added changelog for impl_version being full now
      
      * Renamed Runtime to Runner
      
      * Update changelog to show example
      
      * Removed option on database cache size
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * Fix on removal of option
      
      * typo
      
      * Clean-up imports
      
      * Added info in Cargo.toml
      
      * typo
      
      * remarks
      
      * Moved function for build.rs to substrate-build-script-utils
      
      * Fixed example & test of cli-derive
      
      * Moved function for build.rs to substrate-build-script-utils
      
      * Renamed substrate_cli_configuration to substrate_cli oops
      
      It implements SubstrateCli not CliConfiguration!
      
      * Added documentation and wrapper macro
      
      * Removed option on database cache size
      
      * Removed option on database cache size
      
      * Clean-up
      
      * Reduce risk of errors due to typos
      
      * Removed option on database cache size
      
      * Added NOTE as suggested
      
      * Added doc as suggested
      
      * Fixed test
      
      * typo
      
      * renamed runtime to runner
      
      * Fixed weird argument
      
      * More commas
      
      * Moved client/cli-derive to client/cli/derive
      
      * Added 7 tests for the macros
      
      * Improve error message
      
      * Upgrade assert_cmd
      
      * Fixing missing stuff
      
      * Fixed unused import
      
      * Improve SubstrateCli doc
      
      * Applied suggestions
      
      * Fix and clean-up imports
      
      * Started replacing macros WIP
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * Started removing substrate_cli
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * WIP
      
      Forked at: 2afecf81
      Parent branch: origin/master
      
      * WIP
      
      Forked at: 2afecf81
      
      
      Parent branch: origin/master
      
      * fixed bug introduced while refactoring
      
      * Renamed NetworkConfigurationParams to NetworkParams for consistency sake
      
      * Fixed test
      
      * Update client/cli/src/commands/runcmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/runcmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/export_blocks_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/check_block_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update bin/node/cli/src/command.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update bin/node/cli/src/command.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/export_blocks_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Revert "Update client/cli/src/commands/export_blocks_cmd.rs"
      
      This reverts commit 59067769.
      
      * Revert "Update client/cli/src/commands/check_block_cmd.rs"
      
      This reverts commit f705f42b.
      
      * Revert "Update client/cli/src/commands/export_blocks_cmd.rs"
      
      This reverts commit 8d57c055.
      
      * Revert "Update client/cli/src/commands/runcmd.rs"
      
      This reverts commit 93e74cf5.
      
      * Revert "Update client/cli/src/commands/runcmd.rs"
      
      This reverts commit 11d527ba
      
      .
      
      * Update client/cli/src/commands/export_blocks_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/import_blocks_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/purge_chain_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Changed ::sc_cli to $crate in the macro
      
      * fixed tests
      
      * fixed conflicts
      
      * Fixing test
      
      * Update client/cli/src/commands/purge_chain_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/params/pruning_params.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Remove comment as suggested
      
      * Apply suggestion
      
      * Update client/cli/src/commands/purge_chain_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/purge_chain_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/commands/purge_chain_cmd.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update utils/frame/benchmarking-cli/src/command.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/runner.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/runner.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/runner.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/params/pruning_params.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/params/node_key_params.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/params/network_params.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/lib.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Update client/cli/src/config.rs
      
      Co-Authored-By: default avatarBastian Köcher <[email protected]>
      
      * Added doc
      
      * Fixed error introduced after applying suggestion
      
      * Revert "Update client/cli/src/params/pruning_params.rs"
      
      This reverts commit 0574d06a
      
      .
      
      * Print error
      
      * Apply suggestions from code review
      
      * Remove useless Results
      
      * Fixed CI failing on polkadot approval
      
      Co-authored-by: default avatarSeun Lanlege <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      b0efaa2c
  21. Apr 05, 2020
    • pscott's avatar
      Make verbosity level mandatory with telemetry opt (#5057) · 8cee4fe1
      pscott authored
      * Make verbosity level mandatory instead of defaulting to 0 when using --telemetry-url
      
      * Update README docs
      
      * Change TelemetryError struct to enum
      
      * Return TelemetryParsingError instead of a Boxed dyn error
      
      * Replace spaces by tabs
      
      * Add example of expected format for telemetry-url
      
      * Remove UrlParsingError; Call to_string instead of parse for TelemetryEndpoints url
      8cee4fe1
  22. Apr 03, 2020
    • Pierre Krieger's avatar
      Split the Roles in three types (#5520) · 525cb7a1
      Pierre Krieger authored
      
      
      * Split the Roles bitfield in three
      
      * Forgot to include some changes
      
      * Fix cli test
      
      * More test fixes
      
      * Oh God, merging master broke other tests
      
      * Didn't run the doctests
      
      * Address review
      
      * I'm trying to fix the build blindly because it's taking a good hour to compile on my machine
      
      * Address some review
      
      * Also update the peerset's API to make sense
      
      * Fix peerset tests
      
      * Fix browser node
      
      * client: distinguish between local and network authority
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      525cb7a1
  23. Apr 02, 2020
  24. Apr 01, 2020
    • Gavin Wood's avatar
      A few missing emojies (#5490) · 8b304e49
      Gavin Wood authored
      * A few missing emojies
      
      * P2p message emojis
      
      * Add a bit of colour
      
      * format
      
      * Introduce a couple of spaces
      
      * Some spaces
      8b304e49
  25. Mar 27, 2020
  26. Mar 26, 2020
    • pscott's avatar
      TelemetryEndpoints must be valid MutliAddr URL (#5069) · fe23d880
      pscott authored
      
      
      * Check for url validity when creating TelemetryEndpoints
      
      * Update code that used TelemetryEndpoints::new()
      
      * Update commennts that referred to TelemetryEndpoints::new()
      
      * Add tests for telemetry
      
      * Fix typo and fix code in docs
      
      * Return error on failing to override telemetry
      
      * Use expect instead of suppressing errors on must-be-valid telemetry endpoints
      
      * Update telemetry unit tests to use expect instead of unwrap
      
      * Implement custom deserializer for TelemetryEndpoints
      
      * Fix typo
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      fe23d880
  27. Mar 21, 2020
  28. Mar 11, 2020
  29. Mar 05, 2020
    • Gavin Wood's avatar
      Remove substrate-ui.parity.io from CORS whitelist (#5142) · bb1b68d2
      Gavin Wood authored
      The only up-to-date deployment of PolkadotJS apps is currently on https://polkadot.js.org/apps/.
      https://substrate-ui.parity.io is only useful as deliberately kept outdated version of Apps, to be used for projects still on Substrate 1.0
      It cannot be used with the up-to-date chains running the Substrate 2.0 codebase, and probably won't be maintained much longer.
      bb1b68d2
    • Gavin Wood's avatar
      Pass Prometheus `Registry` into `Client` (#5120) · 32d6ed9f
      Gavin Wood authored
      * Add a few metrics to Client
      
      * Improve PrometheusConfig
      
      * Fix client docs
      32d6ed9f
  30. Mar 02, 2020
  31. Feb 25, 2020
    • Cecile Tonglet's avatar
      Fix: CI failing for some CLI tests (#5043) · a64dd527
      Cecile Tonglet authored
      * Initial commit
      
      Forked at: 41bb2193
      Parent branch: origin/master
      
      * Increase killing grace period of CLI tests and display more info
      
      * Use --dev everywhere possible
      
      * Put pruning mode to its own params struct
      
      * Add pruning params to export-blocks command
      
      * Added missing file
      
      * Removed not-dev mode in tests
      
      * Add pruning mode to the revert command
      
      * Decrease killing grace period again
      
      * Move back unsafe_pruning to import_params
      
      * Applied proposed changes
      a64dd527
  32. Feb 21, 2020
    • Cecile Tonglet's avatar
      Add tests & Service's Configuration has optional fields that shouldn't be optional (#4842) · 97ad8026
      Cecile Tonglet authored
      Related to #4776 
      Related to https://github.com/paritytech/polkadot/pull/832
      
      To summarize the changes:
      1. I did not manage to validate with types the service's Configuration. But I did reduce the possibility of errors by moving all the "fill" functions to their respective structopts
      2. I split params.rs to multiple modules: one module params for just CLI parameters and one module commands for CLI subcommands (and RunCmd). Every command and params are in their own file so things are grouped better together and easier to remove
      3. I removed the run and run_subcommand helpers as they are not helping much anymore. Running a command is always a set of 3 commands: 1. init 2. update config 3. run. This still allow the user to change the config before arguments get parsed or right after.
      4. I added tests for all subcommands.
      5. [deleted]
      
      Overall the aim is to improve the situation with the Configuration and the optional parameters, add tests, make the API more consistent and simpler.
      97ad8026