ic-query 0.96.0

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
use super::*;

#[test]
fn metric_url_preserves_explicit_bound_and_step() {
    let query = IcMetricQuery::new(
        IcMetricKind::InstructionRate,
        1_700_000_000,
        1_700_003_600,
        300,
    );
    let url =
        metric_url("https://metrics-api.internetcomputer.org/api/v1/", &query).expect("metric URL");

    assert_eq!(url.path(), "/api/v1/instruction-rate");
    assert_eq!(
        url.query(),
        Some("format=json&start=1700000000&end=1700003600&step=300")
    );
}

#[test]
fn metric_decoder_preserves_raw_values_and_ignores_additive_fields() {
    let value = serde_json::json!({
        "total_nodes": [[1_700_000_000_u64, "559"]],
        "up_nodes": [[1_700_000_000_u64, "558"]],
        "future_field": true
    });

    let series =
        decode_metric_series(value, IcMetricKind::IcNodeCount).expect("current metric payload");

    assert_eq!(series.len(), 2);
    assert_eq!(series[0].name, "total_nodes");
    assert_eq!(series[0].observations[0].value, "559");
    assert_eq!(series[1].name, "up_nodes");
}