Skip to content

Latest commit

 

History

History
72 lines (51 loc) · 1.5 KB

README.md

File metadata and controls

72 lines (51 loc) · 1.5 KB

Introduction

This directory contains the Go implementation of Carmen. It includes the officially supported Merkle Patricia Trie State Root Hash compatible implementation.

Build

Carmen is included in other systems as a Go library. The Go implementation does not need any C++ dependency, i.e.; no build is required to use the library.

Integrate

Carmen is added to another project simply as a dependency:

go get github.com/Fantom-foundation/carmendb/

Development

For development purposes, it may come handy to execute all tests. It needs build of c++ parts.

Execute in the root directory:

make 

Then execute in this directory:

go test ./...  -timeout=60m  

On memory constrained systems, parallelism may need to be reduced

go test ./... -parallel=1  -timeout 600m   

all tests should pass.

Installing gomock

Tests extensively use mocks. To regenerate mocks, use the command:

go generate ./...

If this command reports that gomock is not installed, one can install it using the following command:

go install go.uber.org/mock/mockgen@latest

Formatting

Formatting rules are enforced in the devvelopment process by running:

gofmt -s -w .

Benchmarks

Some of the key parts may be exercised with benchmarks. For example, the Stores benchmark is executed as:

go test ./backend/store -bench=BenchmarkInsert

For more information about the running benchmarks see: Go testing documentation.