package testonly
import "github.com/google/trillian/storage/testonly"
Package testonly contains utilities and helpers to use in the storage tests.
Index ¶
- Variables
- func NodeSet(nodes []tree.Node) gomock.Matcher
- func RunOnAdminTX(tx storage.AdminTX) func(ctx context.Context, f storage.AdminTXFunc) error
- func RunOnLogTX(tx storage.LogTreeTX) func(ctx context.Context, treeID int64, f storage.LogTXFunc) error
- type AdminStorageTester
- func (tester *AdminStorageTester) RunAllTests(t *testing.T)
- func (tester *AdminStorageTester) TestAdminTXReadWriteTransaction(t *testing.T)
- func (tester *AdminStorageTester) TestCreateTree(t *testing.T)
- func (tester *AdminStorageTester) TestHardDeleteTree(t *testing.T)
- func (tester *AdminStorageTester) TestHardDeleteTreeErrors(t *testing.T)
- func (tester *AdminStorageTester) TestListTrees(t *testing.T)
- func (tester *AdminStorageTester) TestSoftDeleteTree(t *testing.T)
- func (tester *AdminStorageTester) TestSoftDeleteTreeErrors(t *testing.T)
- func (tester *AdminStorageTester) TestUndeleteTree(t *testing.T)
- func (tester *AdminStorageTester) TestUndeleteTreeErrors(t *testing.T)
- func (tester *AdminStorageTester) TestUpdateTree(t *testing.T)
- type FakeAdminStorage
- func (f *FakeAdminStorage) Begin(ctx context.Context) (storage.AdminTX, error)
- func (f *FakeAdminStorage) CheckDatabaseAccessible(ctx context.Context) error
- func (f *FakeAdminStorage) ReadWriteTransaction(ctx context.Context, fn storage.AdminTXFunc) error
- func (f *FakeAdminStorage) Snapshot(ctx context.Context) (storage.ReadOnlyAdminTX, error)
- type FakeLogStorage
- func (f *FakeLogStorage) AddSequencedLeaves(ctx context.Context, tree *trillian.Tree, leaves []*trillian.LogLeaf, timestamp time.Time) ([]*trillian.QueuedLogLeaf, error)
- func (f *FakeLogStorage) CheckDatabaseAccessible(ctx context.Context) error
- func (f *FakeLogStorage) GetActiveLogIDs(ctx context.Context) ([]int64, error)
- func (f *FakeLogStorage) QueueLeaves(ctx context.Context, tree *trillian.Tree, leaves []*trillian.LogLeaf, queueTimestamp time.Time) ([]*trillian.QueuedLogLeaf, error)
- func (f *FakeLogStorage) ReadWriteTransaction(ctx context.Context, tree *trillian.Tree, fn storage.LogTXFunc) error
- func (f *FakeLogStorage) SnapshotForTree(ctx context.Context, _ *trillian.Tree) (storage.ReadOnlyLogTreeTX, error)
- type FakeNodeReader
- func NewFakeNodeReader(nodes []tree.Node) *FakeNodeReader
- func (f FakeNodeReader) GetMerkleNodes(ids []compact.NodeID) ([]tree.Node, error)
- type LeafBatch
- type MultiFakeNodeReader
Variables ¶
var ( // LogTree is a valid, LOG-type trillian.Tree for tests. LogTree = &trillian.Tree{ TreeState: trillian.TreeState_ACTIVE, TreeType: trillian.TreeType_LOG, DisplayName: "Llamas Log", Description: "Registry of publicly-owned llamas", MaxRootDuration: durationpb.New(0 * time.Millisecond), } // PreorderedLogTree is a valid, PREORDERED_LOG-type trillian.Tree for tests. PreorderedLogTree = &trillian.Tree{ TreeState: trillian.TreeState_ACTIVE, TreeType: trillian.TreeType_PREORDERED_LOG, DisplayName: "Pre-ordered Log", Description: "Mirror registry of publicly-owned llamas", MaxRootDuration: durationpb.New(0 * time.Millisecond), } )
ErrNotImplemented is returned by unimplemented methods on the storage fakes.
Functions ¶
func NodeSet ¶
NodeSet returns a matcher that expects the given set of nodes.
func RunOnAdminTX ¶
RunOnAdminTX is a helper for mocking out the AdminStorage.ReadWriteTransaction method.
func RunOnLogTX ¶
func RunOnLogTX(tx storage.LogTreeTX) func(ctx context.Context, treeID int64, f storage.LogTXFunc) error
RunOnLogTX is a helper for mocking out the LogStorage.ReadWriteTransaction method.
Types ¶
type AdminStorageTester ¶
type AdminStorageTester struct { // NewAdminStorage returns an AdminStorage instance pointing to a clean // test database. NewAdminStorage func() storage.AdminStorage }
AdminStorageTester runs a suite of tests against AdminStorage implementations.
func (*AdminStorageTester) RunAllTests ¶
func (tester *AdminStorageTester) RunAllTests(t *testing.T)
RunAllTests runs all AdminStorage tests.
func (*AdminStorageTester) TestAdminTXReadWriteTransaction ¶
func (tester *AdminStorageTester) TestAdminTXReadWriteTransaction(t *testing.T)
TestAdminTXReadWriteTransaction tests the ReadWriteTransaction method on AdminStorage.
func (*AdminStorageTester) TestCreateTree ¶
func (tester *AdminStorageTester) TestCreateTree(t *testing.T)
TestCreateTree tests AdminStorage Tree creation.
func (*AdminStorageTester) TestHardDeleteTree ¶
func (tester *AdminStorageTester) TestHardDeleteTree(t *testing.T)
TestHardDeleteTree tests success scenarios of HardDeleteTree.
func (*AdminStorageTester) TestHardDeleteTreeErrors ¶
func (tester *AdminStorageTester) TestHardDeleteTreeErrors(t *testing.T)
TestHardDeleteTreeErrors tests error scenarios of HardDeleteTree.
func (*AdminStorageTester) TestListTrees ¶
func (tester *AdminStorageTester) TestListTrees(t *testing.T)
TestListTrees tests ListTrees.
func (*AdminStorageTester) TestSoftDeleteTree ¶
func (tester *AdminStorageTester) TestSoftDeleteTree(t *testing.T)
TestSoftDeleteTree tests success scenarios of SoftDeleteTree.
func (*AdminStorageTester) TestSoftDeleteTreeErrors ¶
func (tester *AdminStorageTester) TestSoftDeleteTreeErrors(t *testing.T)
TestSoftDeleteTreeErrors tests error scenarios of SoftDeleteTree.
func (*AdminStorageTester) TestUndeleteTree ¶
func (tester *AdminStorageTester) TestUndeleteTree(t *testing.T)
TestUndeleteTree tests success scenarios of UndeleteTree.
func (*AdminStorageTester) TestUndeleteTreeErrors ¶
func (tester *AdminStorageTester) TestUndeleteTreeErrors(t *testing.T)
TestUndeleteTreeErrors tests error scenarios of UndeleteTree.
func (*AdminStorageTester) TestUpdateTree ¶
func (tester *AdminStorageTester) TestUpdateTree(t *testing.T)
TestUpdateTree tests AdminStorage Tree updates.
type FakeAdminStorage ¶
type FakeAdminStorage struct { TX []storage.AdminTX ReadOnlyTX []storage.ReadOnlyAdminTX TXErr []error SnapshotErr []error }
FakeAdminStorage is a AdminStorage implementation which is used for testing.
func (*FakeAdminStorage) Begin ¶
Begin implements AdminStorage.Begin
func (*FakeAdminStorage) CheckDatabaseAccessible ¶
func (f *FakeAdminStorage) CheckDatabaseAccessible(ctx context.Context) error
CheckDatabaseAccessible implements AdminStorage.CheckDatabaseAccessible
func (*FakeAdminStorage) ReadWriteTransaction ¶
func (f *FakeAdminStorage) ReadWriteTransaction(ctx context.Context, fn storage.AdminTXFunc) error
ReadWriteTransaction implements AdminStorage.ReadWriteTransaction
func (*FakeAdminStorage) Snapshot ¶
func (f *FakeAdminStorage) Snapshot(ctx context.Context) (storage.ReadOnlyAdminTX, error)
Snapshot implements AdminStorage.Snapshot
type FakeLogStorage ¶
type FakeLogStorage struct { TX storage.LogTreeTX ReadOnlyTX storage.ReadOnlyLogTreeTX TXErr error QueueLeavesErr error AddSequencedLeavesErr error }
FakeLogStorage is a LogStorage implementation which is used for testing.
func (*FakeLogStorage) AddSequencedLeaves ¶
func (f *FakeLogStorage) AddSequencedLeaves(ctx context.Context, tree *trillian.Tree, leaves []*trillian.LogLeaf, timestamp time.Time) ([]*trillian.QueuedLogLeaf, error)
AddSequencedLeaves implements LogStorage.AddSequencedLeaves.
func (*FakeLogStorage) CheckDatabaseAccessible ¶
func (f *FakeLogStorage) CheckDatabaseAccessible(ctx context.Context) error
CheckDatabaseAccessible implements LogStorage.CheckDatabaseAccessible
func (*FakeLogStorage) GetActiveLogIDs ¶
func (f *FakeLogStorage) GetActiveLogIDs(ctx context.Context) ([]int64, error)
GetActiveLogIDs implements LogStorage.GetActiveLogIDs.
func (*FakeLogStorage) QueueLeaves ¶
func (f *FakeLogStorage) QueueLeaves(ctx context.Context, tree *trillian.Tree, leaves []*trillian.LogLeaf, queueTimestamp time.Time) ([]*trillian.QueuedLogLeaf, error)
QueueLeaves implements LogStorage.QueueLeaves.
func (*FakeLogStorage) ReadWriteTransaction ¶
func (f *FakeLogStorage) ReadWriteTransaction(ctx context.Context, tree *trillian.Tree, fn storage.LogTXFunc) error
ReadWriteTransaction implements LogStorage.ReadWriteTransaction
func (*FakeLogStorage) SnapshotForTree ¶
func (f *FakeLogStorage) SnapshotForTree(ctx context.Context, _ *trillian.Tree) (storage.ReadOnlyLogTreeTX, error)
SnapshotForTree implements LogStorage.SnapshotForTree
type FakeNodeReader ¶
type FakeNodeReader struct {
// contains filtered or unexported fields
}
FakeNodeReader is an implementation of storage.NodeReader that's preloaded with a set of NodeID -> Node mappings and will return only those. Requesting any other nodes results in an error. For use in tests only, does not implement any other storage APIs.
func NewFakeNodeReader ¶
func NewFakeNodeReader(nodes []tree.Node) *FakeNodeReader
NewFakeNodeReader creates and returns a FakeNodeReader with the supplied nodes assuming that all the nodes are at a specified tree revision. All the node IDs must be distinct.
func (FakeNodeReader) GetMerkleNodes ¶
GetMerkleNodes implements the corresponding NodeReader API.
type LeafBatch ¶
LeafBatch describes a set of leaves to be loaded into a MultiFakeNodeReader via a compact merkle tree. As each batch is added to the tree a set of node updates are collected and recorded in a FakeNodeReader for that revision. The expected root should be the result of calling CurrentRoot() on the compact Merkle tree encoded by hex.EncodeToString().
type MultiFakeNodeReader ¶
type MultiFakeNodeReader struct {
// contains filtered or unexported fields
}
MultiFakeNodeReader can provide nodes at multiple revisions. It delegates to a number of FakeNodeReaders, each set up to handle one revision.
func NewMultiFakeNodeReader ¶
func NewMultiFakeNodeReader(readers []FakeNodeReader) *MultiFakeNodeReader
NewMultiFakeNodeReader creates a MultiFakeNodeReader delegating to a number of FakeNodeReaders
func NewMultiFakeNodeReaderFromLeaves ¶
func NewMultiFakeNodeReaderFromLeaves(batches []LeafBatch) *MultiFakeNodeReader
NewMultiFakeNodeReaderFromLeaves uses a compact Merkle tree to set up the nodes at various revisions. It collates all node updates from a batch of leaf data into one FakeNodeReader. This has the advantage of not needing to manually create all the data structures but the disadvantage is that a bug in the compact tree could be reflected in test using this code. To help guard against this we check the tree root hash after each batch has been processed. The supplied batches should be in ascending order of tree revision.
func (MultiFakeNodeReader) GetMerkleNodes ¶
func (m MultiFakeNodeReader) GetMerkleNodes(ctx context.Context, ids []compact.NodeID) ([]tree.Node, error)
GetMerkleNodes implements the corresponding NodeReader API.
Source Files ¶
admin_storage_tester.go doc.go fake_node_reader.go matchers.go transaction.go
- Version
- v1.7.1 (latest)
- Published
- Jan 9, 2025
- Platform
- linux/amd64
- Imports
- 20 packages
- Last checked
- 5 days ago –
Tools for package owners.