Skip to content

orbs-network/go-scaffold

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Go Scaffold

A simple project with 3 microservices all running in the same process for easy debugging (using protobuf as interface but without using gRPC as a transport layer).

HTTP requests are sent to PublicApi then forwarded for execution by VirtualMachine which relies on StateStorage to read/write state. This process involves a single node only.

The project is thoroughly tested with unit tests (100% coverage), component tests per microservice (defining its spec), E2E tests (defining the full system spec) and E2E stress tests (running the system under load).

Prerequisites

  • Make sure Go is installed (version 1.10 or later).

    Verify with go version

  • Make sure Go workspace bin is in your path.

    Install with export PATH=$PATH:`go env GOPATH`/bin

    Verify with echo $PATH

  • Make sure Git is installed (version 2 or later).

    Verify with git --version

Prerequisites for tests

  • Make sure Ginkgo is installed.

    Install with go get github.com/onsi/ginkgo/ginkgo

    Verify with ginkgo version

Build

  • Clone the repo to your Go workspace:
cd `go env GOPATH`
go get github.com/orbs-network/go-scaffold
cd src/github.com/orbs-network/go-scaffold
git checkout master
  • Install dependencies with go get -t ./...

  • Build with go install

Run

  • To run the pre-built binary (should be in path):
go-scaffold
  • To rebuild from source and run (this will take you to project root):
cd `go env GOPATH`
cd src/github.com/orbs-network/go-scaffold
go run *.go

Test

  • Run all tests from project root with ginkgo ./...

  • Run everything except stress with ginkgo --skip=Stress ./...

  • Another alternative runner with minimal UI and result caching:

    • Run all tests with go test ./...

      Note: E2E is flaky here for some reason

    • Run everything except stress with go test -short ./...

  • Check unit test coverage with:

    go test -cover `go list ./... | grep -v /stress | grep -v /spec | grep -v /types/`
    
E2E Spec

End to end tests (server only) checking compliance to spec

  • Run the suite from project root with ginkgo -v ./e2e/spec/
E2E Stress

End to end tests (server only) under extreme random load

  • Run the suite from project root with ginkgo -v ./e2e/stress/
Service Spec

Component test checking a single service compliance to spec

  • For StateStorage, run the suite from project root with ginkgo -v ./services/statestorage/spec

  • For VirtualMachine, run the suite from project root with ginkgo -v ./services/virtualmachine/spec

  • For PublicApi, run the suite from project root with ginkgo -v ./services/publicapi/spec

About

Scaffold starter project in Go for a micro services based server with thorough testing

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages