MCPcopy
hub / github.com/grafana/dskit / doTxn

Method doTxn

kv/etcd/mock.go:319–345  ·  view source on GitHub ↗
(op clientv3.Op)

Source from the content-addressed store, hash-verified

317}
318
319func (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
348func (m *mockKV) matchingKeys(op clientv3.Op, kvps map[string]mvccpb.KeyValue) []string {

Callers 1

doInternalMethod · 0.95

Calls 3

evalCmpsMethod · 0.95
doInternalMethod · 0.95
TxnMethod · 0.80

Tested by

no test coverage detected