db_test.go
db_test.go - Overview
This file contains various tests for the BadgerDB, covering functionalities such as writing, reading, iterating, concurrency, transactions, value log garbage collection, and data streaming.
waitForMessage
- Purpose: Blocks until a specific message is received a certain number of times on a channel or until a timeout occurs.
- Parameters:
- ch:
chan string
- The channel to listen on. - expected:
string
- The expected message. - count:
int
- The number of times the message is expected. - timeout:
int
- Timeout in seconds. - t:
*testing.T
- Testing context for logging errors.
- ch:
- Returns: None. It reports errors using the testing context.
summary
- Purpose: Represents a summary of file IDs present in the database levels, primarily for testing purposes.
- Fields:
- fileIDs:
map[uint64]bool
- A map of file IDs.
- fileIDs:
levelsController.getSummary
- Purpose: Collects and returns a summary of all file IDs in the levels controller.
- Parameters: None
- Returns:
*summary
- A pointer to the summary struct containing the file IDs.
levelHandler.getSummary
- Purpose: Collects file IDs from the level handler and adds them to the provided summary.
- Parameters:
- sum:
*summary
- A pointer to the summary struct to populate.
- sum:
- Returns: None
DB.validate
- Purpose: Calls the
validate
method on the levels controller. - Parameters: None
- Returns:
error
- The error returned by the levels controller's validate method.
getTestOptions
- Purpose: Returns a default Options struct for testing.
- Parameters:
- dir:
string
- The directory for the database.
- dir:
- Returns:
Options
- A configured Options struct for testing.
getItemValue
- Purpose: Retrieves the value from an
Item
and returns it as a byte slice. - Parameters:
- t:
*testing.T
- Testing context for error reporting. - item:
*Item
- The Item to extract the value from.
- t:
- Returns:
[]byte
- The value of the item as a byte slice.
txnSet
- Purpose: Sets a key-value pair in the database within a transaction.
- Parameters:
- t:
*testing.T
- Testing context for error reporting. - kv:
*DB
- The database instance. - key:
[]byte
- The key to set. - val:
[]byte
- The value to set. - meta:
byte
- The metadata to set.
- t:
- Returns: None
txnDelete
- Purpose: Deletes a key from the database within a transaction.
- Parameters:
- t:
*testing.T
- Testing context for error reporting. - kv:
*DB
- The database instance. - key:
[]byte
- The key to delete.
- t:
- Returns: None
runBadgerTest
- Purpose: Sets up and runs a BadgerDB test within a temporary directory.
- Parameters:
- t:
*testing.T
- Testing context. - opts:
*Options
- DB options. If nil, default test options are used. - test:
func(t *testing.T, db *DB)
- The test function to execute.
- t:
- Returns: None
TestReverseIterator
- Purpose: Tests the reverse iterator functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestWrite
- Purpose: Tests basic write functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestUpdateAndView
- Purpose: Tests the Update and View functions.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestConcurrentWrite
- Purpose: Tests concurrent write operations.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestGet
- Purpose: Tests the Get operation, including retrieval of values and metadata.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestGetAfterDelete
- Purpose: Tests that getting a key after deleting it returns an error.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestTxnTooBig
- Purpose: Tests the handling of large transactions that exceed the maximum size.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestForceCompactL0
- Purpose: Tests the force compaction of L0 tables.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestStreamDB
- Purpose: Tests the StreamDB functionality for data backup and restoration.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
dirSize
- Purpose: Calculates the total size of files within a directory.
- Parameters:
- path:
string
- The directory path.
- path:
- Returns:
int64
- The size of the directory in MB.error
- An error, if any.
BenchmarkDbGrowth
- Purpose: Benchmarks database growth with repeated adds and deletes.
- Parameters:
- b:
*testing.B
- Benchmark context.
- b:
- Returns: None
TestGetMore
- Purpose: Tests getting a large number of keys.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestExistsMore
- Purpose: Tests existence checks for a large number of keys.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestIterate2Basic
- Purpose: Tests basic iteration functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestLoad
- Purpose: Tests loading data into the database and verifying its integrity.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestIterateDeleted
- Purpose: Tests iteration over deleted keys.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestIterateParallel
- Purpose: Tests parallel iteration functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestDeleteWithoutSyncWrite
- Purpose: Tests deletion of keys without synchronous writes.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestPidFile
- Purpose: Tests the creation and handling of the PID file.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestInvalidKey
- Purpose: Tests the handling of invalid keys.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestIteratorPrefetchSize
- Purpose: Tests the iterator's prefetch size functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestSetIfAbsentAsync
- Purpose: Tests the asynchronous setting of keys if they are absent.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestGetSetRace
- Purpose: Tests for race conditions between get and set operations.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestDiscardVersionsBelow
- Purpose: Tests the discarding of older versions of keys.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestExpiry
- Purpose: Tests the expiry functionality for keys with TTL.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestExpiryImproperDBClose
- Purpose: Tests expiry behavior when the database is improperly closed.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
randBytes
- Purpose: Generates random bytes.
- Parameters:
- n:
int
- The number of bytes to generate.
- n:
- Returns:
[]byte
- A slice of random bytes.
TestLargeKeys
- Purpose: Tests handling of large keys.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestCreateDirs
- Purpose: Tests the creation of directories.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestGetSetDeadlock
- Purpose: Tests for deadlocks between get and set operations.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestWriteDeadlock
- Purpose: Tests for deadlocks during write operations.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestSequence
- Purpose: Tests the sequence functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestSequence_Release
- Purpose: Tests sequence release.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestTestSequence2
- Purpose: Tests sequence functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestReadOnly
- Purpose: Tests read-only database mode.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestLSMOnly
- Purpose: Tests LSM-only mode.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestMinReadTs
- Purpose: Tests min read timestamp functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestGoroutineLeak
- Purpose: Tests for goroutine leaks.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
ExampleOpen
- Purpose: Example usage of the Open function.
- Parameters: None
- Returns: None
ExampleTxn_NewIterator
- Purpose: Example usage of the NewIterator function.
- Parameters: None
- Returns: None
TestSyncForRace
- Purpose: Tests
Sync
method for race conditions. - Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestSyncForNoErrors
- Purpose: Tests
Sync
method for potential errors. - Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestSyncForReadingTheEntriesThatWereSynced
- Purpose: Tests reading the entries immediately after calling the
Sync
method. - Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestForceFlushMemtable
- Purpose: Tests if the memtable is flushed on disk.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestVerifyChecksum
- Purpose: Tests the database's checksum verification functionality.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestMain
- Purpose: Main test function.
- Parameters:
- m:
*testing.M
- Testing context.
- m:
- Returns: None
removeDir
- Purpose: Removes a directory and its contents.
- Parameters:
- dir:
string
- The directory path.
- dir:
- Returns: None
TestWriteInemory
- Purpose: Tests writing to an in-memory database.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestMinCacheSize
- Purpose: Tests the minimum cache size.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestUpdateMaxCost
- Purpose: Tests updating maximum cache cost.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestOpenDBReadOnly
- Purpose: Tests opening the database in read-only mode.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestBannedPrefixes
- Purpose: Tests banning prefixes.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestIterateWithBanned
- Purpose: Tests iterating with banned prefixes.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestBannedAtZeroOffset
- Purpose: Tests banning prefixes at zero offset.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestCompactL0OnClose
- Purpose: Tests L0 compaction on close.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None
TestCloseDBWhileReading
- Purpose: Tests closing the DB while there are readers active.
- Parameters:
- t:
*testing.T
- Testing context.
- t:
- Returns: None