Best Testkube code snippet using v1.mergeVariables
executions.go
Source:executions.go
...398 }399 test := testsmapper.MapTestCRToAPI(*testCR)400 if test.ExecutionRequest != nil {401 // Test variables lowest priority, then test suite, then test suite execution / test execution402 request.Variables = mergeVariables(test.ExecutionRequest.Variables, request.Variables)403 // Combine test executor args with execution args404 request.Args = append(request.Args, test.ExecutionRequest.Args...)405 request.Envs = mergeEnvs(request.Envs, test.ExecutionRequest.Envs)406 request.SecretEnvs = mergeEnvs(request.SecretEnvs, test.ExecutionRequest.SecretEnvs)407 if request.VariablesFile == "" && test.ExecutionRequest.VariablesFile != "" {408 request.VariablesFile = test.ExecutionRequest.VariablesFile409 }410 if request.HttpProxy == "" && test.ExecutionRequest.HttpProxy != "" {411 request.HttpProxy = test.ExecutionRequest.HttpProxy412 }413 if request.HttpsProxy == "" && test.ExecutionRequest.HttpsProxy != "" {414 request.HttpsProxy = test.ExecutionRequest.HttpsProxy415 }416 }417 // get executor from kubernetes CRs418 executorCR, err := s.ExecutorsClient.GetByType(testCR.Spec.Type_)419 if err != nil {420 return options, fmt.Errorf("can't get executor spec: %w", err)421 }422 var usernameSecret, tokenSecret *testkube.SecretRef423 if test.Content != nil && test.Content.Repository != nil {424 usernameSecret = test.Content.Repository.UsernameSecret425 tokenSecret = test.Content.Repository.TokenSecret426 }427 return client.ExecuteOptions{428 TestName: id,429 Namespace: namespace,430 TestSpec: testCR.Spec,431 ExecutorName: executorCR.ObjectMeta.Name,432 ExecutorSpec: executorCR.Spec,433 Request: request,434 Sync: request.Sync,435 Labels: testCR.Labels,436 UsernameSecret: usernameSecret,437 TokenSecret: tokenSecret,438 ImageOverride: request.Image,439 }, nil440}441// streamLogsFromResult writes logs from the output of executionResult to the writer442func (s *TestkubeAPI) streamLogsFromResult(executionResult *testkube.ExecutionResult, w *bufio.Writer) error {443 enc := json.NewEncoder(w)444 fmt.Fprintf(w, "data: ")445 s.Log.Debug("using logs from result")446 output := testkube.ExecutorOutput{447 Type_: output.TypeResult,448 Content: executionResult.Output,449 Result: executionResult,450 }451 err := enc.Encode(output)452 if err != nil {453 s.Log.Infow("Encode", "error", err)454 return err455 }456 fmt.Fprintf(w, "\n")457 w.Flush()458 return nil459}460// streamLogsFromJob streams logs in chunks to writer from the running execution461func (s *TestkubeAPI) streamLogsFromJob(executionID string, w *bufio.Writer) {462 enc := json.NewEncoder(w)463 s.Log.Debug("getting logs from Kubernetes job")464 logs, err := s.Executor.Logs(executionID)465 s.Log.Debugw("waiting for jobs channel", "channelSize", len(logs))466 if err != nil {467 output.PrintError(os.Stdout, err)468 s.Log.Errorw("getting logs error", "error", err)469 w.Flush()470 return471 }472 // loop through pods log lines - it's blocking channel473 // and pass single log output as sse data chunk474 for out := range logs {475 s.Log.Debugw("got log", "out", out)476 fmt.Fprintf(w, "data: ")477 err = enc.Encode(out)478 if err != nil {479 s.Log.Infow("Encode", "error", err)480 }481 // enc.Encode adds \n and we need \n\n after `data: {}` chunk482 fmt.Fprintf(w, "\n")483 w.Flush()484 }485}486func (s TestkubeAPI) getNextExecutionNumber(testName string) int {487 number, err := s.ExecutionResults.GetNextExecutionNumber(context.Background(), testName)488 if err != nil {489 s.Log.Errorw("retrieving latest execution", "error", err)490 return number491 }492 return number493}494func mergeVariables(vars1 map[string]testkube.Variable, vars2 map[string]testkube.Variable) map[string]testkube.Variable {495 variables := map[string]testkube.Variable{}496 for k, v := range vars1 {497 variables[k] = v498 }499 for k, v := range vars2 {500 variables[k] = v501 }502 return variables503}504func mergeEnvs(envs1 map[string]string, envs2 map[string]string) map[string]string {505 envs := map[string]string{}506 for k, v := range envs1 {507 envs[k] = v508 }...
executions_test.go
Source:executions_test.go
...17func TestParamsNilAssign(t *testing.T) {18 t.Run("merge two maps", func(t *testing.T) {19 p1 := map[string]testkube.Variable{"p1": testkube.NewBasicVariable("p1", "1")}20 p2 := map[string]testkube.Variable{"p2": testkube.NewBasicVariable("p2", "2")}21 out := mergeVariables(p1, p2)22 assert.Equal(t, 2, len(out))23 assert.Equal(t, "1", out["p1"].Value)24 })25 t.Run("merge two maps with override", func(t *testing.T) {26 p1 := map[string]testkube.Variable{"p1": testkube.NewBasicVariable("p1", "1")}27 p2 := map[string]testkube.Variable{"p1": testkube.NewBasicVariable("p1", "2")}28 out := mergeVariables(p1, p2)29 assert.Equal(t, 1, len(out))30 assert.Equal(t, "2", out["p1"].Value)31 })32 t.Run("merge with nil map", func(t *testing.T) {33 p2 := map[string]testkube.Variable{"p2": testkube.NewBasicVariable("p2", "2")}34 out := mergeVariables(nil, p2)35 assert.Equal(t, 1, len(out))36 assert.Equal(t, "2", out["p2"].Value)37 })38}39func TestTestkubeAPI_ExecutionLogsHandler(t *testing.T) {40 app := fiber.New()41 resultRepo := MockExecutionResultsRepository{}42 executor := &MockExecutor{}43 s := &TestkubeAPI{44 HTTPServer: server.HTTPServer{45 Mux: app,46 Log: log.DefaultLogger,47 },48 ExecutionResults: &resultRepo,...
lob.go
Source:lob.go
1package lob2import (3 "bytes"4 "encoding/json"5 "errors"6 "fmt"7 "io"8 "io/ioutil"9 "net/http"10 "net/url"11 "os"12 "strings"13)14// https://lob.com/docs#letters_create15type LobSendLetterRequest struct {16 Color bool `json:"color"`17 MailType string `json:"mail_type"`18 From string `json:"from"` // Temporarily set to my address19 To string `json:"to"` // Lob Address object ID20 File string `json:"file"` // HTML string of letter's layout21 MergeVariables map[string]string `json:"merge_variables"`22}23type LobLetterThumbnail struct {24 Small string `json:"small"`25 Medium string `json:"medium"`26 Large string `json:"large"`27}28// https://lob.com/docs#letters_object29// Selectively chose whoch fields from the letter object we care about30type LobSendLetterResponse struct {31 Id string `json:"id"`32 Thumbnails []LobLetterThumbnail `json:"thumbnails"`33 ExpectedDeliveryDate string `json:"expected_delivery_date"`34}35const (36 USPSStandard = "usps_standard"37 LobTestEnvironment = "test"38 LobLiveEnvironment = "live"39 LobInvalidEnvironmentError = "Lob API environment must either be specified as test or live"40 LobCreateLetterRoute = "https://api.lob.com/v1/letters"41 LobTestAPIKey = "LOB_TEST_API_KEY"42 LobLiveAPIKey = "LOB_LIVE_API_KEY"43 LobInTouchTestAddressId = "adr_4cd2f1452346231d"44 LobInTouchLiveAddressId = "adr_abd50ec552ac4841"45 LobBaseAPI = "https://api.lob.com/v1/"46 LobUserAgent = "intouch/1.0"47)48func GetInTouchAddress(lobEnvironment string) (string, error) {49 switch lobEnvironment {50 case LobTestEnvironment:51 return LobInTouchTestAddressId, nil52 case LobLiveEnvironment:53 return LobInTouchLiveAddressId, nil54 default:55 return "", errors.New(LobInvalidEnvironmentError)56 }57}58func GetLetterHTMLTemplate(letterText string) (string, error) {59 bytes, err := ioutil.ReadFile("./templates/letter.html") // just pass the file name60 if err != nil {61 return "", err62 }63 htmlString := string(bytes) // convert content to a 'string'64 // NOTE: THIS IS A HACK to get around Lob's restriction on merge variables65 // needing to be <500 characters long66 parts := strings.Split(htmlString, "{{text}}")67 htmlString = parts[0] + letterText + parts[1]68 return htmlString, nil69}70// Converts YYYY-MM-DD to MM-DD-YY71func LobDateToDBDate(date string) (string, error) {72 parts := strings.Split(date, "-")73 if len(parts) != 3 || len(parts[0]) != 4 {74 return "", errors.New("Date string is not formatted as YYYY-MM-DD")75 }76 return strings.Join(77 []string{parts[1], parts[2], parts[0][2:]},78 "/",79 ), nil80}81// Post performs a POST request to the Lob API.82func Post(endpoint string, params map[string]string, returnValue interface{}, environment string) error {83 fullURL := LobBaseAPI + endpoint84 fmt.Println("Lob POST ", fullURL)85 var body io.Reader86 if params != nil {87 form := url.Values(make(map[string][]string))88 for k, v := range params {89 form.Add(k, v)90 }91 bodyString := form.Encode()92 body = bytes.NewBuffer([]byte(bodyString))93 }94 req, err := http.NewRequest("POST", fullURL, body)95 if err != nil {96 return err97 }98 if body != nil {99 req.Header.Add("Content-Type", "application/x-www-form-urlencoded")100 }101 key, err := getAPIKey(environment)102 if err != nil {103 return err104 }105 req.SetBasicAuth(key, "")106 // req.Header.Add("Lob-Version", APIVersion)107 req.Header.Add("Accept", "application/json")108 req.Header.Add("User-Agent", LobUserAgent)109 resp, err := http.DefaultClient.Do(req)110 if err != nil {111 return err112 }113 defer resp.Body.Close()114 data, err := ioutil.ReadAll(resp.Body)115 if err != nil {116 return err117 }118 if resp.StatusCode != 200 {119 err = fmt.Errorf("Non-200 status code %d returned from %s with body %s", resp.StatusCode, fullURL, data)120 json.Unmarshal(data, returnValue) // try, anyway -- in case the caller wants error info121 return err122 }123 return json.Unmarshal(data, returnValue)124}125func getAPIKey(lobEnvironment string) (string, error) {126 switch lobEnvironment {127 case LobTestEnvironment:128 apiKey, ok := os.LookupEnv(LobTestAPIKey)129 if !ok {130 return "", errors.New("Test API Key doesn't exist as an environment variable")131 }132 return apiKey, nil133 case LobLiveEnvironment:134 apiKey, ok := os.LookupEnv(LobLiveAPIKey)135 if !ok {136 return "", errors.New("Live API Key doesn't exist as an environment variable")137 }138 return apiKey, nil139 default:140 return "", errors.New(LobInvalidEnvironmentError)141 }142}...
mergeVariables
Using AI Code Generation
1import (2func main() {3 var1 := v1.Variable{Name: "var1", Value: "val1"}4 var2 := v1.Variable{Name: "var2", Value: "val2"}5 var3 := v1.Variable{Name: "var3", Value: "val3"}6 var4 := v1.Variable{Name: "var4", Value: "val4"}7 var5 := v1.Variable{Name: "var5", Value: "val5"}8 var6 := v1.Variable{Name: "var6", Value: "val6"}9 vars1 := []v1.Variable{var1, var2, var3}10 vars2 := []v1.Variable{var4, var5, var6}11 vars3 := v1.MergeVariables(vars1, vars2)12 fmt.Println(vars3)13}14[{var1 val1} {var2 val2} {var3 val3} {var4 val4} {var5 val5} {var6 val6}]
mergeVariables
Using AI Code Generation
1import ( 2func main() {3 var1 := v1.Variable{1, 2, 3, 4, 5}4 var2 := v1.Variable{1, 2, 3, 4, 5}5 var3 := v1.mergeVariables(var1, var2)6 fmt.Println(var3)7}8type Variable struct {9}10func mergeVariables(var1 Variable, var2 Variable) Variable {11 return Variable{var1.A + var2.A, var1.B + var2.B, var1.C + var2.C, var1.D + var2.D, var1.E + var2.E}12}13import (14func TestMergeVariables(t *testing.T) {15 var1 := Variable{1, 2, 3, 4, 5}16 var2 := Variable{1, 2, 3, 4, 5}17 var3 := mergeVariables(var1, var2)18 if var3.A != 2 {19 t.Error("Expected 2, got ", var3.A)20 }21 if var3.B != 4 {22 t.Error("Expected 4, got ", var3.B)23 }24 if var3.C != 6 {25 t.Error("Expected 6, got ", var3.C)26 }27 if var3.D != 8 {28 t.Error("Expected 8, got ", var3.D)29 }30 if var3.E != 10 {31 t.Error("Expected 10, got ", var3.E)32 }33}
mergeVariables
Using AI Code Generation
1import (2func main() {3 items := []interface{}{1, 2, 3, 4, 5, 6}4 ch1 := make(chan interface{})5 go func() {6 for _, item := range items {7 }8 close(ch1)9 }()10 ch2 := make(chan interface{})11 go func() {12 for _, item := range items {13 }14 close(ch2)15 }()16 ch3 := make(chan interface{})17 go func() {18 for _, item := range items {19 }20 close(ch3)21 }()22 ch4 := make(chan interface{})23 go func() {24 for _, item := range items {25 }26 close(ch4)27 }()28 ch5 := make(chan interface{})29 go func() {30 for _, item := range items {31 }32 close(ch5)33 }()34 ch6 := make(chan interface{})35 go func() {36 for _, item := range items {37 }38 close(ch6)39 }()40 ch7 := make(chan interface{})41 go func() {42 for _, item := range items {43 }44 close(ch7)45 }()46 ch8 := make(chan interface{})47 go func() {48 for _, item := range items {49 }50 close(ch8)51 }()52 ch9 := make(chan interface{})53 go func() {54 for _, item := range items {55 }56 close(ch9)57 }()58 ch10 := make(chan interface
mergeVariables
Using AI Code Generation
1import "fmt"2func main() {3 fmt.Println("Hello, playground")4 v1 := v1{}5 v1.mergeVariables()6}7import "fmt"8type v1 struct {9}10func (v v1) mergeVariables() {11 fmt.Println("Hello, playground")12 fmt.Println(v.variable1 + v.variable2)13}
mergeVariables
Using AI Code Generation
1import (2func main() {3 v1 := v1.New()4 v1.Set("a", "b")5 v1.Set("c", "d")6 v2 := v1.New()7 v2.Set("a", "e")8 v2.Set("f", "g")9 v1.MergeVariables(v2)10 fmt.Println(v1.Get("a"))11 fmt.Println(v1.Get("c"))12 fmt.Println(v1.Get("f"))13}14v1.MergeVariables(v2)15v2.MergeVariables(v1)
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!