@@ -21,10 +21,6 @@ use pb::{
2121 } ,
2222 outcome:: UdfOutcome as UdfOutcomeProto ,
2323} ;
24- #[ cfg( any( test, feature = "testing" ) ) ]
25- use proptest:: prelude:: Arbitrary ;
26- #[ cfg( any( test, feature = "testing" ) ) ]
27- use proptest:: prelude:: Strategy ;
2824use rand:: Rng ;
2925use value:: {
3026 heap_size:: HeapSize ,
@@ -37,7 +33,10 @@ use crate::{
3733} ;
3834
3935#[ derive( Debug , Clone ) ]
40- #[ cfg_attr( any( test, feature = "testing" ) , derive( PartialEq ) ) ]
36+ #[ cfg_attr(
37+ any( test, feature = "testing" ) ,
38+ derive( proptest_derive:: Arbitrary , PartialEq )
39+ ) ]
4140pub struct UdfOutcome {
4241 pub path : CanonicalizedComponentFunctionPath ,
4342 pub arguments : ConvexArray ,
@@ -59,63 +58,9 @@ pub struct UdfOutcome {
5958
6059 pub syscall_trace : SyscallTrace ,
6160
61+ #[ cfg_attr( any( test, feature = "testing" ) , proptest( value = "None" ) ) ]
6262 pub udf_server_version : Option < semver:: Version > ,
63- }
64-
65- #[ cfg( any( test, feature = "testing" ) ) ]
66- impl Arbitrary for UdfOutcome {
67- type Parameters = ( ) ;
68-
69- type Strategy = impl Strategy < Value = UdfOutcome > ;
70-
71- fn arbitrary_with ( _args : Self :: Parameters ) -> Self :: Strategy {
72- use proptest:: prelude:: * ;
73- (
74- any :: < CanonicalizedComponentFunctionPath > ( ) ,
75- any :: < ConvexArray > ( ) ,
76- any :: < InertIdentity > ( ) ,
77- any :: < [ u8 ; 32 ] > ( ) ,
78- any :: < bool > ( ) ,
79- any :: < UnixTimestamp > ( ) ,
80- any :: < bool > ( ) ,
81- any :: < bool > ( ) ,
82- any :: < LogLines > ( ) ,
83- any :: < QueryJournal > ( ) ,
84- any :: < Result < JsonPackedValue , JsError > > ( ) ,
85- any :: < SyscallTrace > ( ) ,
86- )
87- . prop_map (
88- |(
89- path,
90- arguments,
91- identity,
92- rng_seed,
93- observed_rng,
94- unix_timestamp,
95- observed_time,
96- observed_identity,
97- log_lines,
98- journal,
99- result,
100- syscall_trace,
101- ) | Self {
102- path,
103- arguments,
104- identity,
105- rng_seed,
106- observed_rng,
107- unix_timestamp,
108- observed_time,
109- observed_identity,
110- log_lines,
111- journal,
112- result,
113- syscall_trace,
114- // Ok to not generate semver::Version because it is not serialized anyway
115- udf_server_version : None ,
116- } ,
117- )
118- }
63+ pub memory_in_mb : u64 ,
11964}
12065
12166impl HeapSize for UdfOutcome {
@@ -148,6 +93,7 @@ impl TryFrom<UdfOutcome> for UdfOutcomeProto {
14893 result,
14994 syscall_trace,
15095 udf_server_version : _,
96+ memory_in_mb,
15197 } : UdfOutcome ,
15298 ) -> anyhow:: Result < Self > {
15399 let result = match result {
@@ -166,6 +112,7 @@ impl TryFrom<UdfOutcome> for UdfOutcomeProto {
166112 } ) ,
167113 syscall_trace : Some ( syscall_trace. try_into ( ) ?) ,
168114 observed_identity : Some ( observed_identity) ,
115+ memory_in_mb,
169116 } )
170117 }
171118}
@@ -195,6 +142,7 @@ impl UdfOutcome {
195142 syscall_trace : SyscallTrace :: new ( ) ,
196143 udf_server_version,
197144 observed_identity : false ,
145+ memory_in_mb : 0 ,
198146 } )
199147 }
200148
@@ -209,6 +157,7 @@ impl UdfOutcome {
209157 result,
210158 syscall_trace,
211159 observed_identity,
160+ memory_in_mb,
212161 } : UdfOutcomeProto ,
213162 path_and_args : ValidatedPathAndArgs ,
214163 identity : InertIdentity ,
@@ -249,6 +198,7 @@ impl UdfOutcome {
249198 udf_server_version,
250199 // TODO(lee): Remove the default once we've pushed all services.
251200 observed_identity : observed_identity. unwrap_or ( true ) ,
201+ memory_in_mb,
252202 } )
253203 }
254204}
0 commit comments