Source File
test_extensions.go
Belonging Package
github.com/dgraph-io/badger/v4
/** SPDX-FileCopyrightText: © 2017-2025 Istari Digital, Inc.* SPDX-License-Identifier: Apache-2.0*/package badger// Important: Do NOT import the "testing" package, as otherwise, that// will pull in imports into the production class that we do not want.// TODO: Consider using this with specific compilation tags so that it only// shows up when performing testing (e.g., specify build tag=unit).// We are not yet ready to do that, as it may impact customer usage as// well as requiring us to update the CI build flags. Moreover, the// current model does not actually incur any significant cost.// If we do this, we will also want to introduce a parallel file that// overrides some of these structs and functions with empty contents.// String constants for messages to be pushed to syncChan.const (updateDiscardStatsMsg = "updateDiscardStats iteration done"endVLogInitMsg = "End: vlog.init(db)")// testOnlyOptions specifies an extension to the type Options that we want to// use only in the context of testing.type testOnlyOptions struct {// syncChan is used to listen for specific messages related to activities// that can occur in a DB instance. Currently, this is only used in// testing activities.syncChan chan string}// testOnlyDBExtensions specifies an extension to the type DB that we want to// use only in the context of testing.type testOnlyDBExtensions struct {syncChan chan string// onCloseDiscardCapture will be populated by a DB instance during the// process of performing the Close operation. Currently, we only consider// using this during testing.onCloseDiscardCapture map[uint64]uint64}// logToSyncChan sends a message to the DB's syncChan. Note that we expect// that the DB never closes this channel; the responsibility for// allocating and closing the channel belongs to the test module.// if db.syncChan is nil or has never been initialized, this will be// silently ignored.func ( *DB) ( string) {if .syncChan != nil {.syncChan <-}}// captureDiscardStats will copy the contents of the discardStats file// maintained by vlog to the onCloseDiscardCapture map specified by// db.opt. Of course, if db.opt.onCloseDiscardCapture is nil (as expected// for a production system as opposed to a test system), this is a no-op.func ( *DB) () {if .onCloseDiscardCapture != nil {.vlog.discardStats.Lock().vlog.discardStats.Iterate(func(, uint64) {.onCloseDiscardCapture[] =}).vlog.discardStats.Unlock()}}
![]() |
The pages are generated with Golds v0.8.4. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |