Skip to content

Commit 7cc5bcc

Browse files
JkLondonJkLondon
and
JkLondon
authored
Add parallel and separate process tests for cursor Get with one key (#189)
Co-authored-by: JkLondon <[email protected]>
1 parent 0117c45 commit 7cc5bcc

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

mdbx/cursor_test.go

+87
Original file line numberDiff line numberDiff line change
@@ -1393,6 +1393,93 @@ func TestCursor_Renew(t *testing.T) {
13931393
}
13941394
}
13951395

1396+
func TestCursor_Get_OneKey_Parallel(t *testing.T) {
1397+
env, _ := setup(t)
1398+
1399+
var db DBI
1400+
k := make([]byte, 8)
1401+
binary.BigEndian.PutUint64(k, uint64(1))
1402+
1403+
if err := env.Update(func(txn *Txn) (err error) {
1404+
db, err = txn.OpenRoot(0)
1405+
if err != nil {
1406+
return err
1407+
}
1408+
c, err := txn.OpenCursor(db)
1409+
if err != nil {
1410+
return err
1411+
}
1412+
err = txn.Put(db, k, k, 0)
1413+
if err != nil {
1414+
return err
1415+
}
1416+
1417+
ch := make(chan error)
1418+
go func() {
1419+
_, _, err = c.Get(k, nil, Set)
1420+
if err != nil {
1421+
ch <- err
1422+
}
1423+
ch <- nil
1424+
}()
1425+
err = <-ch
1426+
if err != nil {
1427+
return err
1428+
}
1429+
return nil
1430+
}); err != nil {
1431+
t.Errorf("dbi: %v", err)
1432+
return
1433+
}
1434+
}
1435+
1436+
func TestCursor_Get_OneKey_SeparateProcess(t *testing.T) {
1437+
env, _ := setup(t)
1438+
1439+
var db DBI
1440+
k := make([]byte, 8)
1441+
binary.BigEndian.PutUint64(k, uint64(1))
1442+
1443+
if err := env.Update(func(txn *Txn) (err error) {
1444+
db, err = txn.OpenRoot(0)
1445+
if err != nil {
1446+
return err
1447+
}
1448+
err = txn.Put(db, k, k, 0)
1449+
if err != nil {
1450+
return err
1451+
}
1452+
1453+
return nil
1454+
}); err != nil {
1455+
t.Errorf("dbi: %v", err)
1456+
return
1457+
}
1458+
1459+
if err := env.View(func(txn *Txn) (err error) {
1460+
c, err := txn.OpenCursor(db)
1461+
if err != nil {
1462+
return err
1463+
}
1464+
ch := make(chan error)
1465+
go func() {
1466+
_, _, err = c.Get(k, nil, Set)
1467+
if err != nil {
1468+
ch <- err
1469+
}
1470+
ch <- nil
1471+
}()
1472+
err = <-ch
1473+
if err != nil {
1474+
return err
1475+
}
1476+
return nil
1477+
}); err != nil {
1478+
t.Errorf("dbi: %v", err)
1479+
return
1480+
}
1481+
}
1482+
13961483
func TestCursor_Bind(t *testing.T) {
13971484
env, _ := setup(t)
13981485

0 commit comments

Comments
 (0)