Commit Graph

3498 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
66e20ff891 Merge pull request #121394 from pohly/e2e-framework-test-labels
e2e: test labels
2023-11-03 17:35:03 +01:00
Mohamed Omar Zaian
3c268b7524 etcd: Update to version 3.5.10 2023-11-02 10:30:41 +01:00
Patrick Ohly
338fe7ad55 e2e framework: validate test definitions
This checks that the With* label functions are used instead of the previous
inline tags. To catch strings passed to Ginkgo directly instead of the
framework wrapper functions, the final test specs are checked.
2023-11-01 15:17:34 +01:00
Michal Wozniak
e50cc47a06 Improve execution time for job e2e tests 2023-10-27 19:50:04 +02:00
Kubernetes Prow Robot
e0eb5edbf9 Merge pull request #121487 from mimowo/fix-flaky-e2e-tests-for-job
Do not preallocate node for Job e2e tests to fix flakes
2023-10-26 01:08:32 +02:00
Kubernetes Prow Robot
8caa6fb2e0 Merge pull request #121368 from mimowo/backoff-limit-per-index-e2e-test
Backoff limit per index e2e test
2023-10-25 13:18:37 +02:00
Kubernetes Prow Robot
4294c35fc9 Merge pull request #121297 from calvinballing/spellcheck-markdown
Fix typos in markdown
2023-10-25 13:18:26 +02:00
Michal Wozniak
69ca55f136 Do not preallocate node for Job e2e tests to fix flakes 2023-10-25 12:11:08 +02:00
Kubernetes Prow Robot
9ae55e9886 Merge pull request #121391 from pohly/e2e-storage-test-labels
e2e storage: test labels
2023-10-24 10:12:40 +02:00
Michal Wozniak
b06675724d Add e2e test for backoffLimitPerIndex 2023-10-24 09:11:35 +02:00
Patrick Ohly
27afb7d75d e2e storage: use framework to tag tests
This makes it possible to select tests through `ginkgo --label-filter`
also for the custom labels.
2023-10-23 17:32:06 +02:00
Kevin Hannon
42945ea6dc update suspend test to match other test cases 2023-10-20 13:34:37 -04:00
Kubernetes Prow Robot
3825e206cb Merge pull request #121300 from stuton/e2e-tests-for-ready-pods
e2e: add test for checking ready of job status
2023-10-20 19:24:38 +02:00
Kubernetes Prow Robot
349b856505 Merge pull request #121358 from pohly/e2e-framework-ginkgowrapper-labels
e2e framework: allow random ordering of tags and text, fix some functions
2023-10-20 14:42:20 +02:00
Anton Stuchinskii
a913abe191 e2e test for checking ready of job status 2023-10-20 14:42:13 +02:00
Kubernetes Prow Robot
7b9d244efd Merge pull request #120965 from bart0sh/PR122-DRA-unexpected-node-shutdown
DRA: e2e: test non-graceful node shutdown
2023-10-20 11:58:47 +02:00
Patrick Ohly
81b960efef e2e framework: allow random ordering of tags and text, fix some functions
There are some tests which want to insert a tag before the main Describe text,
for example:
   sigDescribe("[Feature:Windows] Cpu Resources [Serial]",
               skipUnlessWindows(func() { ... })

In order to support this without change existing test names, it must be
possible to do this instead:
   sigDescribe(feature.Windows, "Cpu Resources", framework.WithSerial(),
               skipUnlessWindows(func() { ... })

There are similar examples for the other functions.

While at it, replace one left-over panic with ReportBug and add the missing
`NodeFeature:` prefix.
2023-10-20 11:14:57 +02:00
Ed Bartosh
fb9f2f5bc5 DRA: e2e: test non-graceful node shutdown 2023-10-19 22:09:11 +03:00
bzsuni
8775d805fa use PollUntilContextTimeout to replace PollImmediateWithContext in test
Signed-off-by: bzsuni <bingzhe.sun@daocloud.io>
2023-10-19 22:50:21 +08:00
Kubernetes Prow Robot
39d3580d17 Merge pull request #121139 from bart0sh/PR123-e2e-move-node-rediness-check-to-DeferCleanup
e2e: move AllNodesReady check to DeferCleanup
2023-10-18 21:29:28 +02:00
Kubernetes Prow Robot
e7fd5b85ed Merge pull request #121068 from carlory/cleanup-e2e-framework-deprecated-funcs
clean up deprecated funcs in e2e framework
2023-10-17 21:28:57 +02:00
Jim Hays
911700e64e Fix typos in markdown 2023-10-17 10:55:40 -04:00
Patrick Ohly
7d077f9271 e2e: move AllNodesReady check to DeferCleanup
Some test cases can make nodes not ready and use DeferCleanup to bring
nodes back online. Checking if all nodes are online would fail
in such cases as AfterEach runs before DeferCleanup.

Scheduling nodes readines check to DeferCleanup should solve this
issue as nodes would be brought back to a `Ready` state before the
check.
2023-10-17 16:45:57 +03:00
Kubernetes Prow Robot
675a64eaa6 Merge pull request #121129 from carlory/cleanup-e2e-framework-equal
remove deprecated framework.ExpectEqual
2023-10-14 23:50:37 +02:00
carlory
2c1836bc24 remove deprecated framework.ExpectEqual 2023-10-11 12:43:10 +08:00
Patrick Ohly
f2d34426f8 e2e: enhance SIGDescribe
framework.SIGDescribe is better because:
- Ginkgo uses the source code location of the test, not of the wrapper,
  when reporting progress.
- Additional annotations can be passed.

To make this a drop-in replacement, framework.SIGDescribe generates a function
that can be used instead of the former SIGDescribe functions.

windows.SIGDescribe contained some additional code to ensure that tests are
skipped when not running with a suitable node OS. This gets moved into a
separate wrapper generator, to allow using framework.SIGDescribe as intended.
To ensure that all callers were modified, the windows.sigDescribe isn't
exported anymore (wasn't necessary in the first place!).
2023-10-10 18:15:49 +02:00
Patrick Ohly
39b6916cbc e2e: add wrapper functions to annotate tests
These wrapper functions set labels in addition to injecting the annotation into
the test text. It then becomes possible to select tests in different ways:

    ginkgo -v --focus="should respect internalTrafficPolicy.*\[FeatureGate:ServiceInternalTrafficPolicy\]"

    ginkgo -v --label-filter="FeatureGate:ServiceInternalTrafficPolicy"

    ginkgo -v --label-filter="Beta"

When a test runs, ginkgo shows it as:

    [It] should respect internalTrafficPolicy=Local Pod to Pod [FeatureGate:ServiceInternalTrafficPolicy] [Beta] [FeatureGate:ServiceInternalTrafficPolicy, Beta]

The test name and the labels at the end are in different colors. Embedding the
annotations inside the text is redundant and only done because users of the e2e
suite might expect it. Also, our tooling that consumes test results currently
doesn't know about ginkgo labels.

Environments, features and node features as described by
https://github.com/kubernetes/enhancements/tree/master/keps/sig-testing/3041-node-conformance-and-features
are also supported.

The framework and thus (at the moment) test/e2e do not have any pre-defined
environments and features. Adding those and modifying tests will follow in
a separate commit.
2023-10-10 18:15:49 +02:00
Patrick Ohly
535ab74346 e2e framework: track and report internal bugs
If something goes wrong during the test registration phase, the only solution
so far was to panic. This is not user-friendly and only allows to report one
problem at a time.

If initialization can continue, then a better solution is to record a bug,
continue, and then report all bugs together.

This also works when just listing tests. The new verify-e2e-suites.sh uses that
to check all test suites (identified as "packages that call
framework.AfterReadingAllFlags", with some exceptions) as part of
pull-kubernetes-verify.

Example output for a fake

    framework.RecordBug(framework.NewBug("fake bug during SIGDescribe", 0))

in test/e2e/storage/volume_metrics.go:
```
$ hack/verify-e2e-suites.sh
go version go1.21.1 linux/amd64
ERROR: E2E test suite invocation failed for test/e2e.
   ERROR: E2E suite initialization was faulty, these errors must be fixed:
   ERROR: test/e2e/storage/volume_metrics.go:49: fake bug during SIGDescribe
E2E suite test/e2e_kubeadm passed.
E2E suite test/e2e_node passed.
```
2023-10-10 18:15:46 +02:00
Patrick Ohly
3afdcc03ea e2e framework: list specs and labels
-list-tests is a more concise alternative for `ginkgo --dry-run` with one line
per test. In contrast to `--dry-run`, it really lists all tests. `--dry-run`
without additional parameters uses the default skip expression from the E2E
context, which filters out flaky and feature-gated tests. The output includes
the source code location where each test is defined. It is sorted by test
name (not source code location) because that order is independent of
reorganizing the source code and ordering by location can be achieved with
"sort".

-list-labels has no corresponding feature in Ginkgo.

One possible usage is to figure out what values might make sense for
-focus/skip/label-filter.

Unit tests will follow in a future commit.
2023-10-10 17:15:59 +02:00
carlory
137ad9bf2b clean up deprecated funcs in e2e framework 2023-10-09 16:51:53 +08:00
carlory
bb02d0feba fix incorrect Consistently due to missing assignment when create a newAsyncAssertion 2023-10-08 13:23:46 +08:00
Kubernetes Prow Robot
9af7096c89 Merge pull request #120968 from borg-land/remove-kubeup-tests-1
Remove an e2e test specific to kubeup clusters - Part One
2023-10-06 19:20:11 +02:00
upodroid
243ba5fb6b remove an e2e test specific to kubeup clusters 2023-10-02 16:21:41 +01:00
Kubernetes Prow Robot
d924775d78 Merge pull request #120750 from pohly/test-output-init-fix
e2e framework: adapt unit test to Go 1.22
2023-09-27 06:26:10 -07:00
Kubernetes Prow Robot
144baff189 Merge pull request #120598 from neolit123/1.29-kubeadm-ownders-cleanup
/cmd/kubeadm,/test/e2e*: update OWNERS for fabriziopandini & RA489
2023-09-19 21:39:59 -07:00
Patrick Ohly
83c37acb21 e2e framework: adapt unit test to Go 1.22
Go 1.22 changed the name of init functions from "glob..func" to
"init.func". That difference is acceptable and has to be ignored when comparing
output.
2023-09-19 12:18:34 +02:00
Kubernetes Prow Robot
a68093a3ff Merge pull request #120506 from alexzielenski/import-restrictions
Update e2e import restrictions
2023-09-13 21:56:22 -07:00
Lubomir I. Ivanov
3d91ffc6f9 /cmd/kubeadm,/test/e2e*: update OWNERS for fabriziopandini & RA489
- move fabriziopandini to emeritus_approvers for /test/e2e*
and /cmd/kubeadm. fabriziopandini remains in /OWNERS_ALIASES
under sig-cluster-lifecycle-leads.
- remove RA489 as reviewer for /test/e2e* and /cmd/kubeadm
2023-09-12 12:35:40 +03:00
Patrick Ohly
fc3ee07b51 e2e pods: fix WaitForPodsResponding retry
The status error was embedded inside the new error constructed by
WaitForPodsResponding's get function, but not wrapped. Therefore
`apierrors.IsServiceUnavailable(err)` didn't find it and returned false -> no
retries.

Wrapping fixes this and Gomega formatting of the error remains useful:

	err := &errors.StatusError{}
	err.ErrStatus.Code = 503
	err.ErrStatus.Message = "temporary failure"

	err2 := fmt.Errorf("Controller %s: failed to Get from replica pod %s:\n%w\nPod status:\n%s",
		"foo", "bar",
		err, "some status")
	fmt.Println(format.Object(err2, 1))
        fmt.Println(errors.IsServiceUnavailable(err2))

=>

    <*fmt.wrapError | 0xc000139340>:
    Controller foo: failed to Get from replica pod bar:
    temporary failure
    Pod status:
    some status
    {
        msg: "Controller foo: failed to Get from replica pod bar:\ntemporary failure\nPod status:\nsome status",
        err: <*errors.StatusError | 0xc0001a01e0>{
            ErrStatus: {
                TypeMeta: {Kind: "", APIVersion: ""},
                ListMeta: {
                    SelfLink: "",
                    ResourceVersion: "",
                    Continue: "",
                    RemainingItemCount: nil,
                },
                Status: "",
                Message: "temporary failure",
                Reason: "",
                Details: nil,
                Code: 503,
            },
        },
    }

    true
2023-09-11 11:54:15 +02:00
Kubernetes Prow Robot
cc0a24d2e8 Merge pull request #120406 from wlq1212/cheanup/framework/timeout
e2e_framework:stop using deprecated wait.ErrwaitTimeout
2023-09-10 21:10:10 -07:00
Alexander Zielenski
7a13b11af0 update e2e import restrictions 2023-09-07 12:20:29 -07:00
carlory
f33265cf5d HandleRetry has already called in the GetObject 2023-09-07 15:48:18 +08:00
wlq1212
ef235c4eac e2e_framework:stop using deprecated wait.ErrwaitTimeout 2023-09-05 14:19:42 +08:00
wlq1212
a56745c706 e2e_cloud:stop using deprecated framework.ExpectError 2023-09-01 17:53:37 +08:00
Patrick Ohly
2472291790 api: introduce separate VolumeResourceRequirements struct
PVC and containers shared the same ResourceRequirements struct to define their
API. When resource claims were added, that struct got extended, which
accidentally also changed the PVC API. To avoid such a mistake from happening
again, PVC now uses its own VolumeResourceRequirements struct.

The `Claims` field gets removed because risk of breaking someone is low:
theoretically, YAML files which have a claims field for volumes now
get rejected when validating against the OpenAPI. Such files
have never made sense and should be fixed.

Code that uses the struct definitions needs to be updated.
2023-08-21 15:31:28 +02:00
Richa Banker
4712025ea8 Graduate kubelet resource metrics to GA 2023-08-17 09:22:48 -07:00
Kubernetes Prow Robot
18290bfdc8 Merge pull request #119966 from aojea/fixfix
e2e framework util subtle bug checking endpoints
2023-08-16 09:33:08 -07:00
git-jxj
a5b3a4b738 cleanup: Update deprecated FromInt to FromInt32 (#119858)
* redo commit

* apply suggestions from liggitt

* update Parse function based on suggestions
2023-08-16 09:33:01 -07:00
Antonio Ojea
8314122382 e2e framework util subtle bug checking endpoints
Change-Id: Ied14efcb75a45e3bbd5f76d4ee4c89703161df54
2023-08-16 08:18:11 +00:00
Kubernetes Prow Robot
b57b2dcfcf Merge pull request #119928 from aojea/fixe2e
e2e WaitForServiceEndpointsNum take into account the address family
2023-08-16 00:24:27 -07:00