MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / TestMergeV2MultiDataStructuresConcurrent

Function TestMergeV2MultiDataStructuresConcurrent

merge_v2_test.go:1801–2015  ·  view source on GitHub ↗

TestMergeV2MultiDataStructuresConcurrent tests merge with all data structures together

(t *testing.T)

Source from the content-addressed store, hash-verified

1799
1800// TestMergeV2MultiDataStructuresConcurrent tests merge with all data structures together
1801func TestMergeV2MultiDataStructuresConcurrent(t *testing.T) {
1802 opts := DefaultOptions
1803 dir := t.TempDir()
1804 opts.Dir = dir
1805 opts.SegmentSize = 256 * 1024 // 256KB
1806 opts.EnableHintFile = true
1807
1808 db, err := Open(opts)
1809 if err != nil {
1810 t.Fatalf("open: %v", err)
1811 }
1812 defer func() {
1813 if db != nil {
1814 _ = db.Close()
1815 }
1816 }()
1817
1818 bucketBTree := "btree-bucket"
1819 bucketList := "list-bucket"
1820 bucketSet := "set-bucket"
1821 bucketZSet := "zset-bucket"
1822
1823 if err := db.Update(func(tx *Tx) error {
1824 if err := tx.NewBucket(DataStructureBTree, bucketBTree); err != nil {
1825 return err
1826 }
1827
1828 if err := tx.NewBucket(DataStructureList, bucketList); err != nil {
1829 return err
1830 }
1831
1832 if err := tx.NewBucket(DataStructureSet, bucketSet); err != nil {
1833 return err
1834 }
1835
1836 if err := tx.NewBucket(DataStructureSortedSet, bucketZSet); err != nil {
1837 return err
1838 }
1839
1840 return nil
1841 }); err != nil {
1842 t.Fatalf("create buckets: %v", err)
1843 }
1844
1845 // Phase 1: Create data across all data structures to trigger multiple files
1846 numKeys := 2000
1847 valueSize := bytes.Repeat([]byte("x"), 200)
1848
1849 for i := 0; i < numKeys; i++ {
1850 if err := db.Update(func(tx *Tx) error {
1851 // BTree key-value
1852 key := fmt.Sprintf("btree-key-%03d", i)
1853 value := append([]byte(fmt.Sprintf("btree-val-%03d-", i)), valueSize...)
1854 if err := tx.Put(bucketBTree, []byte(key), value, Persistent); err != nil {
1855 return err
1856 }
1857
1858 // List operations

Callers

nothing calls this directly

Calls 15

OpenFunction · 0.85
appendFunction · 0.85
UpdateMethod · 0.80
NewBucketMethod · 0.80
MergeMethod · 0.80
WaitMethod · 0.80
ViewMethod · 0.80
CloseMethod · 0.65
PutMethod · 0.45
RPushMethod · 0.45
SAddMethod · 0.45
ZAddMethod · 0.45

Tested by

no test coverage detected