Skip to content

Commit

Permalink
add new flags for run command
Browse files Browse the repository at this point in the history
  • Loading branch information
dejanzele committed May 15, 2024
1 parent 414e15c commit 0d04467
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 17 deletions.
8 changes: 8 additions & 0 deletions cmd/simulator/cmd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ The process is designed to mimic real-world Kubernetes environments for testing

pterm.Info.Printf("setting the default env vars type to %s type\n", config.DefaultEnvVarsType)
resources.SetDefaultEnvVarsType(config.DefaultEnvVarsType)
pterm.Success.Printf("setting env var count to %d\n", config.EnvVarCount)
resources.EnvVarCount = config.EnvVarCount
pterm.Success.Printf("setting max env var size to %d bytes\n", config.MaxEnvVarSize)
resources.MaxEnvVarSize = config.MaxEnvVarSize

if config.Remote {
pterm.Success.Println("running simulation in remote Kubernetes cluster")
Expand Down Expand Up @@ -118,6 +122,8 @@ func runRemote(ctx context.Context, client kubernetes.Interface) error {
"--job-creator-limit", fmt.Sprintf("%d", config.JobCreatorLimit),
"--random-env-vars", fmt.Sprintf("%t", config.RandomEnvVars),
"--default-env-vars-type", config.DefaultEnvVarsType,
"--env-var-count", fmt.Sprintf("%d", config.EnvVarCount),
"--max-env-var-size", fmt.Sprintf("%d", config.MaxEnvVarSize),
"--namespace", config.Namespace,
"--no-gui",
"--verbose",
Expand Down Expand Up @@ -177,6 +183,8 @@ func NewRunCmd() *cobra.Command {
runCmd.Flags().BoolVar(&config.RandomEnvVars, "random-env-vars", config.RandomEnvVars, "use random env vars")
runCmd.Flags().StringVar(&config.DefaultEnvVarsType, "default-env-vars-type", config.DefaultEnvVarsType, "default env vars type")
runCmd.Flags().StringVar(&config.SimulatorNamespace, "simulator-namespace", config.SimulatorNamespace, "namespace in which to create simulator resources")
runCmd.Flags().IntVar(&config.EnvVarCount, "env-var-count", config.EnvVarCount, "number of env vars in a pod spec")
runCmd.Flags().IntVar(&config.MaxEnvVarSize, "max-env-var-size", config.MaxEnvVarSize, "maximum size of an env var in bytes")

return runCmd
}
5 changes: 5 additions & 0 deletions cmd/simulator/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,9 @@ var (
RandomEnvVars = false
// DefaultEnvVarsType is the default envvar type which are generated when creating fake pods.
DefaultEnvVarsType = "medium"
// EnvVarCount is the number of envvars in a pod spec.
EnvVarCount = 5
// MaxEnvVarSize is maximum size of an env var in bytes.
// It is used only when RandomEnvVars is set to true.
MaxEnvVarSize = 10 * 1024
)
39 changes: 22 additions & 17 deletions internal/simulator/resources/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,47 +15,52 @@ import (
)

const (
defaultEnvVarCount = 5
LabelKeyApp = "app"
LabelValueFakeJob = "fake-job"
LabelValueFakePod = "fake-pod"
LabelSelectorFakePod = LabelKeyApp + "=" + LabelValueFakePod
)

Check failure on line 22 in internal/simulator/resources/resources.go

View workflow job for this annotation

GitHub Actions / lint / Lint Go

File is not `gofmt`-ed with `-s` (gofmt)

var DefaultEnvVarsType = newEnvVars(defaultEnvVarCount, 2*1024, "SOME_ENV_VAR_MEDIUM")
var (
// EnvVarCount is the number of envvars in a pod spec.
EnvVarCount = 5
// MaxEnvVarSize is the maximum size of an env var in bytes.
MaxEnvVarSize = 10 * 1024
// EnvVarsType is the type of env vars that should be used when creating fake pods (nano, micro, xsmall...).
EnvVarsType = newEnvVars(EnvVarCount, 2*1024, "SOME_ENV_VAR_MEDIUM")
)

func SetDefaultEnvVarsType(envVarType string) {
DefaultEnvVarsType = GetEnvVars(envVarType)
EnvVarsType = GetEnvVars(envVarType)
}

func GetEnvVars(envVarType string) []corev1.EnvVar {
switch envVarType {
case "nano":
return newEnvVars(defaultEnvVarCount, 100, "SOME_ENV_VAR_NANO")
return newEnvVars(EnvVarCount, 100, "SOME_ENV_VAR_NANO")
case "micro":
return newEnvVars(defaultEnvVarCount, 200, "SOME_ENV_VAR_MICRO")
return newEnvVars(EnvVarCount, 200, "SOME_ENV_VAR_MICRO")
case "xsmall":
return newEnvVars(defaultEnvVarCount, 500, "SOME_ENV_VAR_XSMALL")
return newEnvVars(EnvVarCount, 500, "SOME_ENV_VAR_XSMALL")
case "small":
return newEnvVars(defaultEnvVarCount, 1024, "SOME_ENV_VAR_SMALL")
return newEnvVars(EnvVarCount, 1024, "SOME_ENV_VAR_SMALL")
case "medium":
return newEnvVars(defaultEnvVarCount, 2*1024, "SOME_ENV_VAR_MEDIUM")
return newEnvVars(EnvVarCount, 2*1024, "SOME_ENV_VAR_MEDIUM")
case "large":
return newEnvVars(defaultEnvVarCount, 4*1024, "SOME_ENV_VAR_LARGE")
return newEnvVars(EnvVarCount, 4*1024, "SOME_ENV_VAR_LARGE")
case "xlarge":
return newEnvVars(defaultEnvVarCount, 8*1024, "SOME_ENV_VAR_XLARGE")
return newEnvVars(EnvVarCount, 8*1024, "SOME_ENV_VAR_XLARGE")
case "xlarge2":
return newEnvVars(defaultEnvVarCount, 10*1024, "SOME_ENV_VAR_XLARGE2")
return newEnvVars(EnvVarCount, 10*1024, "SOME_ENV_VAR_XLARGE2")
case "xlarge8":
return newEnvVars(defaultEnvVarCount, 40*1024, "SOME_ENV_VAR_XLARGE8")
return newEnvVars(EnvVarCount, 40*1024, "SOME_ENV_VAR_XLARGE8")
default:
return newEnvVars(defaultEnvVarCount, 2*1024, "SOME_ENV_VAR_MEDIUM")
return newEnvVars(EnvVarCount, 2*1024, "SOME_ENV_VAR_MEDIUM")
}
}

func GetRandomEnvVarType() []corev1.EnvVar {
size := 1 + rand.Intn(40*1024)
return newEnvVars(defaultEnvVarCount, size, "SOME_ENV_VAR_RANDOM")
size := 1 + rand.Intn(MaxEnvVarSize)
return newEnvVars(EnvVarCount, size, "SOME_ENV_VAR_RANDOM")
}

// newEnvVars creates a slice of envvars with the specified count and size.
Expand Down Expand Up @@ -194,7 +199,7 @@ func NewFakePod(name, namespace string, randomEnvVars bool) *corev1.Pod {
// newPodSpec creates a new pod spec.
// If randomEnvVars is true, a random envvar slice will be used, otherwise the default (large) envvar slice will be used.
func newPodSpec(randomEnvVars bool) corev1.PodSpec {
envVars := DefaultEnvVarsType
envVars := EnvVarsType
if randomEnvVars {
envVars = GetRandomEnvVarType()
}
Expand Down

0 comments on commit 0d04467

Please sign in to comment.