Skip to content

Commit

Permalink
Merge branch 'main' into remove/k8s-svc
Browse files Browse the repository at this point in the history
  • Loading branch information
Noxsios committed May 23, 2024
2 parents 5f1b5e3 + f445e6d commit 72e52fd
Show file tree
Hide file tree
Showing 6 changed files with 206 additions and 77 deletions.
15 changes: 6 additions & 9 deletions .github/workflows/test-unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,14 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Run coverage
run: go test -race -coverprofile=coverage.out -covermode=atomic

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # v4.4.1
with:
token: ${{ secrets.CODECOV_TOKEN }}

- name: Setup golang
uses: ./.github/actions/golang

- name: Run unit tests
run: make test-unit
run: make test-unit

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # v4.4.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ zarf-sbom/
test-*.txt
__debug_bin
.netlify
coverage.out
4 changes: 1 addition & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,7 @@ test-upgrade: ## Run the Zarf CLI E2E tests for an external registry and cluster

.PHONY: test-unit
test-unit: ## Run unit tests
cd src/pkg && go test ./... -failfast -v -timeout 30m
cd src/internal && go test ./... -failfast -v timeout 30m
cd src/extensions/bigbang && go test ./. -failfast -v timeout 30m
go test -failfast -v -coverprofile=coverage.out -covermode=atomic $$(go list ./... | grep -v '^github.com/defenseunicorns/zarf/src/test' | grep -v 'github.com/defenseunicorns/zarf/src/extensions/bigbang/test')

# INTERNAL: used to test that a dev has ran `make docs-and-schema` in their PR
test-docs-and-schema:
Expand Down
24 changes: 23 additions & 1 deletion src/pkg/cluster/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (

"github.com/fatih/color"
corev1 "k8s.io/api/core/v1"
kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"github.com/defenseunicorns/pkg/helpers"
Expand Down Expand Up @@ -115,7 +116,28 @@ func (c *Cluster) InitZarfState(ctx context.Context, initOptions types.ZarfInitO
// The default SA is required for pods to start properly.
saCtx, cancel := context.WithTimeout(ctx, 2*time.Minute)
defer cancel()
if _, err := c.WaitForServiceAccount(saCtx, ZarfNamespaceName, "default"); err != nil {
err = func(ctx context.Context, ns, name string) error {
timer := time.NewTimer(0)
defer timer.Stop()
for {
select {
case <-ctx.Done():
return fmt.Errorf("failed to get service account %s/%s: %w", ns, name, ctx.Err())
case <-timer.C:
_, err := c.Clientset.CoreV1().ServiceAccounts(ns).Get(ctx, name, metav1.GetOptions{})
if err != nil && !kerrors.IsNotFound(err) {
return err
}
if kerrors.IsNotFound(err) {
c.Log("Service account %s/%s not found, retrying...", ns, name)
timer.Reset(1 * time.Second)
continue
}
return nil
}
}
}(saCtx, ZarfNamespaceName, "default")
if err != nil {
return fmt.Errorf("unable get default Zarf service account: %w", err)
}

Expand Down
64 changes: 0 additions & 64 deletions src/pkg/k8s/sa.go

This file was deleted.

175 changes: 175 additions & 0 deletions src/pkg/packager/creator/compose_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2021-Present The Zarf Authors

// Package creator contains functions for creating Zarf packages.
package creator

import (
"testing"

"github.com/defenseunicorns/zarf/src/types"
"github.com/stretchr/testify/require"
)

func TestComposeComponents(t *testing.T) {
t.Parallel()

tests := []struct {
name string
pkg types.ZarfPackage
flavor string
expectedPkg types.ZarfPackage
expectedErr string
}{
{
name: "filter by architecture match",
pkg: types.ZarfPackage{
Metadata: types.ZarfMetadata{Architecture: "amd64"},
Components: []types.ZarfComponent{
{
Name: "component1",
Only: types.ZarfComponentOnlyTarget{
Cluster: types.ZarfComponentOnlyCluster{
Architecture: "amd64",
},
},
},
{
Name: "component2",
Only: types.ZarfComponentOnlyTarget{
Cluster: types.ZarfComponentOnlyCluster{
Architecture: "amd64",
},
},
},
},
},
expectedPkg: types.ZarfPackage{
Components: []types.ZarfComponent{
{Name: "component1"},
{Name: "component2"},
},
},
expectedErr: "",
},
{
name: "filter by architecture mismatch",
pkg: types.ZarfPackage{
Metadata: types.ZarfMetadata{Architecture: "amd64"},
Components: []types.ZarfComponent{
{
Name: "component1",
Only: types.ZarfComponentOnlyTarget{
Cluster: types.ZarfComponentOnlyCluster{
Architecture: "amd64",
},
},
},
{
Name: "component2",
Only: types.ZarfComponentOnlyTarget{
Cluster: types.ZarfComponentOnlyCluster{
Architecture: "arm64",
},
},
},
},
},
expectedPkg: types.ZarfPackage{
Components: []types.ZarfComponent{
{Name: "component1"},
},
},
expectedErr: "",
},
{
name: "filter by flavor match",
pkg: types.ZarfPackage{
Metadata: types.ZarfMetadata{Architecture: "amd64"},
Components: []types.ZarfComponent{
{
Name: "component1",
Only: types.ZarfComponentOnlyTarget{
Flavor: "default",
},
},
{
Name: "component2",
Only: types.ZarfComponentOnlyTarget{
Flavor: "default",
},
},
},
},
flavor: "default",
expectedPkg: types.ZarfPackage{
Components: []types.ZarfComponent{
{Name: "component1"},
{Name: "component2"},
},
},
expectedErr: "",
},
{
name: "filter by flavor mismatch",
pkg: types.ZarfPackage{
Metadata: types.ZarfMetadata{Architecture: "amd64"},
Components: []types.ZarfComponent{
{
Name: "component1",
Only: types.ZarfComponentOnlyTarget{
Flavor: "default",
},
},
{
Name: "component2",
Only: types.ZarfComponentOnlyTarget{
Flavor: "special",
},
},
},
},
flavor: "default",
expectedPkg: types.ZarfPackage{
Components: []types.ZarfComponent{
{Name: "component1"},
},
},
expectedErr: "",
},
{
name: "no architecture set error",
pkg: types.ZarfPackage{
Components: []types.ZarfComponent{
{
Name: "component1",
Only: types.ZarfComponentOnlyTarget{
Flavor: "default",
},
},
},
},
flavor: "default",
expectedPkg: types.ZarfPackage{},
expectedErr: "cannot build import chain: architecture must be provided",
},
}

for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

pkg, _, err := ComposeComponents(tt.pkg, tt.flavor)

if tt.expectedErr == "" {
require.NoError(t, err)
require.Equal(t, tt.expectedPkg.Components, pkg.Components)
return
}

require.EqualError(t, err, tt.expectedErr)
require.Empty(t, tt.expectedPkg)
})
}
}

0 comments on commit 72e52fd

Please sign in to comment.