mirror of https://github.com/etcd-io/bbolt.git
Fix quickcheck test for duplicate keys.
parent
381d08dffd
commit
03ba0d1d4d
|
@ -24,6 +24,10 @@ func TestParallelTxs(t *testing.T) {
|
||||||
numReaders = (numReaders % 10) + 1
|
numReaders = (numReaders % 10) + 1
|
||||||
batchSize = (batchSize % 50) + 1
|
batchSize = (batchSize % 50) + 1
|
||||||
|
|
||||||
|
// warn("")
|
||||||
|
// warn("================================================================")
|
||||||
|
// warn("numReaders:", numReaders, "batchSize", batchSize)
|
||||||
|
|
||||||
// Maintain the current dataset.
|
// Maintain the current dataset.
|
||||||
var current testdata
|
var current testdata
|
||||||
|
|
||||||
|
@ -50,7 +54,10 @@ func TestParallelTxs(t *testing.T) {
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
mutex.RLock()
|
mutex.RLock()
|
||||||
local := current
|
local := make(map[string][]byte)
|
||||||
|
for _, item := range current {
|
||||||
|
local[string(item.Key)] = item.Value
|
||||||
|
}
|
||||||
tx, err := db.Begin(false)
|
tx, err := db.Begin(false)
|
||||||
mutex.RUnlock()
|
mutex.RUnlock()
|
||||||
if err == ErrDatabaseNotOpen {
|
if err == ErrDatabaseNotOpen {
|
||||||
|
@ -61,9 +68,9 @@ func TestParallelTxs(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify all data is in for local data list.
|
// Verify all data is in for local data list.
|
||||||
for _, item := range local {
|
for k, v := range local {
|
||||||
value := tx.Bucket("widgets").Get(item.Key)
|
value := tx.Bucket("widgets").Get([]byte(k))
|
||||||
if !assert.NoError(t, err) || !assert.Equal(t, value, item.Value) {
|
if !assert.NoError(t, err) || !assert.Equal(t, value, v, fmt.Sprintf("reader (%p)", tx)) {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
wg.Done()
|
wg.Done()
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
|
@ -94,9 +101,12 @@ func TestParallelTxs(t *testing.T) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// warnf("[writer] BEGIN (%d)", currentBatchSize)
|
||||||
|
|
||||||
// Insert whole batch.
|
// Insert whole batch.
|
||||||
b := tx.Bucket("widgets")
|
b := tx.Bucket("widgets")
|
||||||
for _, item := range batchItems {
|
for _, item := range batchItems {
|
||||||
|
// warnf("[writer] PUT %x: %x", trunc(item.Key, 3), trunc(item.Value, 3))
|
||||||
err := b.Put(item.Key, item.Value)
|
err := b.Put(item.Key, item.Value)
|
||||||
if !assert.NoError(t, err) {
|
if !assert.NoError(t, err) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
|
@ -105,6 +115,7 @@ func TestParallelTxs(t *testing.T) {
|
||||||
|
|
||||||
// Commit and update the current list.
|
// Commit and update the current list.
|
||||||
mutex.Lock()
|
mutex.Lock()
|
||||||
|
// warnf("[writer] COMMIT\n\n")
|
||||||
err = tx.Commit()
|
err = tx.Commit()
|
||||||
current = append(current, batchItems...)
|
current = append(current, batchItems...)
|
||||||
mutex.Unlock()
|
mutex.Unlock()
|
||||||
|
|
Loading…
Reference in New Issue