fuzz

package
v0.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Mask48 = (int64(1) << 48) - 1
)

Variables

View Source
var DefaultConfig = FuzzConfig{
	MaxInitCount: 200,
	ChangeCount:  100,
	QueryCount:   300,
	IterCount:    100,
	IterDistance: 20,
	MaxDelCount:  200,
	MinLen:       500,
	MaxLen:       1000,
}

Functions

func FuzzChange

func FuzzChange(gobt *Tree, cppbt *cb.Tree, addedKeyList []uint64, cfg FuzzConfig, rs randsrc.RandSrc)

func FuzzDelete

func FuzzDelete(gobt *Tree, cppbt *cb.Tree, cfg FuzzConfig, rs randsrc.RandSrc)

func FuzzInit

func FuzzInit(gobt *Tree, cppbt *cb.Tree, addedKeyList *[]uint64, cfg FuzzConfig, rs randsrc.RandSrc)

func FuzzIter

func FuzzIter(gobt *Tree, cppbt *cb.Tree, addedKeyList []uint64, cfg FuzzConfig, rs randsrc.RandSrc)

func FuzzQuery

func FuzzQuery(gobt *Tree, cppbt *cb.Tree, addedKeyList []uint64, cfg FuzzConfig, rs randsrc.RandSrc)

func RunFuzz

func RunFuzz(roundCount int, cfg FuzzConfig, fname string)

Types

type Cmp

type Cmp func(a, b KEY) int

Cmp compares a and b. Return value is:

< 0 if a <  b
  0 if a == b
> 0 if a >  b

type Enumerator

type Enumerator struct {
	// contains filtered or unexported fields
}

Enumerator captures the state of enumerating a tree. It is returned from the Seek* methods. The enumerator is aware of any mutations made to the tree in the process of enumerating it and automatically resumes the enumeration at the proper key, if possible.

However, once an Enumerator returns io.EOF to signal "no more items", it does no more attempt to "resync" on tree mutation(s). In other words, io.EOF from an Enumerator is "sticky" (idempotent).

func (*Enumerator) Close

func (e *Enumerator) Close()

Close recycles e to a pool for possible later reuse. No references to e should exist or such references must not be used afterwards.

func (*Enumerator) Next

func (e *Enumerator) Next() (k KEY, v VALUE, err error)

Next returns the currently enumerated item, if it exists and moves to the next item in the key collation order. If there is no item to return, err == io.EOF is returned.

func (*Enumerator) Prev

func (e *Enumerator) Prev() (k KEY, v VALUE, err error)

Prev returns the currently enumerated item, if it exists and moves to the previous item in the key collation order. If there is no item to return, err == io.EOF is returned.

type FuzzConfig

type FuzzConfig struct {
	MaxInitCount int
	ChangeCount  int
	QueryCount   int
	IterCount    int
	IterDistance int
	MaxDelCount  int
	MinLen       int
	MaxLen       int
}

type KEY

type KEY = uint64

type Tree

type Tree struct {
	// contains filtered or unexported fields
}

Tree is a B+tree.

func TreeNew

func TreeNew() *Tree

TreeNew returns a newly created, empty Tree. The compare function is used for key collation.

func (*Tree) Clear

func (t *Tree) Clear()

Clear removes all K/V pairs from the tree.

func (*Tree) Close

func (t *Tree) Close()

Close performs Clear and recycles t to a pool for possible later reuse. No references to t should exist or such references must not be used afterwards.

func (*Tree) Delete

func (t *Tree) Delete(k KEY) (ok bool)

Delete removes the k's KV pair, if it exists, in which case Delete returns true.

func (*Tree) First

func (t *Tree) First() (k KEY, v VALUE)

First returns the first item of the tree in the key collating order, or (zero-value, zero-value) if the tree is empty.

func (*Tree) Get

func (t *Tree) Get(k KEY) (v VALUE, ok bool)

Get returns the value associated with k and true if it exists. Otherwise Get returns (zero-value, false).

func (*Tree) Last

func (t *Tree) Last() (k KEY, v VALUE)

Last returns the last item of the tree in the key collating order, or (zero-value, zero-value) if the tree is empty.

func (*Tree) Len

func (t *Tree) Len() int

Len returns the number of items in the tree.

func (*Tree) Put

func (t *Tree) Put(k KEY, upd func(oldV VALUE, exists bool) (newV VALUE, write bool)) (oldV VALUE, written bool)

Put combines Get and Set in a more efficient way where the tree is walked only once. The upd(ater) receives (old-value, true) if a KV pair for k exists or (zero-value, false) otherwise. It can then return a (new-value, true) to create or overwrite the existing value in the KV pair, or (whatever, false) if it decides not to create or not to update the value of the KV pair.

tree.Set(k, v) call conceptually equals calling

tree.Put(k, func(KEY, bool){ return v, true })

modulo the differing return values.

func (*Tree) PutNewAndGetOld

func (t *Tree) PutNewAndGetOld(k KEY, newV VALUE) (oldV VALUE, oldVExists bool)

func (*Tree) Seek

func (t *Tree) Seek(k KEY) (e *Enumerator, ok bool)

Seek returns an Enumerator positioned on an item such that k >= item's key. ok reports if k == item.key The Enumerator's position is possibly after the last item in the tree.

func (*Tree) SeekFirst

func (t *Tree) SeekFirst() (e *Enumerator, err error)

SeekFirst returns an enumerator positioned on the first KV pair in the tree, if any. For an empty tree, err == io.EOF is returned and e will be nil.

func (*Tree) SeekLast

func (t *Tree) SeekLast() (e *Enumerator, err error)

SeekLast returns an enumerator positioned on the last KV pair in the tree, if any. For an empty tree, err == io.EOF is returned and e will be nil.

func (*Tree) Set

func (t *Tree) Set(k KEY, v VALUE)

Set sets the value associated with k.

type VALUE

type VALUE = int64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL