mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-11 08:21:05 +00:00
Remove substrate-in-the-browser (#9541)
* Comment out browser stuff * Remove browser stuff * Remove more wasm transport code * Remove ExtTransport and rework how telemetry initialises. * Change (most) wasm-timer using code to use std::time * Rename CI-job * Aura does not compile for wasm * Remove testing in the browser on CI * Update README * Leave `StreamSink` be * fmt
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
[package]
|
||||
name = "node-browser-testing"
|
||||
version = "3.0.0-dev"
|
||||
authors = ["Parity Technologies <admin@parity.io>"]
|
||||
description = "Tests for the in-browser light client."
|
||||
edition = "2018"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
jsonrpc-core = "18.0.0"
|
||||
serde = "1.0.126"
|
||||
serde_json = "1.0.48"
|
||||
wasm-bindgen = { version = "=0.2.73", features = ["serde-serialize"] }
|
||||
wasm-bindgen-futures = "0.4.18"
|
||||
wasm-bindgen-test = "0.3.18"
|
||||
|
||||
node-cli = { path = "../cli", default-features = false, features = [
|
||||
"browser",
|
||||
], version = "3.0.0-dev" }
|
||||
|
||||
# This is a HACK to make browser tests pass.
|
||||
# enables [`instant/wasm_bindgen`]
|
||||
parking_lot = { version = "0.11.1", features = ["wasm-bindgen"] }
|
||||
@@ -1,67 +0,0 @@
|
||||
// This file is part of Substrate.
|
||||
|
||||
// Copyright (C) 2020-2021 Parity Technologies (UK) Ltd.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//! # Running
|
||||
//! Running this test can be done with
|
||||
//! ```text
|
||||
//! wasm-pack test --firefox --release --headless bin/node/browser-testing
|
||||
//! ```
|
||||
//! or (without `wasm-pack`)
|
||||
//! ```text
|
||||
//! CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER=wasm-bindgen-test-runner WASM_BINDGEN_TEST_TIMEOUT=60 cargo test --target wasm32-unknown-unknown
|
||||
//! ```
|
||||
//! For debug infomation, such as the informant, run without the `--headless`
|
||||
//! flag and open a browser to the url that `wasm-pack test` outputs.
|
||||
//! For more infomation see <https://rustwasm.github.io/docs/wasm-pack/>.
|
||||
|
||||
use jsonrpc_core::types::{Id, MethodCall, Params, Success, Version};
|
||||
use serde::de::DeserializeOwned;
|
||||
use wasm_bindgen::JsValue;
|
||||
use wasm_bindgen_futures::JsFuture;
|
||||
use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure};
|
||||
|
||||
wasm_bindgen_test_configure!(run_in_browser);
|
||||
|
||||
fn rpc_call(method: &str) -> String {
|
||||
serde_json::to_string(&MethodCall {
|
||||
jsonrpc: Some(Version::V2),
|
||||
method: method.into(),
|
||||
params: Params::None,
|
||||
id: Id::Num(1),
|
||||
})
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
fn deserialize_rpc_result<T: DeserializeOwned>(js_value: JsValue) -> T {
|
||||
let string = js_value.as_string().unwrap();
|
||||
let value = serde_json::from_str::<Success>(&string).unwrap().result;
|
||||
// We need to convert a `Value::Object` into a proper type.
|
||||
let value_string = serde_json::to_string(&value).unwrap();
|
||||
serde_json::from_str(&value_string).unwrap()
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
async fn runs() {
|
||||
let mut client = node_cli::start_client(None, "info".into()).unwrap();
|
||||
|
||||
// Check that the node handles rpc calls.
|
||||
// TODO: Re-add the code that checks if the node is syncing.
|
||||
let chain_name: String = deserialize_rpc_result(
|
||||
JsFuture::from(client.rpc_send(&rpc_call("system_chain"))).await.unwrap(),
|
||||
);
|
||||
assert_eq!(chain_name, "Development");
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"goog:chromeOptions": {
|
||||
"args": [
|
||||
"--whitelisted-ips=127.0.0.1"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -92,12 +92,6 @@ frame-benchmarking-cli = { version = "4.0.0-dev", optional = true, path = "../..
|
||||
node-inspect = { version = "0.9.0-dev", optional = true, path = "../inspect" }
|
||||
try-runtime-cli = { version = "0.10.0-dev", optional = true, path = "../../../utils/frame/try-runtime/cli" }
|
||||
|
||||
# WASM-specific dependencies
|
||||
wasm-bindgen = { version = "0.2.73", optional = true }
|
||||
wasm-bindgen-futures = { version = "0.4.18", optional = true }
|
||||
browser-utils = { package = "substrate-browser-utils", path = "../../../utils/browser", optional = true, version = "0.10.0-dev"}
|
||||
libp2p-wasm-ext = { version = "0.29", features = ["websocket"], optional = true }
|
||||
|
||||
[target.'cfg(target_arch="x86_64")'.dependencies]
|
||||
node-executor = { version = "3.0.0-dev", path = "../executor", features = [
|
||||
"wasmtime",
|
||||
@@ -143,13 +137,7 @@ path = "../../../client/cli"
|
||||
optional = true
|
||||
|
||||
[features]
|
||||
default = ["cli"]
|
||||
browser = [
|
||||
"browser-utils",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"libp2p-wasm-ext",
|
||||
]
|
||||
default = [ "cli" ]
|
||||
cli = [
|
||||
"node-executor/wasmi-errno",
|
||||
"node-inspect",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
pkg
|
||||
@@ -1,10 +0,0 @@
|
||||
# How to run this demo
|
||||
|
||||
```sh
|
||||
# If necessary, install wasm-bindgen
|
||||
# The version must match that used when building the browser demo.
|
||||
cargo install --version 0.2.67 wasm-bindgen-cli
|
||||
|
||||
# Run the build script
|
||||
./build.sh
|
||||
```
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
set -e -x
|
||||
cargo +nightly build --release -p node-cli --target wasm32-unknown-unknown --no-default-features --features browser -Z features=itarget
|
||||
wasm-bindgen ../../../../target/wasm32-unknown-unknown/release/node_cli.wasm --out-dir pkg --target web
|
||||
python -m http.server 8000
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB |
@@ -1,39 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
||||
<title>Substrate node</title>
|
||||
<link rel="shortcut icon" href="/favicon.png" />
|
||||
<script type="module">
|
||||
import { start_client, default as init } from './pkg/node_cli.js';
|
||||
|
||||
function log(msg) {
|
||||
document.getElementsByTagName('body')[0].innerHTML += msg + '\n';
|
||||
}
|
||||
|
||||
async function start() {
|
||||
log('Loading WASM');
|
||||
await init('./pkg/node_cli_bg.wasm');
|
||||
log('Fetching chain spec');
|
||||
const chain_spec_response = await fetch("https://raw.githubusercontent.com/paritytech/substrate/master/bin/node/cli/res/flaming-fir.json");
|
||||
const chain_spec_text = await chain_spec_response.text();
|
||||
|
||||
// Build our client.
|
||||
let client = await start_client(chain_spec_text, 'info');
|
||||
log('Client started');
|
||||
|
||||
client.rpcSubscribe('{"method":"chain_subscribeNewHead","params":[],"id":1,"jsonrpc":"2.0"}',
|
||||
(r) => log("New chain head: " + r));
|
||||
|
||||
setInterval(() => {
|
||||
client
|
||||
.rpcSend('{"method":"system_localPeerId","params":[],"id":1,"jsonrpc":"2.0"}')
|
||||
.then((r) => log("Local PeerId: " + r));
|
||||
}, 20000);
|
||||
}
|
||||
|
||||
start();
|
||||
</script>
|
||||
</head>
|
||||
<body style="white-space: pre"></body>
|
||||
</html>
|
||||
@@ -1,57 +0,0 @@
|
||||
// This file is part of Substrate.
|
||||
|
||||
// Copyright (C) 2019-2021 Parity Technologies (UK) Ltd.
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
use crate::chain_spec::ChainSpec;
|
||||
use browser_utils::{browser_configuration, init_logging, set_console_error_panic_hook, Client};
|
||||
use log::info;
|
||||
use wasm_bindgen::prelude::*;
|
||||
|
||||
/// Starts the client.
|
||||
#[wasm_bindgen]
|
||||
pub fn start_client(chain_spec: Option<String>, log_level: String) -> Result<Client, JsValue> {
|
||||
start_inner(chain_spec, log_level).map_err(|err| JsValue::from_str(&err.to_string()))
|
||||
}
|
||||
|
||||
fn start_inner(
|
||||
chain_spec: Option<String>,
|
||||
log_directives: String,
|
||||
) -> Result<Client, Box<dyn std::error::Error>> {
|
||||
set_console_error_panic_hook();
|
||||
init_logging(&log_directives)?;
|
||||
let chain_spec = match chain_spec {
|
||||
Some(chain_spec) => ChainSpec::from_json_bytes(chain_spec.as_bytes().to_vec())
|
||||
.map_err(|e| format!("{:?}", e))?,
|
||||
None => crate::chain_spec::development_config(),
|
||||
};
|
||||
|
||||
let config = browser_configuration(chain_spec)?;
|
||||
|
||||
info!("Substrate browser node");
|
||||
info!("✌️ version {}", config.impl_version);
|
||||
info!("❤️ by Parity Technologies, 2017-2021");
|
||||
info!("📋 Chain specification: {}", config.chain_spec.name());
|
||||
info!("🏷 Node name: {}", config.network.node_name);
|
||||
info!("👤 Role: {:?}", config.role);
|
||||
|
||||
// Create the service. This is the most heavy initialization step.
|
||||
let (task_manager, rpc_handlers) = crate::service::new_light_base(config)
|
||||
.map(|(components, rpc_handlers, _, _, _)| (components, rpc_handlers))
|
||||
.map_err(|e| format!("{:?}", e))?;
|
||||
|
||||
Ok(browser_utils::start_client(task_manager, rpc_handlers))
|
||||
}
|
||||
@@ -34,15 +34,11 @@ pub mod chain_spec;
|
||||
|
||||
#[macro_use]
|
||||
mod service;
|
||||
#[cfg(feature = "browser")]
|
||||
mod browser;
|
||||
#[cfg(feature = "cli")]
|
||||
mod cli;
|
||||
#[cfg(feature = "cli")]
|
||||
mod command;
|
||||
|
||||
#[cfg(feature = "browser")]
|
||||
pub use browser::*;
|
||||
#[cfg(feature = "cli")]
|
||||
pub use cli::*;
|
||||
#[cfg(feature = "cli")]
|
||||
|
||||
@@ -441,12 +441,7 @@ pub fn new_light_base(
|
||||
.clone()
|
||||
.filter(|x| !x.is_empty())
|
||||
.map(|endpoints| -> Result<_, sc_telemetry::Error> {
|
||||
#[cfg(feature = "browser")]
|
||||
let transport = Some(sc_telemetry::ExtTransport::new(libp2p_wasm_ext::ffi::websocket_transport()));
|
||||
#[cfg(not(feature = "browser"))]
|
||||
let transport = None;
|
||||
|
||||
let worker = TelemetryWorker::with_transport(16, transport)?;
|
||||
let worker = TelemetryWorker::new(16)?;
|
||||
let telemetry = worker.handle().new_telemetry(endpoints);
|
||||
Ok((worker, telemetry))
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user