Testground
GitHubGo SDKInfra
master
master
  • README
  • Table of contents
    • What is Testground?
      • Community
    • Concepts and architecture
      • Test plans and test cases
      • Daemon and client
      • Synchronization service
      • Networking
      • Sidecar
      • Builders
      • Runners
      • Runtime environment (runenv)
      • Client-Server communication
    • Getting started
    • Writing test plans
      • Quick start
      • Understanding the test plan manifest
      • Parameters and test cases
      • Keeping instances in sync
      • Communication between instances
      • Observability, assets and metrics
    • Managing test plans
    • Running test plans
    • Traffic shaping
    • Analyzing test run results
      • Capturing profiles
    • Debugging test plans
    • Docker Settings
    • Featured projects
  • Runner library
    • local:exec
    • local:docker
      • System overview
      • Runner flags
      • Troubleshooting
    • cluster:k8s
      • System overview
      • How to create a Kubernetes cluster for Testground
      • Monitoring and Observability
      • Understanding Testground performance on Kubernetes
      • Troubleshooting
  • Builder Library
    • docker:go
    • exec:go
    • docker:generic
Powered by GitBook
On this page
  1. Table of contents
  2. Writing test plans

Parameters and test cases

Adding an additional test case

Parameters and test cases are defined in the manifest.toml file of every test plan. Let's have a look once again at the quickstart/manifest.toml file and add two test cases to the bottom of the file:

$TESTGROUND_HOME/plans/quickstart/manifest.toml

...


[[testcases]]
name = "smallbrain"
instances = { min = 1, max = 200, default = 1 }

  [testcases.params]
  word = { type = "string", default = "never" }
  num = { type = "int", default = 2 }
  feature = { type = "bool", default = false }

[[testcases]]
name = "bigbrain"

  [testcases.params]
  word = { type = "string", default = "always" }
  num = { type = "int", default = 10000000 }
  feature = { type = "bool", default = false }

?> Feel free to add your own galaxybrain test case as well!

$ testground plan list --testcases | grep quickstart
quickstart    smallbrain
quickstart    bigbrain

We would like to take these two cases out for a spin. First, let's prepare our code. Open our quickstart plan program and deal with these parameters!

!> This snippet is routing both test cases to the same function. In practice, you will want to run different logic for each test case!

$TESTGROUND_HOME/plans/quickstart/main.go

package main

import (
	"github.com/testground/sdk-go/run"
	"github.com/testground/sdk-go/runtime"
)

func main() {
	run.InvokeMap(map[string]interface{}{
		"bigbrain":   test,
		"smallbrain": test,
	})
}

func test(runenv *runtime.RunEnv) error {
	var (
		num     = runenv.IntParam("num")
		word    = runenv.StringParam("word")
		feature = runenv.BooleanParam("feature")
	)

	runenv.RecordMessage("I am a %s test case.", runenv.TestCase)
	runenv.RecordMessage("I store my files on %d servers.", num)
	runenv.RecordMessage("I %s run tests on my P2P code.", word)

	if feature {
		runenv.RecordMessage("I use IPFS!")
	}

	return nil
}

The time has come now to run these test cases. Let's run it!

$ testground run single --plan quickstart \
                        --testcase smallbrain \
                        --builder exec:go \
                        --run local:exec \
                        --instances 1 \
                        --wait

?> Try using different runners. This command executes the plan with the local:exec runner and exec:gobuilder, but it works just as well with the local:docker runner or the Kubernetes cluster:k8srunner (for which you will need to use the docker:go builder!

PreviousUnderstanding the test plan manifestNextKeeping instances in sync

Last updated 2 years ago

You can confirm that the is able to parse the manifest, and enumerate the cases it declares:

As you can see, a test plan a simple executable that conforms to the , which the SDK facilitates. This makes it super easy to debug and develop. There's beauty in simplicity!

simple Testground contract
testground client