(t *testing.T)
| 161 | } |
| 162 | |
| 163 | func TestRProcessBlockSuccess(t *testing.T) { |
| 164 | tests := []testFields{ |
| 165 | { |
| 166 | name: "noop - no blocks over current height", |
| 167 | steps: []pcFsmMakeStateValues{ |
| 168 | { |
| 169 | currentState: ¶ms{}, event: rProcessBlock{}, |
| 170 | wantState: ¶ms{}, wantNextEvent: noOp, |
| 171 | }, |
| 172 | }, |
| 173 | }, |
| 174 | { |
| 175 | name: "noop - high new blocks", |
| 176 | steps: []pcFsmMakeStateValues{ |
| 177 | { |
| 178 | currentState: ¶ms{height: 5, items: []pcBlock{{"P1", 30}, {"P2", 31}}}, event: rProcessBlock{}, |
| 179 | wantState: ¶ms{height: 5, items: []pcBlock{{"P1", 30}, {"P2", 31}}}, wantNextEvent: noOp, |
| 180 | }, |
| 181 | }, |
| 182 | }, |
| 183 | { |
| 184 | name: "blocks H+1 and H+2 present", |
| 185 | steps: []pcFsmMakeStateValues{ |
| 186 | { |
| 187 | currentState: ¶ms{items: []pcBlock{{"P1", 1}, {"P2", 2}}}, event: rProcessBlock{}, |
| 188 | wantState: ¶ms{height: 1, items: []pcBlock{{"P2", 2}}, blocksSynced: 1}, |
| 189 | wantNextEvent: pcBlockProcessed{height: 1, peerID: "P1"}, |
| 190 | }, |
| 191 | }, |
| 192 | }, |
| 193 | { |
| 194 | name: "blocks H+1 and H+2 present after draining", |
| 195 | steps: []pcFsmMakeStateValues{ |
| 196 | { // some contiguous blocks - on stop check draining is set |
| 197 | currentState: ¶ms{items: []pcBlock{{"P1", 1}, {"P2", 2}, {"P1", 4}}}, |
| 198 | event: scFinishedEv{}, |
| 199 | wantState: ¶ms{items: []pcBlock{{"P1", 1}, {"P2", 2}, {"P1", 4}}, draining: true}, |
| 200 | wantNextEvent: noOp, |
| 201 | }, |
| 202 | { |
| 203 | event: rProcessBlock{}, |
| 204 | wantState: ¶ms{height: 1, items: []pcBlock{{"P2", 2}, {"P1", 4}}, blocksSynced: 1, draining: true}, |
| 205 | wantNextEvent: pcBlockProcessed{height: 1, peerID: "P1"}, |
| 206 | }, |
| 207 | { // finish when H+1 or/and H+2 are missing |
| 208 | event: rProcessBlock{}, |
| 209 | wantState: ¶ms{height: 1, items: []pcBlock{{"P2", 2}, {"P1", 4}}, blocksSynced: 1, draining: true}, |
| 210 | wantNextEvent: pcFinished{tmState: tmstate.State{LastBlockHeight: 1}, blocksSynced: 1}, |
| 211 | }, |
| 212 | }, |
| 213 | }, |
| 214 | } |
| 215 | |
| 216 | executeProcessorTests(t, tests) |
| 217 | } |
| 218 | |
| 219 | func TestRProcessBlockFailures(t *testing.T) { |
| 220 | tests := []testFields{ |
nothing calls this directly
no test coverage detected
searching dependent graphs…