Skip to content

Commit

Permalink
inabox test setup for v2
Browse files Browse the repository at this point in the history
  • Loading branch information
ian-shim committed Nov 15, 2024
1 parent c0a4a66 commit e2bd06d
Show file tree
Hide file tree
Showing 16 changed files with 276 additions and 56 deletions.
2 changes: 1 addition & 1 deletion disperser/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
clean:
rm -rf ./bin

build: build_server build_batcher build_encoder build_dataapi
build: build_server build_batcher build_encoder build_dataapi build_controller

build_batcher:
go build -o ./bin/batcher ./cmd/batcher
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ require (
github.com/fxamacker/cbor/v2 v2.5.0
github.com/gin-contrib/logger v0.2.6
github.com/gin-gonic/gin v1.9.1
github.com/golang/protobuf v1.5.4
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1
github.com/hashicorp/go-multierror v1.1.1
github.com/jedib0t/go-pretty/v6 v6.5.9
github.com/joho/godotenv v1.5.1
Expand Down Expand Up @@ -102,8 +102,8 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-bexpr v0.1.10 // indirect
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -364,8 +364,6 @@ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
Expand Down
10 changes: 10 additions & 0 deletions inabox/bin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,16 @@ function start_detached {
pids="$pids $pid"
done

for FILE in $(ls $testpath/envs/controller*.env); do
set -a
source $FILE
set +a
../disperser/bin/controller > $testpath/logs/controller.log 2>&1 &

pid="$!"
pids="$pids $pid"
done

files=($(ls $testpath/envs/opr*.env))
last_index=$(( ${#files[@]} - 1 ))

Expand Down
27 changes: 16 additions & 11 deletions inabox/deploy/cmd/main.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package main

import (
"fmt"
"log"
"os"
"path/filepath"
Expand All @@ -16,13 +15,15 @@ var (
localstackFlagName = "localstack-port"
deployResourcesFlagName = "deploy-resources"

metadataTableName = "test-BlobMetadata"
bucketTableName = "test-BucketStore"
metadataTableName = "test-BlobMetadata"
bucketTableName = "test-BucketStore"
metadataTableNameV2 = "test-BlobMetadata-v2"

chainCmdName = "chain"
localstackCmdName = "localstack"
expCmdName = "exp"
allCmdName = "all"
chainCmdName = "chain"
localstackCmdName = "localstack"
expCmdName = "exp"
generateEnvCmdName = "env"
allCmdName = "all"
)

func main() {
Expand Down Expand Up @@ -66,6 +67,11 @@ func main() {
Usage: "deploy the contracts and create configurations for all EigenDA components",
Action: getRunner(expCmdName),
},
{
Name: generateEnvCmdName,
Usage: "generate the environment variables for the inabox test",
Action: getRunner(generateEnvCmdName),
},
{
Name: allCmdName,
Usage: "deploy all infra, resources, contracts",
Expand Down Expand Up @@ -106,6 +112,8 @@ func getRunner(command string) func(ctx *cli.Context) error {
return localstack(ctx)
case expCmdName:
config.DeployExperiment()
case generateEnvCmdName:
config.GenerateAllVariables()
case allCmdName:
return all(ctx, config)
}
Expand All @@ -121,7 +129,6 @@ func chainInfra(ctx *cli.Context, config *deploy.Config) error {
config.StartAnvil()

if deployer, ok := config.GetDeployer(config.EigenDA.Deployer); ok && deployer.DeploySubgraphs {
fmt.Println("Starting graph node")
config.StartGraphNode()
}

Expand All @@ -130,14 +137,12 @@ func chainInfra(ctx *cli.Context, config *deploy.Config) error {
}

func localstack(ctx *cli.Context) error {

pool, _, err := deploy.StartDockertestWithLocalstackContainer(ctx.String(localstackFlagName))
if err != nil {
return err
}

if ctx.Bool(deployResourcesFlagName) {
return deploy.DeployResources(pool, ctx.String(localstackFlagName), metadataTableName, bucketTableName, "")
return deploy.DeployResources(pool, ctx.String(localstackFlagName), metadataTableName, bucketTableName, metadataTableNameV2)
}

return nil
Expand Down
5 changes: 5 additions & 0 deletions inabox/deploy/codegen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,14 @@ import (

dis "github.com/Layr-Labs/eigenda/disperser/cmd/apiserver/flags"
bat "github.com/Layr-Labs/eigenda/disperser/cmd/batcher/flags"
controller "github.com/Layr-Labs/eigenda/disperser/cmd/controller/flags"
enc "github.com/Layr-Labs/eigenda/disperser/cmd/encoder/flags"
opr "github.com/Layr-Labs/eigenda/node/flags"
churner "github.com/Layr-Labs/eigenda/operators/churner/flags"
retriever "github.com/Layr-Labs/eigenda/retriever/flags"

// relay "github.com/Layr-Labs/eigenda/relay/flags"

"github.com/urfave/cli"
)

Expand Down Expand Up @@ -119,6 +122,8 @@ func main() {
configs += genVars("OperatorVars", opr.Flags)
configs += genVars("RetrieverVars", retriever.Flags)
configs += genVars("ChurnerVars", churner.Flags)
configs += genVars("ControllerVars", controller.Flags)
// configs += genVars("RelayVars", relay.Flags)

fmt.Println(configs)

Expand Down
160 changes: 137 additions & 23 deletions inabox/deploy/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func (env *Config) loadPrivateKeys() error {
names = append(names, fmt.Sprintf("%v%v", prefix, i))
}
}
addNames("dis", env.Services.Counts.NumDis)
addNames("dis", 2)
addNames("opr", env.Services.Counts.NumOpr)
addNames("staker", env.Services.Counts.NumOpr)
addNames("retriever", 1)
Expand Down Expand Up @@ -110,7 +110,7 @@ func (env *Config) applyDefaults(c any, prefix, stub string, ind int) {

for key, value := range env.Services.Variables["globals"] {
field := v.FieldByName(prefix + key)
if field.IsValid() && field.CanSet() {
if field.IsValid() && field.CanSet() && field.String() == "" {
field.SetString(value)
}
}
Expand Down Expand Up @@ -157,7 +157,7 @@ func (env *Config) generateChurnerVars(ind int, graphUrl, logPath, grpcPort stri
}

// Generates disperser .env
func (env *Config) generateDisperserVars(ind int, key, address, logPath, dbPath, grpcPort string) DisperserVars {
func (env *Config) generateDisperserVars(ind int, logPath, dbPath, grpcPort string) DisperserVars {
v := DisperserVars{
DISPERSER_SERVER_S3_BUCKET_NAME: "test-eigenda-blobstore",
DISPERSER_SERVER_DYNAMODB_TABLE_NAME: "test-BlobMetadata",
Expand Down Expand Up @@ -194,6 +194,43 @@ func (env *Config) generateDisperserVars(ind int, key, address, logPath, dbPath,

}

func (env *Config) generateDisperserV2Vars(ind int, logPath, dbPath, grpcPort string) DisperserVars {
v := DisperserVars{
DISPERSER_SERVER_S3_BUCKET_NAME: "test-eigenda-blobstore",
DISPERSER_SERVER_DYNAMODB_TABLE_NAME: "test-BlobMetadata-v2",
DISPERSER_SERVER_RATE_BUCKET_TABLE_NAME: "",
DISPERSER_SERVER_RATE_BUCKET_STORE_SIZE: "100000",
DISPERSER_SERVER_GRPC_PORT: grpcPort,
DISPERSER_SERVER_ENABLE_METRICS: "true",
DISPERSER_SERVER_METRICS_HTTP_PORT: "9093",
DISPERSER_SERVER_CHAIN_RPC: "",
DISPERSER_SERVER_PRIVATE_KEY: "123",
DISPERSER_SERVER_NUM_CONFIRMATIONS: "0",

DISPERSER_SERVER_REGISTERED_QUORUM_ID: "0,1",
DISPERSER_SERVER_TOTAL_UNAUTH_BYTE_RATE: "10000000,10000000",
DISPERSER_SERVER_PER_USER_UNAUTH_BYTE_RATE: "32000,32000",
DISPERSER_SERVER_TOTAL_UNAUTH_BLOB_RATE: "10,10",
DISPERSER_SERVER_PER_USER_UNAUTH_BLOB_RATE: "2,2",
DISPERSER_SERVER_ENABLE_RATELIMITER: "true",

DISPERSER_SERVER_RETRIEVAL_BLOB_RATE: "4",
DISPERSER_SERVER_RETRIEVAL_BYTE_RATE: "10000000",

DISPERSER_SERVER_BUCKET_SIZES: "5s",
DISPERSER_SERVER_BUCKET_MULTIPLIERS: "1",
DISPERSER_SERVER_COUNT_FAILED: "true",

DISPERSER_SERVER_BLS_OPERATOR_STATE_RETRIVER: env.EigenDA.OperatorStateRetreiver,
DISPERSER_SERVER_EIGENDA_SERVICE_MANAGER: env.EigenDA.ServiceManager,
DISPERSER_SERVER_DISPERSER_VERSION: "2",
}

env.applyDefaults(&v, "DISPERSER_SERVER", "dis", ind)

return v
}

// Generates batcher .env
func (env *Config) generateBatcherVars(ind int, key, graphUrl, logPath string) BatcherVars {
v := BatcherVars{
Expand Down Expand Up @@ -252,6 +289,58 @@ func (env *Config) generateEncoderVars(ind int, grpcPort string) EncoderVars {
return v
}

func (env *Config) generateEncoderV2Vars(ind int, grpcPort string) EncoderVars {
v := EncoderVars{
DISPERSER_ENCODER_AWS_REGION: "",
DISPERSER_ENCODER_AWS_ACCESS_KEY_ID: "",
DISPERSER_ENCODER_AWS_SECRET_ACCESS_KEY: "",
DISPERSER_ENCODER_AWS_ENDPOINT_URL: "",
DISPERSER_ENCODER_GRPC_PORT: grpcPort,
DISPERSER_ENCODER_ENABLE_METRICS: "true",
DISPERSER_ENCODER_G1_PATH: "",
DISPERSER_ENCODER_G2_PATH: "",
DISPERSER_ENCODER_SRS_ORDER: "",
DISPERSER_ENCODER_SRS_LOAD: "",
DISPERSER_ENCODER_CACHE_PATH: "",
DISPERSER_ENCODER_VERBOSE: "",
DISPERSER_ENCODER_NUM_WORKERS: fmt.Sprint(runtime.GOMAXPROCS(0)),
DISPERSER_ENCODER_MAX_CONCURRENT_REQUESTS: "16",
DISPERSER_ENCODER_REQUEST_POOL_SIZE: "32",
DISPERSER_ENCODER_ENCODER_VERSION: "2",
}

env.applyDefaults(&v, "DISPERSER_ENCODER", "enc", ind)

return v
}

func (env *Config) generateControllerVars(ind int, graphUrl string) ControllerVars {
v := ControllerVars{
CONTROLLER_DYNAMODB_TABLE_NAME: "test-BlobMetadata-v2",
CONTROLLER_BLS_OPERATOR_STATE_RETRIVER: env.EigenDA.OperatorStateRetreiver,
CONTROLLER_EIGENDA_SERVICE_MANAGER: env.EigenDA.ServiceManager,
CONTROLLER_USE_GRAPH: "true",
CONTROLLER_GRAPH_URL: graphUrl,
CONTROLLER_ENCODING_PULL_INTERVAL: "1s",
CONTROLLER_AVAILABLE_RELAYS: "0,1,2,3",
CONTROLLER_DISPATCHER_PULL_INTERVAL: "1s",
CONTROLLER_NODE_REQUEST_TIMEOUT: "5s",
CONTROLLER_NUM_CONNECTIONS_TO_NODES: "10",
CONTROLLER_CHAIN_RPC: "",
CONTROLLER_PRIVATE_KEY: "123",
CONTROLLER_NUM_CONFIRMATIONS: "0",
CONTROLLER_INDEXER_PULL_INTERVAL: "1s",
CONTROLLER_AWS_REGION: "",
CONTROLLER_AWS_ACCESS_KEY_ID: "",
CONTROLLER_AWS_SECRET_ACCESS_KEY: "",
CONTROLLER_AWS_ENDPOINT_URL: "",
CONTROLLER_ENCODER_ADDRESS: "0.0.0.0:34001",
}
env.applyDefaults(&v, "CONTROLLER", "controller", ind)

return v
}

// Generates DA node .env
func (env *Config) generateOperatorVars(ind int, name, key, churnerUrl, logPath, dbPath, dispersalPort, retrievalPort, metricsPort, nodeApiPort string) OperatorVars {

Expand Down Expand Up @@ -282,7 +371,7 @@ func (env *Config) generateOperatorVars(ind int, name, key, churnerUrl, logPath,
NODE_METRICS_PORT: metricsPort,
NODE_ENABLE_NODE_API: "true",
NODE_API_PORT: nodeApiPort,
NODE_TIMEOUT: "10",
NODE_TIMEOUT: "10s",
NODE_QUORUM_ID_LIST: "0,1",
NODE_DB_PATH: dbPath,
NODE_ENABLE_TEST_MODE: "false", // using encrypted key in inabox
Expand Down Expand Up @@ -344,6 +433,8 @@ func (env *Config) generateRetrieverVars(ind int, key string, graphUrl, logPath,
RETRIEVER_CACHE_ENCODED_BLOBS: "false",

RETRIEVER_INDEXER_PULL_INTERVAL: "1s",
RETRIEVER_USE_GRAPH: "true",
RETRIEVER_GRAPH_URL: graphUrl,
}

v.RETRIEVER_G2_PATH = ""
Expand Down Expand Up @@ -483,23 +574,34 @@ func (env *Config) GenerateAllVariables() {
churnerUrl := fmt.Sprintf("%s:%s", churnerConfig.CHURNER_HOSTNAME, churnerConfig.CHURNER_GRPC_PORT)

// Generate disperser nodes
for i := 0; i < env.Services.Counts.NumDis; i++ {
grpcPort := fmt.Sprint(port + 1)
port += 2
grpcPort := fmt.Sprint(port + 1)
port += 2

name := fmt.Sprintf("dis%v", i)
logPath, dbPath, filename, envFile := env.getPaths(name)
key, address := env.getKey(name)
name = "dis0"
logPath, dbPath, filename, envFile := env.getPaths(name)
disperserConfig := env.generateDisperserVars(0, logPath, dbPath, grpcPort)
writeEnv(disperserConfig.getEnvMap(), envFile)
env.Dispersers = append(env.Dispersers, disperserConfig)

// Convert key to address
disperserConfig := env.generateDisperserVars(i, key, address, logPath, dbPath, grpcPort)
writeEnv(disperserConfig.getEnvMap(), envFile)
env.Dispersers = append(env.Dispersers, disperserConfig)
env.genService(
compose, name, disImage,
filename, []string{grpcPort})

env.genService(
compose, name, disImage,
filename, []string{grpcPort})
}
// v2 disperser
grpcPort = fmt.Sprint(port + 1)
port += 2

name = "dis1"
logPath, dbPath, filename, envFile = env.getPaths(name)

// Convert key to address
disperserConfig = env.generateDisperserV2Vars(0, logPath, dbPath, grpcPort)
writeEnv(disperserConfig.getEnvMap(), envFile)
env.Dispersers = append(env.Dispersers, disperserConfig)

env.genService(
compose, name, disImage,
filename, []string{grpcPort})

for i := 0; i < env.Services.Counts.NumOpr; i++ {
metricsPort := fmt.Sprint(port + 1) // port
Expand Down Expand Up @@ -545,6 +647,16 @@ func (env *Config) GenerateAllVariables() {
compose, name, encoderImage,
filename, []string{"34000"})

// v2 encoder
name = "enc1"
_, _, filename, envFile = env.getPaths(name)
encoderConfig = env.generateEncoderV2Vars(0, "34001")
writeEnv(encoderConfig.getEnvMap(), envFile)
env.Encoder = append(env.Encoder, encoderConfig)
env.genService(
compose, name, encoderImage,
filename, []string{"34001"})

// Stakers
for i := 0; i < env.Services.Counts.NumOpr; i++ {

Expand All @@ -562,15 +674,17 @@ func (env *Config) GenerateAllVariables() {
port += 2
name = "retriever0"
key, _ = env.getKey(name)
logPath, _, filename, envFile = env.getPaths(name)
logPath, _, _, envFile = env.getPaths(name)
retrieverConfig := env.generateRetrieverVars(0, key, graphUrl, logPath, fmt.Sprint(port))
writeEnv(retrieverConfig.getEnvMap(), envFile)
env.Retriever = retrieverConfig

_ = filename
// env.genService(
// compose, name, retrieverImage,
// filename, []string{fmt.Sprint(port)})
// Controller
name = "controller0"
_, _, _, envFile = env.getPaths(name)
controllerConfig := env.generateControllerVars(0, graphUrl)
writeEnv(controllerConfig.getEnvMap(), envFile)
env.Controller = controllerConfig

if env.Environment.IsLocal() {

Expand Down
Loading

0 comments on commit e2bd06d

Please sign in to comment.