(ctx context.Context, cfg *types.ConfigParsed)
| 14 | ) |
| 15 | |
| 16 | func StartTestSuite(ctx context.Context, cfg *types.ConfigParsed) error { |
| 17 | enclave, err := runtime.SetupEnclave(ctx, cfg) |
| 18 | if err != nil { |
| 19 | return err |
| 20 | } |
| 21 | |
| 22 | kubeClient, err := kubernetes.CreateKubeClient(enclave.Namespace) |
| 23 | if err != nil { |
| 24 | return err |
| 25 | } |
| 26 | |
| 27 | // create chaos-mesh client |
| 28 | log.Infof("Creating a chaos-mesh client") |
| 29 | chaosClient, err := chaos_mesh.CreateClient(enclave.Namespace, kubeClient) |
| 30 | if err != nil { |
| 31 | // grafanaTunnel.Cleanup(true) |
| 32 | return err |
| 33 | } |
| 34 | |
| 35 | // standby for timer |
| 36 | log.Infof( |
| 37 | "Waiting %d seconds before starting fault injection", |
| 38 | cfg.AttacknetConfig.WaitBeforeInjectionSeconds, |
| 39 | ) |
| 40 | time.Sleep(time.Duration(cfg.AttacknetConfig.WaitBeforeInjectionSeconds) * time.Second) |
| 41 | |
| 42 | log.Infof("Running %d tests", len(cfg.TestConfig.Tests)) |
| 43 | |
| 44 | var testArtifacts []*artifacts.TestArtifact |
| 45 | |
| 46 | for i, test := range cfg.TestConfig.Tests { |
| 47 | log.Infof("Running test (%d/%d): '%s'", i+1, len(cfg.TestConfig.Tests), test.TestName) |
| 48 | executor := test_executor.CreateTestExecutor(chaosClient, test) |
| 49 | |
| 50 | err = executor.RunTestPlan(ctx) |
| 51 | if err != nil { |
| 52 | log.Errorf("Error while running test #%d", i+1) |
| 53 | return err |
| 54 | } else { |
| 55 | log.Infof("Test #%d steps completed.", i+1) |
| 56 | } |
| 57 | |
| 58 | if test.HealthConfig.EnableChecks { |
| 59 | log.Info("Starting health checks") |
| 60 | podsUnderTest, err := executor.GetPodsUnderTest() |
| 61 | if err != nil { |
| 62 | return err |
| 63 | } |
| 64 | |
| 65 | hc, err := health.BuildHealthChecker(kubeClient, podsUnderTest, test.HealthConfig) |
| 66 | if err != nil { |
| 67 | return err |
| 68 | } |
| 69 | results, err := hc.RunChecks(ctx) |
| 70 | if err != nil { |
| 71 | return err |
| 72 | } |
| 73 | testArtifact := artifacts.BuildTestArtifact(results, podsUnderTest, test) |
no test coverage detected