github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/kv/kvnemesis/doc.go (about) 1 // Copyright 2020 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 // Package kvnemesis exercises the KV api with random traffic and then validates 12 // that the observed behaviors are consistent with our guarantees. 13 // 14 // A set of Operations are generated which represent usage of the public KV api. 15 // These include both "workload" operations like Gets and Puts as well as 16 // "admin" operations like rebalances. These Operations can be handed to an 17 // Applier, which runs them against the KV api and records the results. 18 // 19 // Operations do allow for concurrency (this testing is much less interesting 20 // otherwise), which means that the state of the KV map is not recoverable from 21 // _only_ the input. TODO(dan): We can use RangeFeed to recover the exact KV 22 // history. This plus some Kyle magic can be used to check our transactional 23 // guarantees. 24 // 25 // TODO 26 // - Validate read only transactions 27 // - CPut/InitPut/Increment/Delete 28 // - DeleteRange/ClearRange/RevertRange/Scan/ReverseScan 29 // - TransferLease 30 // - ExportRequest 31 // - AddSSTable 32 // - Root and leaf transactions 33 // - GCRequest 34 // - Protected timestamps 35 package kvnemesis