From 8148ccf9b07e8b9f9acebfc740f3114a664f8768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Duchesneau?= Date: Wed, 4 Sep 2024 15:11:25 -0400 Subject: [PATCH] add tests to simulate issue --- test/testdata/complex_substreams/Makefile | 2 +- .../complex-substreams-v0.1.0.spkg | Bin 189566 -> 239859 bytes .../complex_substreams/rust-toolchain.toml | 2 +- test/testdata/complex_substreams/src/lib.rs | 17 +- .../testdata/complex_substreams/src/pb/mod.rs | 32 +- .../src/pb/sf.substreams.rs | 14 + .../src/pb/sf.substreams.v1.rs | 324 ++++++++++++++++++ .../src/pb/sf.substreams.v1.test.rs | 53 +-- .../complex_substreams/substreams.yaml | 9 + test/tier2_integration_test.go | 125 ++++++- 10 files changed, 507 insertions(+), 71 deletions(-) create mode 100644 test/testdata/complex_substreams/src/pb/sf.substreams.rs create mode 100644 test/testdata/complex_substreams/src/pb/sf.substreams.v1.rs diff --git a/test/testdata/complex_substreams/Makefile b/test/testdata/complex_substreams/Makefile index 168d70120..b98596d95 100644 --- a/test/testdata/complex_substreams/Makefile +++ b/test/testdata/complex_substreams/Makefile @@ -19,7 +19,7 @@ gui: build .PHONY: protogen protogen: - substreams protogen ./substreams.yaml --exclude-paths="sf/substreams,google" + substreams protogen ./substreams.yaml --exclude-paths="sf/substreams/sink,sf/substreams/rpc,google" .PHONY: pack pack: build diff --git a/test/testdata/complex_substreams/complex-substreams-v0.1.0.spkg b/test/testdata/complex_substreams/complex-substreams-v0.1.0.spkg index 2fa913b58dcf621e3d7465d0f3c4f4bbb8de1dc1..e4ad8047e38474f6054c05495b3f5c8037eb1768 100644 GIT binary patch literal 239859 zcmd?Sdvs;jUFWHL?nBa%s!DaMY?tLn9m|h;Sfz56omV-DTP3N=va6)xO0rXCV);tC zQpuKdg|6gsg#g`zq)Aw`C+Q?k2Z(!2AP-hUh5$pFUSSApR!BF{9cUOHGi!P!>7FEn zfD^(a37z?Te|zt9jvf^oi0MB@D{xVqk48?a~9J+6i;QKRpCy!XuFQe!x+IMG&8vsvJ(nBxC-POh ztm#;UVrL9w{eIs^?j@o@7aR+jx2U>T%Ok`VK8y> zi==^Tvzdr)CSD|f91#cOu9Ze>y)oxFLcH8{@`ZUSc8#{Plw-=jD@(mD-jnjf^jdv| zCFgka__i6@Le_ziz(+MTtL;wVSh+eJ$IX>SbDrfjy9A%?Oy+S_*#f!NX$^;ISAA8+ zYVB9yl=E(BZsWG8c=uXE>je_Kk#!mp11~tTns4R?wktq!r@B8bx7O=x>n7;RHCL$i#6^UeNx5=OKdb*F8*tGEe8)C)H$&b!?%r3# zyEYBr#dh8I#`u~YL04ZF@84KiTv>0dt*$l1v2OJr_CV4K6&Rh+U?ZC zz&SOkxt7(}#w8Q-WrJ|^#X-<=tXaG24RNR1JKm@Oq_ftc2jYurZ`@(aWUdjmwzOP@ zvE~}{^^K+V=_l(;8x6#>8h87L59wL;VBFR zz`B1$##~Nt-?a1aw(^v=N>dZ=_ETS9IP!W7nX*)b~qKToN&=d*ZIiix)4`e($kgJIDK() zWTK}#1tGNPVprP5$k^2Rp54{G@h;wpdgR>n_=U;Q@v*^k&@O#e8~LuO(b~u`^vgZFFfusFvtr+DyniQwy5kbc@q(1B zu9Mq&!C-CWg}%>5@xC4OlpQ;{FD^S?cH8WcZR{pM#@So<0M{g1 zzfJhN{qf~HVz8z20fF2kLu;wbzse?{O>^reaBsYK8=x00jNep<4_u8nJCZsRiJHz# zB;K2?c}Kxpb|isK!d5c&eV`CuyR%BUBMz^PE6a`bOUDKyMqrSYjvVg{gC_Po4uP?P4wLR|jM0l$frp2t~ zT4-O%TDaF~i@vva#$B?teCO3$;_k=mPu8b{QRQr{E?}IjZ&es$V{LkNsorXt za-(gcvsTr+alIM}Z>leg_gRZ&Hmt?frN*=j!`6W~kJ(<;IPWV6qZVr6P1bCovC>$p zuQ#R}-?PEEr|TW*b%s=BiW=34xVwpEvb^{PaBi;I9=iMFcF~lh;D9Kp2IsLy zPL(GvjEoG|x&o9l&9y2Fwa`on++|ejTxbUJLaf=@X&W=PspbnKu63X%kL=#rSsU!) ztY2|0*26U!vGNUV^9>whqukn*9#^ky@3Fe6$JHxao4q35zj|qPd%L6gc2%luZFsv` z=4*{v=5+4Bb@}Qt(EW?*0PH_I-B_v5z%lhTezXo8w92LRwGFI@+1U|$IcV>yN8`QC zna5`xM@|D~e(|XTx6z=pwns0FA1~PB>JebKF4fmoP5EiT?TrJsyQ=QFbRc`I716r9 zIKLhs9&9QTM4wiH6O!&YrK&-4AFxT&Vri|h1=RqN(q*5f_#wW@@8tk2cg z>$%$fR$F98WZ28B6?m>~%v?zs>zKn+&jM?`WXgHpskl4O_tnnWaXtzOde+eR@W}MU z=p!TOBB*BPMkhz6Yg1#BqvuC@iaEvpfl|jEJ%^+zMp7!@_WN2mpdO|U%Z)14bMe8ICL$5RQD2+G$_x&z>G~{dtHsKeTu-6gxYC^P zm9y<<&{wT)W?u>Xv|*lo(XN;4tMKpo+7;8!J8B&~7*Y8j#Y}>lrJgeXE%#LTZ>6W5 z|913r^54#$xbGdMxZ6w|O&tCi8AP+PKFsXgee%|A+f=^xz>qe#Qx&H!*IY}vT3AX? zu&RxoHD9WpjVq7047PTo-8*^%@vwMI1|FC&;GGXlOplG%&JUie`R3K@~*3;T6jfMJ_+OmO)wVv=Mt&IjW*CeFV@F-}nDb%{$GY3%0oU;R- zO#NovwJ!I}Rl$E%UszaEw*io|Y<8!Qtzz#3aYvwoTxl!N1m(-zwh=mKhaQMX(jXUG z)8@>xSW1*cxWl>@Td51R?*phjo5L7bKOIX=RAfb8Tnz2-wz=8dWZ;~yUrSr|{&pem z2#?vGORM$uO9rldI_fFZtgPo~qbo>SqF?U0%F>dT8ud9do0`kZ%y7$`s3_F_`H+9C zXxjQ(eQ{}1T}^9ettY%lE1!z54{+zuV=>9*2=n+36eQ`aUFRzd`}d)3-=_=lUNb0U zJftz6^Ko2XS!u54$+ex8x3wD>OdHj50D70>ID2zdvawIOP?OoSwohUDyGODJ<-nO~ zEG({g&$BDAdz&L)#Bq-N)8CKD*IeE@yQh0H<09H2w3M8-*CzW&)uit8kp$f(iSwTwYwilr-1uUz`_l zvfP|QWVtogpI~Ap^t`;d4re7etDi)8%_ZxX>g)VRqmxnsgD11il{rKhO0yaPr?Gwt zl=OFW3u3LLIUg`mBr{pwXst8y^*WdeYJH~pWCMtvVsQc&WAOL$a

xF-Aei_sB>$ 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 delta 68969 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
    $nATdJVCkmtnM_!VKI>kE_11pr(WVNcX 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 diff --git a/test/testdata/complex_substreams/rust-toolchain.toml b/test/testdata/complex_substreams/rust-toolchain.toml index ec334c0b1..3516b5750 100644 --- a/test/testdata/complex_substreams/rust-toolchain.toml +++ b/test/testdata/complex_substreams/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.65" +channel = "1.80" components = [ "rustfmt" ] targets = [ "wasm32-unknown-unknown" ] \ No newline at end of file diff --git a/test/testdata/complex_substreams/src/lib.rs b/test/testdata/complex_substreams/src/lib.rs index 70357749f..db0abd21b 100644 --- a/test/testdata/complex_substreams/src/lib.rs +++ b/test/testdata/complex_substreams/src/lib.rs @@ -1,19 +1,18 @@ mod pb; -use crate::pb::test; -use crate::pb::keys; -use substreams::errors::Error; +use crate::pb::sf::substreams::v1::test; use substreams::prelude::*; use substreams::store::{StoreAdd, StoreSetSum, StoreSetSumInt64}; use substreams::store::StoreNew; -use crate::pb::test::Block; -use substreams::{store, Hex}; +use crate::pb::sf::substreams::index::v1::Keys; +use substreams::store; use log::log; +use substreams::errors::Error; #[substreams::handlers::map] -fn index_init_60(blk: test::Block) -> Result { - let mut keys = keys::Keys::default(); +fn index_init_60(blk: test::Block) -> Result { + let mut keys = Keys::default(); if blk.number % 2 == 0 { keys.keys.push("even".to_string()); } else { @@ -28,6 +27,10 @@ fn map_using_index_init_70(blk: test::Block) -> Result { Ok(test::Boolean { result: true }) } +#[substreams::handlers::map] +fn map_hybrid_input_clock_70(_clock: pb::sf::substreams::v1::Clock, input: test::Boolean) -> Result { + Ok(test::Boolean { result: input.result }) +} #[substreams::handlers::store] fn first_store_init_20(block: test::Block, first_store: StoreAddInt64) { diff --git a/test/testdata/complex_substreams/src/pb/mod.rs b/test/testdata/complex_substreams/src/pb/mod.rs index 4ae716078..deedff8a6 100644 --- a/test/testdata/complex_substreams/src/pb/mod.rs +++ b/test/testdata/complex_substreams/src/pb/mod.rs @@ -1,7 +1,25 @@ -#[allow(dead_code)] -#[path = "./sf.substreams.v1.test.rs"] -pub mod test; - -#[allow(dead_code)] -#[path = "./sf.substreams.index.v1.rs"] -pub mod keys; +// @generated +pub mod sf { + // @@protoc_insertion_point(attribute:sf.substreams) + pub mod substreams { + include!("sf.substreams.rs"); + // @@protoc_insertion_point(sf.substreams) + pub mod index { + // @@protoc_insertion_point(attribute:sf.substreams.index.v1) + pub mod v1 { + include!("sf.substreams.index.v1.rs"); + // @@protoc_insertion_point(sf.substreams.index.v1) + } + } + // @@protoc_insertion_point(attribute:sf.substreams.v1) + pub mod v1 { + include!("sf.substreams.v1.rs"); + // @@protoc_insertion_point(sf.substreams.v1) + // @@protoc_insertion_point(attribute:sf.substreams.v1.test) + pub mod test { + include!("sf.substreams.v1.test.rs"); + // @@protoc_insertion_point(sf.substreams.v1.test) + } + } + } +} diff --git a/test/testdata/complex_substreams/src/pb/sf.substreams.rs b/test/testdata/complex_substreams/src/pb/sf.substreams.rs new file mode 100644 index 000000000..ffc5f78da --- /dev/null +++ b/test/testdata/complex_substreams/src/pb/sf.substreams.rs @@ -0,0 +1,14 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FieldOptions { + /// this option informs the `substreams pack` command that it should treat the corresponding manifest value as a path to a file, putting its content as bytes in this field. + /// must be applied to a `bytes` or `string` field + #[prost(bool, tag="1")] + pub load_from_file: bool, + /// this option informs the `substreams pack` command that it should treat the corresponding manifest value as a path to a folder, zipping its content and putting the zip content as bytes in this field. + /// must be applied to a `bytes` field + #[prost(bool, tag="2")] + pub zip_from_folder: bool, +} +// @@protoc_insertion_point(module) diff --git a/test/testdata/complex_substreams/src/pb/sf.substreams.v1.rs b/test/testdata/complex_substreams/src/pb/sf.substreams.v1.rs new file mode 100644 index 000000000..dc86dac23 --- /dev/null +++ b/test/testdata/complex_substreams/src/pb/sf.substreams.v1.rs @@ -0,0 +1,324 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Modules { + #[prost(message, repeated, tag="1")] + pub modules: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="2")] + pub binaries: ::prost::alloc::vec::Vec, +} +/// Binary represents some code compiled to its binary form. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Binary { + #[prost(string, tag="1")] + pub r#type: ::prost::alloc::string::String, + #[prost(bytes="vec", tag="2")] + pub content: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Module { + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + #[prost(uint32, tag="4")] + pub binary_index: u32, + #[prost(string, tag="5")] + pub binary_entrypoint: ::prost::alloc::string::String, + #[prost(message, repeated, tag="6")] + pub inputs: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag="7")] + pub output: ::core::option::Option, + #[prost(uint64, tag="8")] + pub initial_block: u64, + #[prost(message, optional, tag="9")] + pub block_filter: ::core::option::Option, + #[prost(oneof="module::Kind", tags="2, 3, 10")] + pub kind: ::core::option::Option, +} +/// Nested message and enum types in `Module`. +pub mod module { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct BlockFilter { + #[prost(string, tag="1")] + pub module: ::prost::alloc::string::String, + #[prost(oneof="block_filter::Query", tags="2, 3")] + pub query: ::core::option::Option, + } + /// Nested message and enum types in `BlockFilter`. + pub mod block_filter { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Query { + #[prost(string, tag="2")] + QueryString(::prost::alloc::string::String), + /// QueryFromStore query_from_store_keys = 3; + #[prost(message, tag="3")] + QueryFromParams(super::QueryFromParams), + } + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct QueryFromParams { + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct KindMap { + #[prost(string, tag="1")] + pub output_type: ::prost::alloc::string::String, + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct KindStore { + /// The `update_policy` determines the functions available to mutate the store + /// (like `set()`, `set_if_not_exists()` or `sum()`, etc..) in + /// order to ensure that parallel operations are possible and deterministic + /// + /// Say a store cumulates keys from block 0 to 1M, and a second store + /// cumulates keys from block 1M to 2M. When we want to use this + /// store as a dependency for a downstream module, we will merge the + /// two stores according to this policy. + #[prost(enumeration="kind_store::UpdatePolicy", tag="1")] + pub update_policy: i32, + #[prost(string, tag="2")] + pub value_type: ::prost::alloc::string::String, + } + /// Nested message and enum types in `KindStore`. + pub mod kind_store { + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum UpdatePolicy { + Unset = 0, + /// Provides a store where you can `set()` keys, and the latest key wins + Set = 1, + /// Provides a store where you can `set_if_not_exists()` keys, and the first key wins + SetIfNotExists = 2, + /// Provides a store where you can `add_*()` keys, where two stores merge by summing its values. + Add = 3, + /// Provides a store where you can `min_*()` keys, where two stores merge by leaving the minimum value. + Min = 4, + /// Provides a store where you can `max_*()` keys, where two stores merge by leaving the maximum value. + Max = 5, + /// Provides a store where you can `append()` keys, where two stores merge by concatenating the bytes in order. + Append = 6, + /// Provides a store with both `set()` and `sum()` functions. + SetSum = 7, + } + impl UpdatePolicy { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + UpdatePolicy::Unset => "UPDATE_POLICY_UNSET", + UpdatePolicy::Set => "UPDATE_POLICY_SET", + UpdatePolicy::SetIfNotExists => "UPDATE_POLICY_SET_IF_NOT_EXISTS", + UpdatePolicy::Add => "UPDATE_POLICY_ADD", + UpdatePolicy::Min => "UPDATE_POLICY_MIN", + UpdatePolicy::Max => "UPDATE_POLICY_MAX", + UpdatePolicy::Append => "UPDATE_POLICY_APPEND", + UpdatePolicy::SetSum => "UPDATE_POLICY_SET_SUM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UPDATE_POLICY_UNSET" => Some(Self::Unset), + "UPDATE_POLICY_SET" => Some(Self::Set), + "UPDATE_POLICY_SET_IF_NOT_EXISTS" => Some(Self::SetIfNotExists), + "UPDATE_POLICY_ADD" => Some(Self::Add), + "UPDATE_POLICY_MIN" => Some(Self::Min), + "UPDATE_POLICY_MAX" => Some(Self::Max), + "UPDATE_POLICY_APPEND" => Some(Self::Append), + "UPDATE_POLICY_SET_SUM" => Some(Self::SetSum), + _ => None, + } + } + } + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct KindBlockIndex { + #[prost(string, tag="1")] + pub output_type: ::prost::alloc::string::String, + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct Input { + #[prost(oneof="input::Input", tags="1, 2, 3, 4")] + pub input: ::core::option::Option, + } + /// Nested message and enum types in `Input`. + pub mod input { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct Source { + /// ex: "sf.ethereum.type.v1.Block" + #[prost(string, tag="1")] + pub r#type: ::prost::alloc::string::String, + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct Map { + /// ex: "block_to_pairs" + #[prost(string, tag="1")] + pub module_name: ::prost::alloc::string::String, + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct Store { + #[prost(string, tag="1")] + pub module_name: ::prost::alloc::string::String, + #[prost(enumeration="store::Mode", tag="2")] + pub mode: i32, + } + /// Nested message and enum types in `Store`. + pub mod store { + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum Mode { + Unset = 0, + Get = 1, + Deltas = 2, + } + impl Mode { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Mode::Unset => "UNSET", + Mode::Get => "GET", + Mode::Deltas => "DELTAS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNSET" => Some(Self::Unset), + "GET" => Some(Self::Get), + "DELTAS" => Some(Self::Deltas), + _ => None, + } + } + } + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct Params { + #[prost(string, tag="1")] + pub value: ::prost::alloc::string::String, + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Input { + #[prost(message, tag="1")] + Source(Source), + #[prost(message, tag="2")] + Map(Map), + #[prost(message, tag="3")] + Store(Store), + #[prost(message, tag="4")] + Params(Params), + } + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct Output { + #[prost(string, tag="1")] + pub r#type: ::prost::alloc::string::String, + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Kind { + #[prost(message, tag="2")] + KindMap(KindMap), + #[prost(message, tag="3")] + KindStore(KindStore), + #[prost(message, tag="10")] + KindBlockIndex(KindBlockIndex), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Package { + /// Needs to be one so this file can be used _directly_ as a + /// buf `Image` andor a ProtoSet for grpcurl and other tools + #[prost(message, repeated, tag="1")] + pub proto_files: ::prost::alloc::vec::Vec<::prost_types::FileDescriptorProto>, + #[prost(uint64, tag="5")] + pub version: u64, + #[prost(message, optional, tag="6")] + pub modules: ::core::option::Option, + #[prost(message, repeated, tag="7")] + pub module_meta: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="8")] + pub package_meta: ::prost::alloc::vec::Vec, + /// Source network for Substreams to fetch its data from. + #[prost(string, tag="9")] + pub network: ::prost::alloc::string::String, + #[prost(message, optional, tag="10")] + pub sink_config: ::core::option::Option<::prost_types::Any>, + #[prost(string, tag="11")] + pub sink_module: ::prost::alloc::string::String, + /// image is the bytes to a JPEG, WebP or PNG file. Max size is 2 MiB + #[prost(bytes="vec", tag="12")] + pub image: ::prost::alloc::vec::Vec, + #[prost(map="string, message", tag="13")] + pub networks: ::std::collections::HashMap<::prost::alloc::string::String, NetworkParams>, + #[prost(map="string, string", tag="14")] + pub block_filters: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NetworkParams { + #[prost(map="string, uint64", tag="1")] + pub initial_blocks: ::std::collections::HashMap<::prost::alloc::string::String, u64>, + #[prost(map="string, string", tag="2")] + pub params: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PackageMetadata { + #[prost(string, tag="1")] + pub version: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub url: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub name: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub doc: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ModuleMetadata { + /// Corresponds to the index in `Package.metadata.package_meta` + #[prost(uint64, tag="1")] + pub package_index: u64, + #[prost(string, tag="2")] + pub doc: ::prost::alloc::string::String, +} +/// Clock is a pointer to a block with added timestamp +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Clock { + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + #[prost(uint64, tag="2")] + pub number: u64, + #[prost(message, optional, tag="3")] + pub timestamp: ::core::option::Option<::prost_types::Timestamp>, +} +/// BlockRef is a pointer to a block to which we don't know the timestamp +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BlockRef { + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + #[prost(uint64, tag="2")] + pub number: u64, +} +// @@protoc_insertion_point(module) diff --git a/test/testdata/complex_substreams/src/pb/sf.substreams.v1.test.rs b/test/testdata/complex_substreams/src/pb/sf.substreams.v1.test.rs index 77a281b10..42f631c2c 100644 --- a/test/testdata/complex_substreams/src/pb/sf.substreams.v1.test.rs +++ b/test/testdata/complex_substreams/src/pb/sf.substreams.v1.test.rs @@ -1,4 +1,5 @@ // @generated +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Block { #[prost(string, tag="1")] @@ -6,6 +7,7 @@ pub struct Block { #[prost(uint64, tag="2")] pub number: u64, } +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MapResult { #[prost(uint64, tag="1")] @@ -13,57 +15,10 @@ pub struct MapResult { #[prost(string, tag="2")] pub block_hash: ::prost::alloc::string::String, } +#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Boolean { #[prost(bool, tag="1")] pub result: bool, } -/// Encoded file descriptor set for the `sf.substreams.v1.test` package -pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xc5, 0x05, 0x0a, 0x20, 0x73, 0x66, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x73, 0x66, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x22, 0x2f, 0x0a, 0x05, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x4d, 0x0a, - 0x09, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x21, 0x0a, 0x07, - 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, - 0x50, 0x5a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x66, 0x61, 0x73, 0x74, 0x2f, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x70, 0x62, 0x2f, 0x73, 0x66, 0x2f, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, - 0x3b, 0x70, 0x62, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x74, 0x65, 0x73, - 0x74, 0x4a, 0x8c, 0x03, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x11, 0x01, 0x0a, 0x08, 0x0a, 0x01, - 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1e, - 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x03, 0x00, 0x65, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, - 0x12, 0x03, 0x03, 0x00, 0x65, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x05, 0x00, 0x08, - 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x05, 0x08, 0x0d, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x06, 0x02, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x05, 0x12, 0x03, 0x06, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x06, 0x09, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x06, 0x0e, 0x0f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x07, 0x02, - 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x07, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x07, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x07, 0x12, 0x13, 0x0a, 0x0a, 0x0a, 0x02, 0x04, - 0x01, 0x12, 0x04, 0x0a, 0x00, 0x0d, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, - 0x0a, 0x08, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x0b, 0x02, 0x1a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0b, 0x02, 0x08, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x09, 0x15, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x18, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, - 0x02, 0x01, 0x12, 0x03, 0x0c, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, - 0x12, 0x03, 0x0c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x0c, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0c, 0x16, - 0x17, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x0f, 0x00, 0x11, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x0f, 0x08, 0x0f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, - 0x00, 0x12, 0x03, 0x10, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, - 0x03, 0x10, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x10, - 0x07, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x10, 0x10, 0x11, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -]; -// @@protoc_insertion_point(module) \ No newline at end of file +// @@protoc_insertion_point(module) diff --git a/test/testdata/complex_substreams/substreams.yaml b/test/testdata/complex_substreams/substreams.yaml index 499079099..025e84976 100644 --- a/test/testdata/complex_substreams/substreams.yaml +++ b/test/testdata/complex_substreams/substreams.yaml @@ -35,6 +35,15 @@ modules: output: type: proto:sf.substreams.v1.test.Boolean + - name: map_hybrid_input_clock_70 + kind: map + initialBlock: 70 + inputs: + - source: sf.substreams.v1.Clock + - map: map_using_index_init_70 + output: + type: proto:sf.substreams.v1.test.Boolean + - name: first_store_init_20 kind: store initialBlock: 20 diff --git a/test/tier2_integration_test.go b/test/tier2_integration_test.go index df9771967..cecf4c9ea 100644 --- a/test/tier2_integration_test.go +++ b/test/tier2_integration_test.go @@ -10,6 +10,7 @@ import ( "path/filepath" "testing" + pbsubstreamstest "github.com/streamingfast/substreams/pb/sf/substreams/v1/test" pbindexes "github.com/streamingfast/substreams/storage/index/pb" "google.golang.org/protobuf/proto" @@ -23,6 +24,7 @@ import ( "github.com/streamingfast/substreams/manifest" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/streamingfast/substreams/orchestrator/work" @@ -45,6 +47,7 @@ func TestTier2Call(t *testing.T) { fourthStoreInit52 := hex.EncodeToString([]byte("fourth_store_init_52")) blockIndexInit60 := hex.EncodeToString([]byte("index_init_60")) mapUsingIndexInit70 := hex.EncodeToString([]byte("map_using_index_init_70")) + mapHybridInputClock70 := hex.EncodeToString([]byte("map_hybrid_input_clock_70")) randomIndicesRange := roaring64.New() randomIndicesRange.AddInt(70) @@ -68,6 +71,8 @@ func TestTier2Call(t *testing.T) { expectRemainingFiles []string mapOutputFileToCheck string expectedSkippedBlocks map[uint64]struct{} + + mapOutputFilesToDeepInspectForKeys map[string]map[uint64]any }{ // Complex substreams package : "./testdata/complex_substreams/complex-substreams-v0.1.0.spkg" // Output module : map_output_init_50 @@ -101,6 +106,20 @@ func TestTier2Call(t *testing.T) { thirdStoreInit40 + "/outputs/0000000050-0000000060.output", mapInit50 + "/outputs/0000000050-0000000060.output", }, + mapOutputFilesToDeepInspectForKeys: map[string]map[uint64]any{ + mapInit50 + "/outputs/0000000050-0000000060.output": { + 50: &pbsubstreamstest.MapResult{BlockNumber: 1, BlockHash: "block-50"}, // blockNumber is just used as a counter in this mapper + 51: &pbsubstreamstest.MapResult{BlockNumber: 2, BlockHash: "block-51"}, + 52: &pbsubstreamstest.MapResult{BlockNumber: 3, BlockHash: "block-52"}, + 53: &pbsubstreamstest.MapResult{BlockNumber: 4, BlockHash: "block-53"}, + 54: &pbsubstreamstest.MapResult{BlockNumber: 5, BlockHash: "block-54"}, + 55: &pbsubstreamstest.MapResult{BlockNumber: 6, BlockHash: "block-55"}, + 56: &pbsubstreamstest.MapResult{BlockNumber: 7, BlockHash: "block-56"}, + 57: &pbsubstreamstest.MapResult{BlockNumber: 8, BlockHash: "block-57"}, + 58: &pbsubstreamstest.MapResult{BlockNumber: 9, BlockHash: "block-58"}, + 59: &pbsubstreamstest.MapResult{BlockNumber: 10, BlockHash: "block-59"}, + }, + }, }, // Simple substreams package with initialBlock==0 : "./testdata/simple_substreams_init0/substreams-test-init0-v0.1.0.spkg" @@ -277,6 +296,40 @@ func TestTier2Call(t *testing.T) { mapOutputFileToCheck: mapUsingIndexInit70 + "/outputs/0000000070-0000000080.output", expectedSkippedBlocks: map[uint64]struct{}{75: {}, 77: {}, 78: {}, 79: {}, 80: {}}, }, + // This test checks that a module receiving data from both a filtered map and a Clock + // does not trigger on every block, even when the index is being created in the same run + { + name: "hybrid input with clock and filtered map", + startBlock: 70, + stage: 0, + moduleName: "map_hybrid_input_clock_70", + stateBundleSize: 10, + manifestPath: "./testdata/complex_substreams/complex-substreams-v0.1.0.spkg", + + expectRemainingFiles: []string{ + mapUsingIndexInit70 + "/outputs/0000000070-0000000080.output", + mapHybridInputClock70 + "/outputs/0000000070-0000000080.output", + blockIndexInit60 + "/index/0000000070-0000000080.index", + }, + + mapOutputFileToCheck: mapUsingIndexInit70 + "/outputs/0000000070-0000000080.output", + expectedSkippedBlocks: map[uint64]struct{}{75: {}, 77: {}, 78: {}, 79: {}, 80: {}}, + mapOutputFilesToDeepInspectForKeys: map[string]map[uint64]any{ + mapUsingIndexInit70 + "/outputs/0000000070-0000000080.output": { + 70: &pbsubstreamstest.Boolean{Result: true}, + 71: &pbsubstreamstest.Boolean{Result: true}, + 72: &pbsubstreamstest.Boolean{Result: true}, + 73: &pbsubstreamstest.Boolean{Result: true}, + 74: &pbsubstreamstest.Boolean{Result: true}, + // 75 is skipped + 76: &pbsubstreamstest.Boolean{Result: true}, + // 77 is skipped + // 78 is skipped + // 79 is skipped + // 80 is skipped + }, + }, + }, // Complex substreams package : "./testdata/complex_substreams/complex-substreams-v0.1.0.spkg" // Output module : map_using_index with block filter on even keys @@ -355,6 +408,11 @@ func TestTier2Call(t *testing.T) { if outputFileToCheck != "" { err = checkBlockSkippedInOutputFile(ctx, extendedTempDir, outputFileToCheck, test.expectedSkippedBlocks) } + + for outputFile, expectedKeys := range test.mapOutputFilesToDeepInspectForKeys { + assert.NoError(t, deepInspectOutputFile(ctx, extendedTempDir, outputFile, expectedKeys)) + } + require.NoError(t, err) }) } @@ -386,26 +444,81 @@ func createFile(extendedTempDir string, file string) (*os.File, error) { return createdFile, nil } -func checkBlockSkippedInOutputFile(ctx context.Context, extendedTempDir, checkedFile string, expectedSkippedBlock map[uint64]struct{}) error { +func deepInspectOutputFile(ctx context.Context, extendedTempDir, outputFile string, expectedResults map[uint64]any) error { + outputData, err := readOutputFile(ctx, extendedTempDir, outputFile) + if err != nil { + return err + } + + seenBlocks := make(map[uint64]struct{}) + for _, item := range outputData.Kv { + seenBlocks[item.BlockNum] = struct{}{} + + switch v := expectedResults[item.BlockNum].(type) { + case *pbsubstreamstest.MapResult: + res := pbsubstreamstest.MapResult{} + if err := proto.Unmarshal(item.Payload, &res); err != nil { + return fmt.Errorf("unmarshaling payload at block %d: %w", item.BlockNum, err) + } + + if expectedResults[item.BlockNum] == nil { + return fmt.Errorf("unexpected block number %d", item.BlockNum) + } + if !proto.Equal(&res, v) { + return fmt.Errorf("results do not match for block %d: expected %+v, got %+v", item.BlockNum, expectedResults[item.BlockNum], res) + } + case *pbsubstreamstest.Boolean: + res := pbsubstreamstest.Boolean{} + if err := proto.Unmarshal(item.Payload, &res); err != nil { + return fmt.Errorf("unmarshaling payload at block %d: %w", item.BlockNum, err) + } + + if expectedResults[item.BlockNum] == nil { + return fmt.Errorf("unexpected block number %d", item.BlockNum) + } + if !proto.Equal(&res, v) { + return fmt.Errorf("results do not match for block %d: expected %+v, got %+v", item.BlockNum, expectedResults[item.BlockNum], res) + } + } + } + + for k := range expectedResults { + if _, found := seenBlocks[k]; !found { + return fmt.Errorf("block %d not found in output file", k) + } + } + return nil + +} + +func readOutputFile(ctx context.Context, extendedTempDir, outputFile string) (*pboutput.Map, error) { s, err := dstore.NewStore(extendedTempDir, "zst", "zstd", false) if err != nil { - return fmt.Errorf("initializing dstore for %q: %w", extendedTempDir, err) + return nil, fmt.Errorf("initializing dstore for %q: %w", extendedTempDir, err) } - fileReader, err := s.OpenObject(ctx, checkedFile) + fileReader, err := s.OpenObject(ctx, outputFile) if err != nil { - return fmt.Errorf("opening file %w", err) + return nil, fmt.Errorf("opening file %w", err) } ctn, err := io.ReadAll(fileReader) if err != nil { - return fmt.Errorf("reading store file %w", err) + return nil, fmt.Errorf("reading store file %w", err) } outputData := &pboutput.Map{} if err = outputData.UnmarshalFast(ctn); err != nil { - return fmt.Errorf("unmarshalling file %s: %w", checkedFile, err) + return nil, fmt.Errorf("unmarshalling file %s: %w", outputFile, err) + } + return outputData, nil +} + +func checkBlockSkippedInOutputFile(ctx context.Context, extendedTempDir, checkedFile string, expectedSkippedBlock map[uint64]struct{}) error { + outputData, err := readOutputFile(ctx, extendedTempDir, checkedFile) + if err != nil { + return err } for _, item := range outputData.Kv {