mirror of
https://github.com/pezkuwichain/pezkuwi-telemetry.git
synced 2026-10-20 18:56:21 +00:00
Expose GitHub hash in UI (#604)
* Expose GitHub hash in UI * Prettier:fix * cargo fmt * Update tests * Fix test
This commit is contained in:
1 parent
4a5cd54cd8
commit
71744ade7c
16 files changed
+115
-33
No files matched your search
Generated
+2
-1
@@ -1,6 +1,6 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
@@ -1806,6 +1806,7 @@ dependencies = [
|
||||
"futures",
|
||||
"http",
|
||||
"log",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"soketto",
|
||||
"thiserror",
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
use std::process::Command;
|
||||
|
||||
fn main() {
|
||||
// Fetch the git hash if possible, <unknown> if not.
|
||||
let git_hash = Command::new("git")
|
||||
.args(&["rev-parse", "HEAD"])
|
||||
.output()
|
||||
.map(|output| String::from_utf8(output.stdout).unwrap_or_default())
|
||||
.unwrap_or_default();
|
||||
|
||||
println!("cargo:rustc-env=GIT_HASH={}", git_hash);
|
||||
}
|
||||
@@ -451,7 +451,10 @@ impl InnerLoop {
|
||||
|
||||
// Tell the new feed subscription some basic things to get it going:
|
||||
let mut feed_serializer = FeedMessageSerializer::new();
|
||||
feed_serializer.push(feed_message::Version(32));
|
||||
feed_serializer.push(feed_message::Version(crate::feed_message::FEED_VERSION));
|
||||
feed_serializer.push(feed_message::TelemetryInfo {
|
||||
git_hash: crate::GIT_HASH,
|
||||
});
|
||||
for chain in self.node_state.iter_chains() {
|
||||
feed_serializer.push(feed_message::AddedChain(
|
||||
chain.label(),
|
||||
|
||||
@@ -25,6 +25,10 @@ use common::node_types::{
|
||||
};
|
||||
use serde_json::to_writer;
|
||||
|
||||
/// The version of the feed messages. This should be incremented
|
||||
/// on the backend and frontend when the feed API changes.
|
||||
pub const FEED_VERSION: usize = 33;
|
||||
|
||||
type FeedNodeId = usize;
|
||||
|
||||
pub trait FeedMessage {
|
||||
@@ -123,6 +127,7 @@ actions! {
|
||||
20: StaleNode,
|
||||
21: NodeIOUpdate<'_>,
|
||||
22: ChainStatsUpdate<'_>,
|
||||
23: TelemetryInfo,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
@@ -252,3 +257,8 @@ pub struct ChainStats {
|
||||
pub disk_random_write_score: Ranking<(u32, Option<u32>)>,
|
||||
pub cpu_vendor: Ranking<String>,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct TelemetryInfo {
|
||||
pub git_hash: &'static str,
|
||||
}
|
||||
@@ -41,6 +41,7 @@ use jemallocator::Jemalloc;
|
||||
#[global_allocator]
|
||||
static GLOBAL: Jemalloc = Jemalloc;
|
||||
|
||||
const GIT_HASH: &str = env!("GIT_HASH");
|
||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||
const AUTHORS: &str = env!("CARGO_PKG_AUTHORS");
|
||||
const NAME: &str = "Substrate Telemetry Backend Core";
|
||||
|
||||
@@ -46,6 +46,8 @@ use test_utils::{
|
||||
workspace::{start_server, start_server_debug, CoreOpts, ServerOpts, ShardOpts},
|
||||
};
|
||||
|
||||
const GIT_HASH: &str = env!("GIT_HASH");
|
||||
|
||||
fn polkadot_genesis_hash() -> BlockHash {
|
||||
BlockHash::from_str("0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3")
|
||||
.expect("valid polkadot genesis hash")
|
||||
@@ -69,7 +71,12 @@ async fn e2e_feed_sent_version_on_connect() {
|
||||
let feed_messages = feed_rx.recv_feed_messages().await.unwrap();
|
||||
assert_eq!(
|
||||
feed_messages,
|
||||
vec![FeedMessage::Version(32)],
|
||||
vec![
|
||||
FeedMessage::Version(33),
|
||||
FeedMessage::TelemetryInfo {
|
||||
git_hash: GIT_HASH.to_string()
|
||||
}
|
||||
],
|
||||
"expecting version"
|
||||
);
|
||||
|
||||
@@ -127,7 +134,12 @@ async fn e2e_multiple_feeds_sent_version_on_connect() {
|
||||
for feed_messages in responses {
|
||||
assert_eq!(
|
||||
feed_messages.expect("should have messages"),
|
||||
vec![FeedMessage::Version(32)],
|
||||
vec![
|
||||
FeedMessage::Version(33),
|
||||
FeedMessage::TelemetryInfo {
|
||||
git_hash: GIT_HASH.to_string()
|
||||
}
|
||||
],
|
||||
"expecting version"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ anyhow = "1.0.41"
|
||||
futures = "0.3.15"
|
||||
http = "0.2.4"
|
||||
log = "0.4.14"
|
||||
serde = "1"
|
||||
serde_json = "1.0.64"
|
||||
soketto = "0.7.1"
|
||||
thiserror = "1.0.25"
|
||||
|
||||
@@ -122,6 +122,9 @@ pub enum FeedMessage {
|
||||
node_id: usize,
|
||||
// details: NodeIO, // can't losslessly deserialize
|
||||
},
|
||||
TelemetryInfo {
|
||||
git_hash: String,
|
||||
},
|
||||
/// A "special" case when we don't know how to decode an action:
|
||||
UnknownValue {
|
||||
action: u8,
|
||||
@@ -367,6 +370,18 @@ impl FeedMessage {
|
||||
let (node_id, _node_io): (_, &RawValue) = serde_json::from_str(raw_val.get())?;
|
||||
FeedMessage::NodeIOUpdate { node_id }
|
||||
}
|
||||
// Note: 22: ChainStatsUpdate is not here. Add when we want to test it.
|
||||
// TelemetryInfo
|
||||
23 => {
|
||||
#[derive(serde::Deserialize)]
|
||||
struct TelemetryInfo {
|
||||
git_hash: String,
|
||||
}
|
||||
let val: TelemetryInfo = serde_json::from_str(raw_val.get())?;
|
||||
FeedMessage::TelemetryInfo {
|
||||
git_hash: val.git_hash,
|
||||
}
|
||||
}
|
||||
// A catchall for messages we don't know/care about yet:
|
||||
_ => {
|
||||
let value = raw_val.to_string();
|
||||
|
||||
Reference in new issue
Block a user