mirror of
https://github.com/0glabs/0g-chain.git
synced 2025-01-24 05:55:18 +00:00
Merge remote-tracking branch 'origin' into kd-pin-to-sdk
This commit is contained in:
commit
563226c86d
22
Makefile
22
Makefile
@ -105,9 +105,25 @@ test-all: build
|
|||||||
# other sim tests
|
# other sim tests
|
||||||
@go test ./app -run TestAppImportExport -Enabled -Commit -NumBlocks=100 -BlockSize=200 -Seed 2 -v -timeout 24h
|
@go test ./app -run TestAppImportExport -Enabled -Commit -NumBlocks=100 -BlockSize=200 -Seed 2 -v -timeout 24h
|
||||||
@go test ./app -run TestAppSimulationAfterImport -Enabled -Commit -NumBlocks=100 -BlockSize=200 -Seed 2 -v -timeout 24h
|
@go test ./app -run TestAppSimulationAfterImport -Enabled -Commit -NumBlocks=100 -BlockSize=200 -Seed 2 -v -timeout 24h
|
||||||
@# AppStateDeterminism does use Seed flag
|
@# AppStateDeterminism does not use Seed flag
|
||||||
@go test ./app -run TestAppStateDeterminism -Enabled -Commit -NumBlocks=100 -BlockSize=200 -v -timeout 24h
|
@go test ./app -run TestAppStateDeterminism -Enabled -Commit -NumBlocks=100 -BlockSize=200 -v -timeout 24h
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@go test ./...
|
@go test ./...
|
||||||
.PHONY: all build-linux install clean build test-all test
|
|
||||||
|
# Kick start lots of sims on an AWS cluster.
|
||||||
|
# This submits an AWS Batch job to run a lot of sims, each within a docker image. Results are uploaded to S3
|
||||||
|
start-remote-sims:
|
||||||
|
# build the image used for running sims in, and tag it
|
||||||
|
docker build -f simulations/Dockerfile -t kava/kava-sim:master .
|
||||||
|
# push that image to the hub
|
||||||
|
docker push kava/kava-sim:master
|
||||||
|
# submit an array job on AWS Batch, using 1000 seeds, spot instances
|
||||||
|
aws batch submit-job \
|
||||||
|
-—job-name "master-$(VERSION)" \
|
||||||
|
-—job-queue “simulation-1-queue-spot" \
|
||||||
|
-—array-properties size=1000 \
|
||||||
|
-—job-definition kava-sim-master \
|
||||||
|
-—container-override environment=[{SIM_NAME=master-$(VERSION)}]
|
||||||
|
|
||||||
|
.PHONY: all build-linux install clean build test test-all start-remote-sims
|
||||||
|
@ -58,8 +58,18 @@ const (
|
|||||||
OpWeightMsgUnjail = "op_weight_msg_unjail"
|
OpWeightMsgUnjail = "op_weight_msg_unjail"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
// TestMain runs setup and teardown code before all tests.
|
||||||
|
func TestMain(m *testing.M) {
|
||||||
|
// set prefixes
|
||||||
|
config := sdk.GetConfig()
|
||||||
|
SetBech32AddressPrefixes(config)
|
||||||
|
config.Seal()
|
||||||
|
// load the values from simulation specific flags
|
||||||
simapp.GetSimulatorFlags()
|
simapp.GetSimulatorFlags()
|
||||||
|
|
||||||
|
// run tests
|
||||||
|
exitCode := m.Run()
|
||||||
|
os.Exit(exitCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
func testAndRunTxs(app *App, config simulation.Config) []simulation.WeightedOperation {
|
func testAndRunTxs(app *App, config simulation.Config) []simulation.WeightedOperation {
|
||||||
@ -319,6 +329,7 @@ func BenchmarkFullAppSimulation(b *testing.B) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestFullAppSimulation runs a standard simulation of the app, modified by cmd line flag values.
|
||||||
func TestFullAppSimulation(t *testing.T) {
|
func TestFullAppSimulation(t *testing.T) {
|
||||||
if !simapp.FlagEnabledValue {
|
if !simapp.FlagEnabledValue {
|
||||||
t.Skip("skipping application simulation")
|
t.Skip("skipping application simulation")
|
||||||
@ -373,6 +384,7 @@ func TestFullAppSimulation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestAppImportExport runs a simulation, exports the state, imports it, then checks the db state is same after import as it was before export.
|
||||||
func TestAppImportExport(t *testing.T) {
|
func TestAppImportExport(t *testing.T) {
|
||||||
if !simapp.FlagEnabledValue {
|
if !simapp.FlagEnabledValue {
|
||||||
t.Skip("skipping application import/export simulation")
|
t.Skip("skipping application import/export simulation")
|
||||||
@ -490,6 +502,7 @@ func TestAppImportExport(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestAppSimulationAfterImport runs a simulation, exports it, imports it and runs another simulation.
|
||||||
func TestAppSimulationAfterImport(t *testing.T) {
|
func TestAppSimulationAfterImport(t *testing.T) {
|
||||||
if !simapp.FlagEnabledValue {
|
if !simapp.FlagEnabledValue {
|
||||||
t.Skip("skipping application simulation after import")
|
t.Skip("skipping application simulation after import")
|
||||||
@ -584,6 +597,7 @@ func TestAppSimulationAfterImport(t *testing.T) {
|
|||||||
|
|
||||||
// TODO: Make another test for the fuzzer itself, which just has noOp txs
|
// TODO: Make another test for the fuzzer itself, which just has noOp txs
|
||||||
// and doesn't depend on the application.
|
// and doesn't depend on the application.
|
||||||
|
// TestAppStateDeterminism runs several sims with the same seed and checks the states are equal.
|
||||||
func TestAppStateDeterminism(t *testing.T) {
|
func TestAppStateDeterminism(t *testing.T) {
|
||||||
if !simapp.FlagEnabledValue {
|
if !simapp.FlagEnabledValue {
|
||||||
t.Skip("skipping application simulation")
|
t.Skip("skipping application simulation")
|
||||||
|
@ -25,6 +25,7 @@ COPY app app
|
|||||||
COPY cli_test cli_test
|
COPY cli_test cli_test
|
||||||
COPY cmd cmd
|
COPY cmd cmd
|
||||||
COPY app app
|
COPY app app
|
||||||
|
COPY x x
|
||||||
COPY Makefile .
|
COPY Makefile .
|
||||||
|
|
||||||
# Install kvd, kvcli
|
# Install kvd, kvcli
|
||||||
|
@ -7,24 +7,27 @@
|
|||||||
|
|
||||||
|
|
||||||
# Parse Input Args
|
# Parse Input Args
|
||||||
|
# get simulation type
|
||||||
|
simType=$1
|
||||||
# get seed
|
# get seed
|
||||||
startingSeed=$1
|
startingSeed=$2
|
||||||
# compute the seed from the starting and the job index
|
# compute the seed from the starting and the job index
|
||||||
# add two nums together, hence the $(()), and use 0 as the default value for array index, hence the ${:-} syntax
|
# add two nums together, hence the $(()), and use 0 as the default value for array index, hence the ${:-} syntax
|
||||||
seed=$(($startingSeed+${AWS_BATCH_JOB_ARRAY_INDEX:-0}))
|
seed=$(($startingSeed+${AWS_BATCH_JOB_ARRAY_INDEX:-0}))
|
||||||
echo "seed: " $seed
|
|
||||||
# get sim parameters
|
# get sim parameters
|
||||||
numBlocks=$2
|
numBlocks=$3
|
||||||
blockSize=$3
|
blockSize=$4
|
||||||
|
|
||||||
|
|
||||||
# Run The Sim
|
# Run The Sim
|
||||||
# redirect stdout and stderr to a file
|
# record cli arguments in the log file (in json in case we need to parse this) and stdout (https://stackoverflow.com/questions/418896/how-to-redirect-output-to-a-file-and-stdout)
|
||||||
go test ./app -run TestFullAppSimulation -Enabled=true -NumBlocks=$numBlocks -BlockSize=$blockSize -Commit=true -Period=5 -Seed=$seed -v -timeout 24h > out.log 2>&1
|
printf "{\"simType\": \"%s\", \"startingSeed\": %s, \"seed\": %s, \"numBlocks\": %s, \"blockSize\": %s}\n" $simType $startingSeed $seed $numBlocks $blockSize | tee out.log
|
||||||
|
# run sim and redirect stdout and stderr to a file)
|
||||||
|
go test ./app -run $simType -Enabled=true -NumBlocks=$numBlocks -BlockSize=$blockSize -Commit=true -Period=5 -Seed=$seed -v -timeout 24h >> out.log 2>&1
|
||||||
# get the exit code to determine how to upload results
|
# get the exit code to determine how to upload results
|
||||||
simExitStatus=$?
|
simExitStatus=$?
|
||||||
if [ $simExitStatus -eq 0 ];then
|
if [ $simExitStatus -eq 0 ];then
|
||||||
echo "simulations passed"
|
echo "simulation passed"
|
||||||
simResult="pass"
|
simResult="pass"
|
||||||
else
|
else
|
||||||
echo "simulation failed"
|
echo "simulation failed"
|
||||||
@ -39,5 +42,6 @@ jobID=${AWS_BATCH_JOB_ID:-"testJobID:"}
|
|||||||
jobID=$(echo $jobID | sed 's/\(.*\):\d*/\1/')
|
jobID=$(echo $jobID | sed 's/\(.*\):\d*/\1/')
|
||||||
|
|
||||||
# create the filename from the array job index (which won't be set if this is a normal job)
|
# create the filename from the array job index (which won't be set if this is a normal job)
|
||||||
fileName=out$AWS_BATCH_JOB_ARRAY_INDEX.log
|
fileName=$(printf "out%05d.log" $AWS_BATCH_JOB_ARRAY_INDEX)
|
||||||
aws s3 cp out.log s3://simulations-1/$jobID/$simResult/$fileName
|
|
||||||
|
aws s3 cp out.log s3://simulations-1/$SIM_NAME$jobID/$simResult/$fileName
|
Loading…
Reference in New Issue
Block a user