...

Source file src/github.com/linkerd/linkerd2/test/integration/external/externalresources/rabbitmq_test.go

Documentation: github.com/linkerd/linkerd2/test/integration/external/externalresources

     1  package externalresources
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"os"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/linkerd/linkerd2/testutil"
    11  )
    12  
    13  var TestHelper *testutil.TestHelper
    14  
    15  func TestMain(m *testing.M) {
    16  	TestHelper = testutil.NewTestHelper()
    17  	// Block test execution until control plane pods are running
    18  	TestHelper.WaitUntilDeployReady(testutil.LinkerdDeployReplicasEdge)
    19  	os.Exit(m.Run())
    20  }
    21  
    22  //////////////////////
    23  /// TEST EXECUTION ///
    24  //////////////////////
    25  
    26  func TestRabbitMQDeploy(t *testing.T) {
    27  	ctx := context.Background()
    28  	TestHelper.WithDataPlaneNamespace(ctx, "rabbitmq-test", map[string]string{}, t, func(t *testing.T, testNamespace string) {
    29  		out, err := TestHelper.LinkerdRun("inject", "--manual", "testdata/rabbitmq-server.yaml")
    30  		// inject rabbitmq server
    31  		if err != nil {
    32  			testutil.AnnotatedFatalf(t, "'linkerd inject' command failed", "'linkerd inject' command failed: %s", err)
    33  		}
    34  		// deploy rabbitmq server
    35  		_, err = TestHelper.KubectlApply(out, testNamespace)
    36  		if err != nil {
    37  			testutil.AnnotatedFatalf(t, "kubectl apply command failed", "'kubectl apply' command failed: %s", err)
    38  		}
    39  		if err := TestHelper.CheckPods(ctx, testNamespace, "rabbitmq", 1); err != nil {
    40  			//nolint:errorlint
    41  			if rce, ok := err.(*testutil.RestartCountError); ok {
    42  				testutil.AnnotatedWarn(t, "CheckPods timed-out %s", rce)
    43  			} else {
    44  				testutil.AnnotatedError(t, "CheckPods timed-out %s", err)
    45  			}
    46  		}
    47  		// inject rabbitmq-client
    48  		stdout, err := TestHelper.LinkerdRun("inject", "--manual", "testdata/rabbitmq-client.yaml")
    49  		if err != nil {
    50  			testutil.AnnotatedFatalf(t, "'linkerd inject' command failed", "'linkerd inject' command failed: %s", err)
    51  		}
    52  		// deploy rabbitmq client
    53  		_, err = TestHelper.KubectlApply(stdout, testNamespace)
    54  		if err != nil {
    55  			testutil.AnnotatedFatalf(t, "kubectl apply command failed", "'kubectl apply' command failed: %s", err)
    56  		}
    57  		if err := TestHelper.CheckPods(ctx, testNamespace, "rabbitmq-client", 1); err != nil {
    58  			//nolint:errorlint
    59  			if rce, ok := err.(*testutil.RestartCountError); ok {
    60  				testutil.AnnotatedWarn(t, "CheckPods timed-out %s", rce)
    61  			} else {
    62  				testutil.AnnotatedError(t, "CheckPods timed-out %s", err)
    63  			}
    64  		}
    65  		// Verify client output
    66  		golden := "check.rabbitmq.golden"
    67  		timeout := 50 * time.Second
    68  		err = testutil.RetryFor(timeout, func() error {
    69  			out, err := TestHelper.Kubectl("", "-n", testNamespace, "logs", "-lapp=rabbitmq-client", "-crabbitmq-client")
    70  			if err != nil {
    71  				return fmt.Errorf("'kubectl logs -l app=rabbitmq-client -c rabbitmq-client' command failed\n%w", err)
    72  			}
    73  			err = TestHelper.ValidateOutput(out, golden)
    74  			if err != nil {
    75  				return fmt.Errorf("received unexpected output\n%w", err)
    76  			}
    77  			return nil
    78  		})
    79  		if err != nil {
    80  			testutil.AnnotatedFatal(t, fmt.Sprintf("'kubectl logs' command timed-out (%s)", timeout), err)
    81  		}
    82  
    83  	})
    84  
    85  }
    86  

View as plain text