MCPcopy Create free account
hub / github.com/couchbase/moss / TestIteratorSingleDone

Function TestIteratorSingleDone

iterator_test.go:487–584  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

485}
486
487func TestIteratorSingleDone(t *testing.T) {
488 tmpDir, _ := ioutil.TempDir("", "mossStore")
489 defer os.RemoveAll(tmpDir)
490
491 store, m, err := OpenStoreCollection(tmpDir,
492 StoreOptions{}, StorePersistOptions{CompactionConcern: CompactionForce})
493 if err != nil || m == nil || store == nil {
494 t.Errorf("expected open empty store collection to work")
495 }
496 defer m.Close()
497 defer store.Close()
498
499 mc := m.(*collection)
500
501 setVal := func(s string) {
502 b, err2 := m.NewBatch(0, 0)
503 if err2 != nil || b == nil {
504 t.Errorf("expected b ok")
505 }
506 b.Set([]byte(s), []byte(s))
507 err2 = m.ExecuteBatch(b, WriteOptions{})
508 if err2 != nil {
509 t.Errorf("expected execute batch ok")
510 }
511 }
512
513 for _, mv := range []string{"a", "b"} {
514 setVal(mv)
515 }
516
517 mc.NotifyMerger("mergeAll", true)
518
519 waitUntilClean := func() error {
520 for {
521 stats, err2 := m.Stats()
522 if err2 != nil {
523 return err2
524 }
525
526 if stats.CurDirtyOps <= 0 &&
527 stats.CurDirtyBytes <= 0 &&
528 stats.CurDirtySegments <= 0 {
529 break
530 }
531
532 time.Sleep(200 * time.Millisecond)
533 }
534
535 return nil
536 }
537
538 waitUntilClean()
539
540 ss, err := m.Snapshot()
541 if err != nil {
542 t.Errorf("expected ss ok")
543 }
544 iter, err := ss.StartIterator([]byte("b"), nil, IteratorOptions{})

Callers

nothing calls this directly

Calls 11

SetMethod · 0.95
OpenStoreCollectionFunction · 0.85
NotifyMergerMethod · 0.80
CloseMethod · 0.65
NewBatchMethod · 0.65
ExecuteBatchMethod · 0.65
StatsMethod · 0.65
SnapshotMethod · 0.65
StartIteratorMethod · 0.65
CurrentMethod · 0.65
NextMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…