From bdd1fc98d7dbd72bb38be94a373d46f222e3ff05 Mon Sep 17 00:00:00 2001 From: Derek Anderson Date: Wed, 29 Nov 2023 17:23:24 -0600 Subject: [PATCH] Scope bls runtime (#123) * make sure tests run from make * change runtime stuffs to BLS prefix to note specifics * set the runtime cli, allowing for more options --- Makefile | 2 +- cmd/node/flags.go | 1 + cmd/node/main.go | 3 ++- config/model.go | 9 +++++---- executor/command_internal_test.go | 8 ++++---- executor/runtime_flags.go | 18 +++++++++--------- executor/runtime_flags_test.go | 30 +++++++++++++++--------------- models/execute/request.go | 2 +- models/execute/runtime.go | 22 +++++++++++----------- 9 files changed, 49 insertions(+), 46 deletions(-) diff --git a/Makefile b/Makefile index 0a562816..5f7666d5 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ all: clean build-node build-keyforge build-manager test: @echo "\n🧪 Testing...\n" go clean -testcache - go test ./src/... + go test ./... @echo "\n✅ Done.\n" .PHONY: build-node diff --git a/cmd/node/flags.go b/cmd/node/flags.go index ee8b6f2e..cd70e014 100644 --- a/cmd/node/flags.go +++ b/cmd/node/flags.go @@ -33,6 +33,7 @@ func parseFlags() *config.Config { pflag.StringVar(&cfg.API, "rest-api", "", "address where the head node REST API will listen on") pflag.StringVar(&cfg.Workspace, "workspace", "./workspace", "directory that the node can use for file storage") pflag.StringVar(&cfg.RuntimePath, "runtime-path", "", "runtime path (used by the worker node)") + pflag.StringVar(&cfg.RuntimeCLI, "runtime-cli", "", "runtime path (used by the worker node)") pflag.BoolVar(&cfg.LoadAttributes, "attributes", false, "node should try to load its attribute data from IPFS") // Host configuration. diff --git a/cmd/node/main.go b/cmd/node/main.go index 6df3cb5c..06b37a10 100644 --- a/cmd/node/main.go +++ b/cmd/node/main.go @@ -133,6 +133,7 @@ func run() int { execOptions := []executor.Option{ executor.WithWorkDir(cfg.Workspace), executor.WithRuntimeDir(cfg.RuntimePath), + executor.WithExecutableName(cfg.RuntimeCLI), } if needLimiter(cfg) { @@ -156,7 +157,7 @@ func run() int { executor, err := executor.New(log, execOptions...) if err != nil { log.Error(). - Err(err). + Err(err). Str("workspace", cfg.Workspace). Str("runtime_path", cfg.RuntimePath). Msg("could not create an executor") diff --git a/config/model.go b/config/model.go index 6db4d4df..f64b96f4 100644 --- a/config/model.go +++ b/config/model.go @@ -9,10 +9,11 @@ type Config struct { BootNodes []string Concurrency uint - Host Host - API string - RuntimePath string - LoadAttributes bool + Host Host + API string + RuntimePath string + RuntimeCLI string + LoadAttributes bool CPUPercentage float64 MemoryMaxKB int64 diff --git a/executor/command_internal_test.go b/executor/command_internal_test.go index eadd3771..ee55d098 100644 --- a/executor/command_internal_test.go +++ b/executor/command_internal_test.go @@ -35,7 +35,7 @@ func TestExecute_CreateCMD(t *testing.T) { Config: execute.Config{ Stdin: &stdin, Environment: environment, - Runtime: execute.RuntimeConfig{ + Runtime: execute.BLSRuntimeConfig{ Memory: uint64(limitedMemory), Logger: runtimeLogger, }, @@ -67,13 +67,13 @@ func TestExecute_CreateCMD(t *testing.T) { require.Equal(t, executablePath, cmd.Args[0]) require.Equal(t, paths.input, cmd.Args[1]) - require.Equal(t, "--"+execute.RuntimeFlagFSRoot, cmd.Args[2]) + require.Equal(t, "--"+execute.BLSRuntimeFlagFSRoot, cmd.Args[2]) require.Equal(t, paths.fsRoot, cmd.Args[3]) - require.Equal(t, "--"+execute.RuntimeFlagMemory, cmd.Args[4]) + require.Equal(t, "--"+execute.BLSRuntimeFlagMemory, cmd.Args[4]) require.Equal(t, fmt.Sprint(limitedMemory), cmd.Args[5]) - require.Equal(t, "--"+execute.RuntimeFlagLogger, cmd.Args[6]) + require.Equal(t, "--"+execute.BLSRuntimeFlagLogger, cmd.Args[6]) require.Equal(t, runtimeLogger, cmd.Args[7]) require.Equal(t, "--", cmd.Args[8]) diff --git a/executor/runtime_flags.go b/executor/runtime_flags.go index f4c6f432..6cc1ca08 100644 --- a/executor/runtime_flags.go +++ b/executor/runtime_flags.go @@ -7,42 +7,42 @@ import ( ) // runtimeFlags returns flags that can be passed to the runtime, for example by `exec.Cmd`. -func runtimeFlags(cfg execute.RuntimeConfig, permissions []string) []string { +func runtimeFlags(cfg execute.BLSRuntimeConfig, permissions []string) []string { var flags []string // NOTE: The `Input` field is not a CLI flag but an argument, so it's not handled here. if cfg.Entry != "" { - flags = append(flags, "--"+execute.RuntimeFlagEntry, cfg.Entry) + flags = append(flags, "--"+execute.BLSRuntimeFlagEntry, cfg.Entry) } if cfg.ExecutionTime > 0 { - flags = append(flags, "--"+execute.RuntimeFlagExecutionTime, fmt.Sprint(cfg.ExecutionTime)) + flags = append(flags, "--"+execute.BLSRuntimeFlagExecutionTime, fmt.Sprint(cfg.ExecutionTime)) } if cfg.DebugInfo { - flags = append(flags, "--"+execute.RuntimeFlagDebug) + flags = append(flags, "--"+execute.BLSRuntimeFlagDebug) } if cfg.FSRoot != "" { - flags = append(flags, "--"+execute.RuntimeFlagFSRoot, cfg.FSRoot) + flags = append(flags, "--"+execute.BLSRuntimeFlagFSRoot, cfg.FSRoot) } if cfg.Fuel > 0 { - flags = append(flags, "--"+execute.RuntimeFlagFuel, fmt.Sprint(cfg.Fuel)) + flags = append(flags, "--"+execute.BLSRuntimeFlagFuel, fmt.Sprint(cfg.Fuel)) } if cfg.Memory > 0 { - flags = append(flags, "--"+execute.RuntimeFlagMemory, fmt.Sprint(cfg.Memory)) + flags = append(flags, "--"+execute.BLSRuntimeFlagMemory, fmt.Sprint(cfg.Memory)) } if cfg.Logger != "" { - flags = append(flags, "--"+execute.RuntimeFlagLogger, cfg.Logger) + flags = append(flags, "--"+execute.BLSRuntimeFlagLogger, cfg.Logger) } for _, permission := range permissions { - flags = append(flags, "--"+execute.RuntimeFlagPermission, permission) + flags = append(flags, "--"+execute.BLSRuntimeFlagPermission, permission) } return flags diff --git a/executor/runtime_flags_test.go b/executor/runtime_flags_test.go index 8709307b..744fe9da 100644 --- a/executor/runtime_flags_test.go +++ b/executor/runtime_flags_test.go @@ -13,7 +13,7 @@ func TestRuntimeFlags(t *testing.T) { t.Run("no flags", func(t *testing.T) { t.Parallel() - cfg := execute.RuntimeConfig{} + cfg := execute.BLSRuntimeConfig{} flags := runtimeFlags(cfg, nil) require.Len(t, flags, 0) }) @@ -35,7 +35,7 @@ func TestRuntimeFlags(t *testing.T) { flagCount = 15 ) - cfg := execute.RuntimeConfig{ + cfg := execute.BLSRuntimeConfig{ Entry: entry, Input: input, ExecutionTime: executionTime, @@ -54,27 +54,27 @@ func TestRuntimeFlags(t *testing.T) { require.Len(t, flags, flagCount) - require.Equal(t, "--"+execute.RuntimeFlagEntry, flags[0]) + require.Equal(t, "--"+execute.BLSRuntimeFlagEntry, flags[0]) require.Equal(t, entry, flags[1]) - require.Equal(t, "--"+execute.RuntimeFlagExecutionTime, flags[2]) + require.Equal(t, "--"+execute.BLSRuntimeFlagExecutionTime, flags[2]) require.Equal(t, fmt.Sprint(executionTime), flags[3]) - require.Equal(t, "--"+execute.RuntimeFlagDebug, flags[4]) + require.Equal(t, "--"+execute.BLSRuntimeFlagDebug, flags[4]) - require.Equal(t, "--"+execute.RuntimeFlagFSRoot, flags[5]) + require.Equal(t, "--"+execute.BLSRuntimeFlagFSRoot, flags[5]) require.Equal(t, fsRoot, flags[6]) - require.Equal(t, "--"+execute.RuntimeFlagFuel, flags[7]) + require.Equal(t, "--"+execute.BLSRuntimeFlagFuel, flags[7]) require.Equal(t, fmt.Sprint(fuel), flags[8]) - require.Equal(t, "--"+execute.RuntimeFlagMemory, flags[9]) + require.Equal(t, "--"+execute.BLSRuntimeFlagMemory, flags[9]) require.Equal(t, fmt.Sprint(memory), flags[10]) - require.Equal(t, "--"+execute.RuntimeFlagLogger, flags[11]) + require.Equal(t, "--"+execute.BLSRuntimeFlagLogger, flags[11]) require.Equal(t, logger, flags[12]) - require.Equal(t, "--"+execute.RuntimeFlagPermission, flags[13]) + require.Equal(t, "--"+execute.BLSRuntimeFlagPermission, flags[13]) require.Equal(t, permission, flags[14]) }) t.Run("some fields set", func(t *testing.T) { @@ -88,7 +88,7 @@ func TestRuntimeFlags(t *testing.T) { permission2 = "https://whatever.com/" ) - cfg := execute.RuntimeConfig{ + cfg := execute.BLSRuntimeConfig{ Entry: entry, Memory: memory, } @@ -102,16 +102,16 @@ func TestRuntimeFlags(t *testing.T) { require.Len(t, flags, 8) - require.Equal(t, "--"+execute.RuntimeFlagEntry, flags[0]) + require.Equal(t, "--"+execute.BLSRuntimeFlagEntry, flags[0]) require.Equal(t, entry, flags[1]) - require.Equal(t, "--"+execute.RuntimeFlagMemory, flags[2]) + require.Equal(t, "--"+execute.BLSRuntimeFlagMemory, flags[2]) require.Equal(t, fmt.Sprint(memory), flags[3]) - require.Equal(t, "--"+execute.RuntimeFlagPermission, flags[4]) + require.Equal(t, "--"+execute.BLSRuntimeFlagPermission, flags[4]) require.Equal(t, permission1, flags[5]) - require.Equal(t, "--"+execute.RuntimeFlagPermission, flags[6]) + require.Equal(t, "--"+execute.BLSRuntimeFlagPermission, flags[6]) require.Equal(t, permission2, flags[7]) }) } diff --git a/models/execute/request.go b/models/execute/request.go index 877b195c..fa1ac083 100644 --- a/models/execute/request.go +++ b/models/execute/request.go @@ -19,7 +19,7 @@ type Parameter struct { // Config represents the configurable options for an execution request. type Config struct { - Runtime RuntimeConfig `json:"runtime,omitempty"` + Runtime BLSRuntimeConfig `json:"runtime,omitempty"` Environment []EnvVar `json:"env_vars,omitempty"` Stdin *string `json:"stdin,omitempty"` Permissions []string `json:"permissions,omitempty"` diff --git a/models/execute/runtime.go b/models/execute/runtime.go index cb919afb..64059062 100644 --- a/models/execute/runtime.go +++ b/models/execute/runtime.go @@ -1,11 +1,11 @@ package execute const ( - DefaultRuntimeEntryPoint = "_start" + BLSDefaultRuntimeEntryPoint = "_start" ) // RuntimeConfig represents the CLI flags supported by the runtime -type RuntimeConfig struct { +type BLSRuntimeConfig struct { Entry string `json:"entry,omitempty"` ExecutionTime uint64 `json:"run_time,omitempty"` DebugInfo bool `json:"debug_info,omitempty"` @@ -19,13 +19,13 @@ type RuntimeConfig struct { const ( // Blockless Runtime flag names. - RuntimeFlagEntry = "entry" - RuntimeFlagExecutionTime = "run-time" - RuntimeFlagDebug = "debug-info" - RuntimeFlagFuel = "limited-fuel" - RuntimeFlagMemory = "limited-memory" - RuntimeFlagFSRoot = "fs-root-path" - RuntimeFlagLogger = "runtime-logger" - RuntimeFlagPermission = "permission" - RuntimeFlagEnv = "env" + BLSRuntimeFlagEntry = "entry" + BLSRuntimeFlagExecutionTime = "run-time" + BLSRuntimeFlagDebug = "debug-info" + BLSRuntimeFlagFuel = "limited-fuel" + BLSRuntimeFlagMemory = "limited-memory" + BLSRuntimeFlagFSRoot = "fs-root-path" + BLSRuntimeFlagLogger = "runtime-logger" + BLSRuntimeFlagPermission = "permission" + BLSRuntimeFlagEnv = "env" )