@@ -447,6 +447,19 @@ mod tests {
447447 if finalizers. len ( ) != n as usize {
448448 exceptions += 1 ;
449449 }
450+
451+ // Ensure no nullifies for any finalizers
452+ let nullifies = supervisor. nullifies . lock ( ) . unwrap ( ) ;
453+ let Some ( nullifies) = nullifies. get ( view) else {
454+ continue ;
455+ } ;
456+ for ( _, finalizers) in payloads. iter ( ) {
457+ for finalizer in finalizers. iter ( ) {
458+ if nullifies. contains ( finalizer) {
459+ panic ! ( "should not nullify and finalize at same view" ) ;
460+ }
461+ }
462+ }
450463 }
451464 }
452465
@@ -1039,6 +1052,14 @@ mod tests {
10391052 }
10401053 }
10411054 }
1055+ {
1056+ let nullifies = supervisor. nullifies . lock ( ) . unwrap ( ) ;
1057+ for ( view, participants) in nullifies. iter ( ) {
1058+ if participants. contains ( offline) {
1059+ panic ! ( "view: {}" , view) ;
1060+ }
1061+ }
1062+ }
10421063 {
10431064 let finalizes = supervisor. finalizes . lock ( ) . unwrap ( ) ;
10441065 for ( view, payloads) in finalizes. iter ( ) {
@@ -1195,7 +1216,7 @@ mod tests {
11951216 assert ! ( faults. is_empty( ) ) ;
11961217 }
11971218
1198- // Ensure slow node is never active
1219+ // Ensure slow node is never active (will never process anything fast enough to nullify)
11991220 {
12001221 let notarizes = supervisor. notarizes . lock ( ) . unwrap ( ) ;
12011222 for ( view, payloads) in notarizes. iter ( ) {
@@ -1206,6 +1227,14 @@ mod tests {
12061227 }
12071228 }
12081229 }
1230+ {
1231+ let nullifies = supervisor. nullifies . lock ( ) . unwrap ( ) ;
1232+ for ( view, participants) in nullifies. iter ( ) {
1233+ if participants. contains ( slow) {
1234+ panic ! ( "view: {}" , view) ;
1235+ }
1236+ }
1237+ }
12091238 {
12101239 let finalizes = supervisor. finalizes . lock ( ) . unwrap ( ) ;
12111240 for ( view, payloads) in finalizes. iter ( ) {
0 commit comments