Skip to content

Commit

Permalink
Observe more things (#1224)
Browse files Browse the repository at this point in the history
This adds several new observation types to the test observer. The most
important part is that it now observes the state of the auth manager,
which is reports with two separate values: a (size,hash) pair for the
current auth stack, and a (size,hash) pair for the sum of all the
trackers. I _think_ this is probably the most useful way to eyeball
changes, but @dmkozh should confirm (and maybe give a look at the
recorded observation traces here to see if they make sense to you)
  • Loading branch information
graydon authored Nov 22, 2023
1 parent 8cc4b43 commit e2cc76e
Show file tree
Hide file tree
Showing 334 changed files with 37,400 additions and 37,121 deletions.
42 changes: 42 additions & 0 deletions soroban-env-common/src/hash.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
use crate::{
AddressObject, BytesObject, DurationObject, I128Object, I256Object, I64Object, MapObject,
Object, StringObject, Symbol, SymbolObject, TimepointObject, U128Object, U256Object, U64Object,
Val, VecObject,
};

// These impls exist strictly for use in test observation. Since they do not
// "look through" to the environment they are misleading and potentially
// dangerous to expose for general use.

impl core::hash::Hash for Val {
fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
self.get_payload().hash(state);
}
}

macro_rules! impl_hash_for_wrapper {
($WRAPPER:ident) => {
impl core::hash::Hash for $WRAPPER {
fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
self.as_val().get_payload().hash(state);
}
}
};
}

impl_hash_for_wrapper!(Object);
impl_hash_for_wrapper!(U64Object);
impl_hash_for_wrapper!(I64Object);
impl_hash_for_wrapper!(TimepointObject);
impl_hash_for_wrapper!(DurationObject);
impl_hash_for_wrapper!(U128Object);
impl_hash_for_wrapper!(I128Object);
impl_hash_for_wrapper!(U256Object);
impl_hash_for_wrapper!(I256Object);
impl_hash_for_wrapper!(BytesObject);
impl_hash_for_wrapper!(StringObject);
impl_hash_for_wrapper!(SymbolObject);
impl_hash_for_wrapper!(Symbol);
impl_hash_for_wrapper!(VecObject);
impl_hash_for_wrapper!(MapObject);
impl_hash_for_wrapper!(AddressObject);
2 changes: 2 additions & 0 deletions soroban-env-common/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ mod compare;
mod convert;
mod env;
mod error;
#[cfg(feature = "testutils")]
mod hash;
mod object;
mod option;
mod result;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call strkey_to_address(String(obj#1))": "cpu:1141, mem:64, objs:-/1@bd4c4a65",
" 2 ret strkey_to_address -> Err(Error(Value, InvalidInput))": "cpu:1357",
" 3 call strkey_to_address(String(obj#3))": "cpu:2498, mem:128, objs:-/2@9fd4b6cd",
Expand All @@ -22,5 +22,5 @@
" 20 ret strkey_to_address -> Err(Error(Value, InvalidInput))": "cpu:26782, mem:1272",
" 21 call strkey_to_address(String(obj#21))": "cpu:27923, mem:1336, objs:-/11@cf129ba3",
" 22 ret strkey_to_address -> Err(Error(Value, InvalidInput))": "cpu:28139",
" 23 end": "cpu:28139, mem:1336, prngs:-/-, objs:-/11@cf129ba3, vmem:-, evt:-, store:-/-"
" 23 end": "cpu:28139, mem:1336, prngs:-/-, objs:-/11@cf129ba3, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call address_to_strkey(Address(obj#1))": "cpu:1141, mem:64, objs:-/1@e9e762b2",
" 2 ret address_to_strkey -> Ok(String(obj#3))": "cpu:4515, mem:235, objs:-/2@9bfb5401",
" 3 call strkey_to_address(String(obj#3))": "cpu:4623",
Expand All @@ -10,5 +10,5 @@
" 8 ret strkey_to_address -> Ok(Address(obj#9))": "cpu:15986, mem:743, objs:-/5@a0e5108e",
" 9 call obj_cmp(Address(obj#1), Address(obj#9))": "",
" 10 ret obj_cmp -> Ok(0)": "cpu:16672",
" 11 end": "cpu:16672, mem:743, prngs:-/-, objs:-/5@a0e5108e, vmem:-, evt:-, store:-/-"
" 11 end": "cpu:16672, mem:743, prngs:-/-, objs:-/5@a0e5108e, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call address_to_strkey(Address(obj#1))": "cpu:1141, mem:64, objs:-/1@a8b8cea4",
" 2 ret address_to_strkey -> Ok(String(obj#3))": "cpu:4515, mem:235, objs:-/2@6429a459",
" 3 call strkey_to_address(String(obj#3))": "cpu:4623",
Expand All @@ -10,5 +10,5 @@
" 8 ret strkey_to_address -> Ok(Address(obj#9))": "cpu:15986, mem:743, objs:-/5@54c60c8",
" 9 call obj_cmp(Address(obj#1), Address(obj#9))": "",
" 10 ret obj_cmp -> Ok(0)": "cpu:16672",
" 11 end": "cpu:16672, mem:743, prngs:-/-, objs:-/5@54c60c8, vmem:-, evt:-, store:-/-"
" 11 end": "cpu:16672, mem:743, prngs:-/-, objs:-/5@54c60c8, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 1 end": "cpu:1313281, mem:156225, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-"
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 end": "cpu:1313281, mem:156225, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 1 end": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-"
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 end": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
4 changes: 2 additions & 2 deletions soroban-env-host/observations/test__basic__i64_roundtrip.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call obj_from_i64(9223372036854775807)": "",
" 2 ret obj_from_i64 -> Ok(I64(obj#1))": "cpu:1249, mem:64, objs:-/1@505c85d5",
" 3 call obj_to_i64(I64(obj#1))": "",
" 4 ret obj_to_i64 -> Ok(9223372036854775807)": "cpu:1716",
" 5 end": "cpu:1716, mem:64, prngs:-/-, objs:-/1@505c85d5, vmem:-, evt:-, store:-/-"
" 5 end": "cpu:1716, mem:64, prngs:-/-, objs:-/1@505c85d5, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call vec_new_from_slice(2)": "",
" 2 ret vec_new_from_slice -> Ok(Vec(obj#1))": "cpu:2787, mem:96, objs:-/1@9d1ee4bc",
" 2 ret vec_new_from_slice -> Ok(Vec(obj#1))": "cpu:2787, mem:96, objs:-/1@8af88039",
" 3 call vec_unpack_to_slice(Vec(obj#1), 2)": "",
" 4 ret vec_unpack_to_slice -> Ok(Void)": "cpu:3147",
" 5 end": "cpu:3147, mem:96, prngs:-/-, objs:-/1@9d1ee4bc, vmem:-, evt:-, store:-/-"
" 5 end": "cpu:3147, mem:96, prngs:-/-, objs:-/1@8af88039, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 1 end": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-"
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 end": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
4 changes: 2 additions & 2 deletions soroban-env-host/observations/test__basic__u64_roundtrip.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call obj_from_u64(18446744073709551615)": "",
" 2 ret obj_from_u64 -> Ok(U64(obj#1))": "cpu:1249, mem:64, objs:-/1@ecad9fd5",
" 3 call obj_to_u64(U64(obj#1))": "",
" 4 ret obj_to_u64 -> Ok(18446744073709551615)": "cpu:1716",
" 5 end": "cpu:1716, mem:64, prngs:-/-, objs:-/1@ecad9fd5, vmem:-, evt:-, store:-/-"
" 5 end": "cpu:1716, mem:64, prngs:-/-, objs:-/1@ecad9fd5, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
" 0 begin": "cpu:9996, mem:0, prngs:-/9b4a753, objs:-/-, vmem:-, evt:-, store:-/-",
" 1 end": "cpu:3, mem:3, prngs:-/9b4a753, objs:-/1@e6201d48, vmem:-, evt:-, store:-/-"
" 0 begin": "cpu:9996, mem:0, prngs:-/9b4a753, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 end": "cpu:3, mem:3, prngs:-/9b4a753, objs:-/1@fba13d84, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call bytes_new()": "",
" 2 ret bytes_new -> Ok(Bytes(obj#1))": "cpu:1249, mem:64, objs:-/1@5b7170d7",
" 3 call bytes_put(Bytes(obj#1), U32(0), U32(1))": "",
" 4 ret bytes_put -> Err(Error(Object, IndexBounds))": "cpu:3109, mem:80",
" 5 end": "cpu:3109, mem:80, prngs:-/-, objs:-/1@5b7170d7, vmem:-, evt:-, store:-/-"
" 5 end": "cpu:3109, mem:80, prngs:-/-, objs:-/1@5b7170d7, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call bytes_new_from_slice(4)": "",
" 2 ret bytes_new_from_slice -> Ok(Bytes(obj#1))": "cpu:2785, mem:84, objs:-/1@5311c87f",
" 3 call bytes_slice(Bytes(obj#1), U32(4), U32(4))": "",
Expand All @@ -8,5 +8,5 @@
" 6 ret bytes_new -> Ok(Bytes(obj#5))": "cpu:7143, mem:228, objs:-/3@33e79d49",
" 7 call obj_cmp(Bytes(obj#3), Bytes(obj#5))": "",
" 8 ret obj_cmp -> Ok(0)": "cpu:7825",
" 9 end": "cpu:7825, mem:228, prngs:-/-, objs:-/3@33e79d49, vmem:-, evt:-, store:-/-"
" 9 end": "cpu:7825, mem:228, prngs:-/-, objs:-/3@33e79d49, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call bytes_new_from_slice(4)": "",
" 2 ret bytes_new_from_slice -> Ok(Bytes(obj#1))": "cpu:2785, mem:84, objs:-/1@5311c87f",
" 3 call bytes_slice(Bytes(obj#1), U32(2), U32(1))": "",
" 4 ret bytes_slice -> Err(Error(Object, InvalidInput))": "cpu:3001",
" 5 end": "cpu:3001, mem:84, prngs:-/-, objs:-/1@5311c87f, vmem:-, evt:-, store:-/-"
" 5 end": "cpu:3001, mem:84, prngs:-/-, objs:-/1@5311c87f, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call bytes_new_from_slice(4)": "",
" 2 ret bytes_new_from_slice -> Ok(Bytes(obj#1))": "cpu:2785, mem:84, objs:-/1@5311c87f",
" 3 call bytes_slice(Bytes(obj#1), U32(5), U32(10))": "",
" 4 ret bytes_slice -> Err(Error(Object, IndexBounds))": "cpu:3001",
" 5 end": "cpu:3001, mem:84, prngs:-/-, objs:-/1@5311c87f, vmem:-, evt:-, store:-/-"
" 5 end": "cpu:3001, mem:84, prngs:-/-, objs:-/1@5311c87f, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call bytes_new()": "",
" 2 ret bytes_new -> Ok(Bytes(obj#1))": "cpu:1249, mem:64, objs:-/1@5b7170d7",
" 3 call bytes_push(Bytes(obj#1), U32(0))": "",
Expand Down Expand Up @@ -140,5 +140,5 @@
" 138 ret bytes_append -> Ok(Bytes(obj#125))": "cpu:201136, mem:6172, objs:-/63@8405b0bb",
" 139 call obj_cmp(Bytes(obj#119), Bytes(obj#125))": "",
" 140 ret obj_cmp -> Ok(0)": "cpu:201819",
" 141 end": "cpu:201819, mem:6172, prngs:-/-, objs:-/63@8405b0bb, vmem:-, evt:-, store:-/-"
" 141 end": "cpu:201819, mem:6172, prngs:-/-, objs:-/63@8405b0bb, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
20 changes: 10 additions & 10 deletions soroban-env-host/observations/test__bytes__bytes_xdr_roundtrip.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vmem:-, evt:-, store:-/-",
" 0 begin": "cpu:0, mem:0, prngs:-/-, objs:-/-, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-",
" 1 call serialize_to_bytes(U64(5))": "",
" 2 ret serialize_to_bytes -> Ok(Bytes(obj#1))": "cpu:3250, mem:136, objs:-/1@85c2c81e",
" 3 call deserialize_from_bytes(Bytes(obj#1))": "",
Expand All @@ -16,25 +16,25 @@
" 14 ret serialize_to_bytes -> Ok(Bytes(obj#7))": "cpu:16648, mem:584, objs:-/4@57253ac0",
" 15 call deserialize_from_bytes(Bytes(obj#7))": "",
" 16 ret deserialize_from_bytes -> Ok(True)": "cpu:17865, mem:608",
" 17 call serialize_to_bytes(Vec(obj#9))": "cpu:20652, mem:704, objs:-/5@1f74d424",
" 18 ret serialize_to_bytes -> Ok(Bytes(obj#11))": "cpu:30778, mem:1122, objs:-/6@dbba45df",
" 17 call serialize_to_bytes(Vec(obj#9))": "cpu:20652, mem:704, objs:-/5@98b9eefb",
" 18 ret serialize_to_bytes -> Ok(Bytes(obj#11))": "cpu:30778, mem:1122, objs:-/6@865daf10",
" 19 call deserialize_from_bytes(Bytes(obj#11))": "",
" 20 ret deserialize_from_bytes -> Ok(Vec(obj#13))": "cpu:34892, mem:1262, objs:-/7@a6f4eea5",
" 20 ret deserialize_from_bytes -> Ok(Vec(obj#13))": "cpu:34892, mem:1262, objs:-/7@cdb61f6e",
" 21 call obj_cmp(Vec(obj#9), Vec(obj#13))": "",
" 22 ret obj_cmp -> Ok(0)": "cpu:35576",
" 23 call serialize_to_bytes(Symbol(stellar))": "",
" 24 ret serialize_to_bytes -> Ok(Bytes(obj#15))": "cpu:40825, mem:1446, objs:-/8@7e95e5d3",
" 24 ret serialize_to_bytes -> Ok(Bytes(obj#15))": "cpu:40825, mem:1446, objs:-/8@57ee9c45",
" 25 call deserialize_from_bytes(Bytes(obj#15))": "",
" 26 ret deserialize_from_bytes -> Ok(Symbol(stellar))": "cpu:42043, mem:1478",
" 27 call serialize_to_bytes(Error(Context, InternalError))": "",
" 28 ret serialize_to_bytes -> Ok(Bytes(obj#17))": "cpu:46292, mem:1632, objs:-/9@216e41c8",
" 28 ret serialize_to_bytes -> Ok(Bytes(obj#17))": "cpu:46292, mem:1632, objs:-/9@653cba4",
" 29 call deserialize_from_bytes(Bytes(obj#17))": "",
" 30 ret deserialize_from_bytes -> Ok(Error(Context, InternalError))": "cpu:47509, mem:1660",
" 31 call deserialize_from_bytes(Bytes(obj#19))": "cpu:48650, mem:1724, objs:-/10@850c8762",
" 31 call deserialize_from_bytes(Bytes(obj#19))": "cpu:48650, mem:1724, objs:-/10@fc756c82",
" 32 ret deserialize_from_bytes -> Err(Error(Value, InvalidInput))": "cpu:49866, mem:1745",
" 33 call deserialize_from_bytes(Bytes(obj#21))": "cpu:51007, mem:1809, objs:-/11@1bb76dde",
" 33 call deserialize_from_bytes(Bytes(obj#21))": "cpu:51007, mem:1809, objs:-/11@2dde7cd9",
" 34 ret deserialize_from_bytes -> Err(Error(Value, UnexpectedType))": "cpu:52223, mem:1829",
" 35 call deserialize_from_bytes(Bytes(obj#23))": "cpu:53364, mem:1893, objs:-/12@d4feb156",
" 35 call deserialize_from_bytes(Bytes(obj#23))": "cpu:53364, mem:1893, objs:-/12@951ece7a",
" 36 ret deserialize_from_bytes -> Err(Error(Value, UnexpectedType))": "cpu:54582, mem:1925",
" 37 end": "cpu:54582, mem:1925, prngs:-/-, objs:-/12@d4feb156, vmem:-, evt:-, store:-/-"
" 37 end": "cpu:54582, mem:1925, prngs:-/-, objs:-/12@951ece7a, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
Loading

0 comments on commit e2cc76e

Please sign in to comment.