Skip to content

Commit

Permalink
Scope bls runtime (#123)
Browse files Browse the repository at this point in the history
* make sure tests run from make

* change runtime stuffs to BLS prefix to note specifics

* set the runtime cli, allowing for more options
  • Loading branch information
dmikey authored Nov 29, 2023
1 parent 6913764 commit bdd1fc9
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 46 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions cmd/node/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 2 additions & 1 deletion cmd/node/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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")
Expand Down
9 changes: 5 additions & 4 deletions config/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions executor/command_internal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
Expand Down Expand Up @@ -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])
Expand Down
18 changes: 9 additions & 9 deletions executor/runtime_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
30 changes: 15 additions & 15 deletions executor/runtime_flags_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
})
Expand All @@ -35,7 +35,7 @@ func TestRuntimeFlags(t *testing.T) {
flagCount = 15
)

cfg := execute.RuntimeConfig{
cfg := execute.BLSRuntimeConfig{
Entry: entry,
Input: input,
ExecutionTime: executionTime,
Expand All @@ -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) {
Expand All @@ -88,7 +88,7 @@ func TestRuntimeFlags(t *testing.T) {
permission2 = "https://whatever.com/"
)

cfg := execute.RuntimeConfig{
cfg := execute.BLSRuntimeConfig{
Entry: entry,
Memory: memory,
}
Expand All @@ -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])
})
}
2 changes: 1 addition & 1 deletion models/execute/request.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"`
Expand Down
22 changes: 11 additions & 11 deletions models/execute/runtime.go
Original file line number Diff line number Diff line change
@@ -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"`
Expand All @@ -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"
)

0 comments on commit bdd1fc9

Please sign in to comment.