(op clientv3.Op)
| 317 | } |
| 318 | |
| 319 | func (m *mockKV) doTxn(op clientv3.Op) (clientv3.OpResponse, error) { |
| 320 | cmps, thens, elses := op.Txn() |
| 321 | succeeded := m.evalCmps(cmps) |
| 322 | |
| 323 | var toRun []clientv3.Op |
| 324 | if succeeded { |
| 325 | toRun = thens |
| 326 | } else { |
| 327 | toRun = elses |
| 328 | } |
| 329 | |
| 330 | responses := make([]*etcdserverpb.ResponseOp, 0, len(toRun)) |
| 331 | for _, o := range toRun { |
| 332 | _, err := m.doInternal(o) |
| 333 | if err != nil { |
| 334 | panic(fmt.Sprintf("unexpected error running transaction: %s", err)) |
| 335 | } |
| 336 | |
| 337 | responses = append(responses, &etcdserverpb.ResponseOp{Response: nil}) |
| 338 | } |
| 339 | |
| 340 | res := clientv3.TxnResponse{ |
| 341 | Succeeded: succeeded, |
| 342 | Responses: responses, |
| 343 | } |
| 344 | return res.OpResponse(), nil |
| 345 | } |
| 346 | |
| 347 | // matchingKeys returns the keys of elements that match the given Op |
| 348 | func (m *mockKV) matchingKeys(op clientv3.Op, kvps map[string]mvccpb.KeyValue) []string { |
no test coverage detected