github.com/kubeshop/testkube@v1.17.23/contrib/executor/jmeterd/pkg/slaves/env.go (about)

     1  package slaves
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
     8  	exenv "github.com/kubeshop/testkube/pkg/executor/env"
     9  )
    10  
    11  const (
    12  	MasterOverrideJvmArgs      = "MASTER_OVERRIDE_JVM_ARGS"
    13  	MasterAdditionalJvmArgs    = "MASTER_ADDITIONAL_JVM_ARGS"
    14  	SlavesOverrideJvmArgs      = "SLAVES_OVERRIDE_JVM_ARGS"
    15  	SlavesAdditionalJvmArgs    = "SLAVES_ADDITIONAL_JVM_ARGS"
    16  	SlavesAdditionalJmeterArgs = "SLAVES_ADDITIONAL_JMETER_ARGS"
    17  	SlavesCount                = "SLAVES_COUNT"
    18  	MasterPrefix               = "MASTER_"
    19  	SlavesPrefix               = "SLAVES_"
    20  	RunnerPrefix               = "RUNNER_"
    21  	HttpProxyPrefix            = "HTTP_PROXY="
    22  	HttpsProxyPrefix           = "HTTPS_PROXY="
    23  	DebugPrefix                = "DEBUG="
    24  )
    25  
    26  // ExtractSlaveEnvVariables removes slave environment variables from the given map and returns them separately.
    27  func ExtractSlaveEnvVariables(variables map[string]testkube.Variable) map[string]testkube.Variable {
    28  	slaveVariables := make(map[string]testkube.Variable)
    29  
    30  	// Iterate through the variables to extract slave environment variables.
    31  	for k, v := range variables {
    32  		switch {
    33  		case strings.HasPrefix(k, SlavesPrefix):
    34  			slaveVariables[k] = v
    35  			delete(variables, k) // Remove slave variable from the main variables map.
    36  		case strings.HasPrefix(k, MasterPrefix):
    37  			continue
    38  		default:
    39  			slaveVariables[k] = v
    40  		}
    41  	}
    42  	return slaveVariables
    43  }
    44  
    45  // GetRunnerEnvVariables returns runner env variables
    46  func GetRunnerEnvVariables() map[string]string {
    47  	envVars := make(map[string]string)
    48  	envs := os.Environ()
    49  OuterLoop:
    50  	for _, env := range envs {
    51  		for _, prefix := range []string{exenv.SecretEnvVarPrefix, exenv.SecretVarPrefix,
    52  			exenv.GitUsernameEnvVarName, exenv.GitTokenEnvVarName} {
    53  			if strings.HasPrefix(env, prefix) {
    54  				continue OuterLoop
    55  			}
    56  		}
    57  
    58  		for _, prefix := range []string{RunnerPrefix, HttpProxyPrefix, HttpsProxyPrefix, DebugPrefix} {
    59  			if strings.HasPrefix(env, prefix) {
    60  				pair := strings.SplitN(env, "=", 2)
    61  				if len(pair) != 2 {
    62  					continue OuterLoop
    63  				}
    64  
    65  				envVars[pair[0]] += pair[1]
    66  			}
    67  		}
    68  	}
    69  
    70  	envVars["CI"] = "1"
    71  	return envVars
    72  }