Skip to content

Commit

Permalink
Merge pull request #20 from ctrox/fix-release-pr
Browse files Browse the repository at this point in the history
ci: set base to main branch for release PR
  • Loading branch information
ctrox committed Jun 23, 2024
2 parents 5d0e597 + 267d668 commit c699d66
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 16 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/build_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4

- name: Update Deployment Image Tag
- name: Update Deployment Image Tags
working-directory: "config/production"
run: |
kustomize edit set image installer=${{ env.REGISTRY }}/${{ env.INSTALLER_IMAGE_NAME }}:${{ github.ref_name }}
Expand All @@ -80,3 +80,4 @@ jobs:
uses: peter-evans/create-pull-request@v6
with:
commit-message: "chore: update image versions"
base: main
8 changes: 7 additions & 1 deletion e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/ctrox/zeropod/manager"
"github.com/ctrox/zeropod/zeropod"
"github.com/prometheus/client_golang/prometheus"
dto "github.com/prometheus/client_model/go"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
Expand Down Expand Up @@ -268,7 +269,12 @@ func TestE2E(t *testing.T) {
return checkpointed
}, time.Minute, time.Second)

mfs := getNodeMetrics(t, client, cfg)
mfs := map[string]*dto.MetricFamily{}
require.Eventually(t, func() bool {
var err error
mfs, err = getNodeMetrics(client, cfg)
return err == nil
}, time.Minute, time.Second)

tests := map[string]struct {
metric string
Expand Down
42 changes: 28 additions & 14 deletions e2e/setup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -468,8 +468,7 @@ func createPodAndWait(t testing.TB, ctx context.Context, client client.Client, p
}

func createServiceAndWait(t testing.TB, ctx context.Context, client client.Client, svc *corev1.Service, replicas int) (cleanup func()) {
err := client.Create(ctx, svc)
require.NoError(t, err)
require.NoError(t, client.Create(ctx, svc))
t.Logf("created service %s", svc.Name)

if !assert.Eventually(t, func() bool {
Expand All @@ -492,8 +491,7 @@ func createServiceAndWait(t testing.TB, ctx context.Context, client client.Clien
time.Sleep(time.Millisecond * 500)

return func() {
client.Delete(ctx, svc)
assert.NoError(t, err)
assert.NoError(t, client.Delete(ctx, svc))
require.Eventually(t, func() bool {
if err := client.Get(ctx, objectName(svc), svc); err != nil {
return true
Expand Down Expand Up @@ -658,40 +656,56 @@ func getNodeMetric(t testing.TB, c client.Client, cfg *rest.Config, metricName s
var val *dto.MetricFamily
restoreDuration := prometheus.BuildFQName(zeropod.MetricsNamespace, "", metricName)
if !assert.Eventually(t, func() bool {
mfs := getNodeMetrics(t, c, cfg)
mfs, err := getNodeMetrics(c, cfg)
if err != nil {
t.Logf("error getting node metrics: %s", err)
return false
}
v, ok := mfs[restoreDuration]
val = v
return ok
}, 10*time.Second, time.Second) {
}, time.Second*30, time.Second) {
return nil, fmt.Errorf("could not find expected metric: %s", restoreDuration)
}
return val, nil
}

func getNodeMetrics(t testing.TB, c client.Client, cfg *rest.Config) map[string]*dto.MetricFamily {
func getNodeMetrics(c client.Client, cfg *rest.Config) (map[string]*dto.MetricFamily, error) {
cs, err := kubernetes.NewForConfig(cfg)
require.NoError(t, err)
if err != nil {
return nil, err
}

ctx := context.Background()
nodePods := &corev1.PodList{}
require.NoError(t, c.List(ctx, nodePods, client.MatchingLabels{"app.kubernetes.io/name": "zeropod-node"}))
require.Equal(t, 1, len(nodePods.Items))
if err := c.List(ctx, nodePods, client.MatchingLabels{"app.kubernetes.io/name": "zeropod-node"}); err != nil {
return nil, err
}
if len(nodePods.Items) < 1 {
return nil, fmt.Errorf("expected to find at least 1 node pod, got %d", len(nodePods.Items))
}

pf := PortForward{
Config: cfg, Clientset: cs,
Name: nodePods.Items[0].Name,
Namespace: nodePods.Items[0].Namespace,
DestinationPort: 8080,
}
require.NoError(t, pf.Start())
if err := pf.Start(); err != nil {
return nil, err
}
defer pf.Stop()

resp, err := http.Get(fmt.Sprintf("http://localhost:%v/metrics", pf.ListenPort))
require.NoError(t, err)
if err != nil {
return nil, err
}

var parser expfmt.TextParser
mfs, err := parser.TextToMetricFamilies(resp.Body)
require.NoError(t, err)
if err != nil {
return nil, err
}

return mfs
return mfs, nil
}

0 comments on commit c699d66

Please sign in to comment.