(t *testing.T)
| 485 | } |
| 486 | |
| 487 | func 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{}) |
nothing calls this directly
no test coverage detected
searching dependent graphs…