Commit Graph

3535 Commits

Author SHA1 Message Date
Patrick Ohly
aa772d77fb e2e pod: dump pod in unexpected phase
When stopping polling, the provided messages becomes the complete failure
message. This means that the code which calls gomega.StopTrying must include
the pod in the message instead of just summarizing the phase. This makes the
failure more useful.
2024-02-14 09:01:32 +01:00
bzsuni
658e3308f3 etcd: Update to version 3.5.12
Signed-off-by: bzsuni <bingzhe.sun@daocloud.io>
2024-02-07 21:16:08 +08:00
Kubernetes Prow Robot
57e9981dc2 Merge pull request #122865 from pohly/e2e-framework-logging
e2e framework: unify logging, support skipping helpers
2024-02-01 09:37:02 -08:00
Kubernetes Prow Robot
7bb00356f0 Merge pull request #122857 from nilo19/chore/cleanup-azure
chore: Cleanup in-tree credential provider azure and cloud provider a…
2024-01-23 21:31:11 +01:00
Patrick Ohly
43539c855f e2e framework: unify logging, support skipping helpers
ginkgo.GinkgoHelper is a recent addition to ginkgo which allows functions to
mark themselves as helper. This then changes which callstack gets reported for
failures. It makes sense to support the same mechanism also for logging.

There's also no reason why framework.Logf should produce output that is in a
different format than klog log entries. Having time stamps formatted
differently makes it hard to read test output which uses a mixture of both.
Another user-visible advantage is that the error log entry from
framework.ExpectNoError now references the test source code.

With textlogger there is a simple replacement for klog that can be reconfigured
to let the caller handle stack unwinding. klog itself doesn't support that
and should be modified to support it (feature freeze).

Emitting printf-style output via that logger would work, but become less
readable because the message string would get quoted instead of printing it
verbatim as before. So instead, the traditional klog header gets reproduced
in the framework code. In this example, the first line is from klog, the second
from Logf:

    I0111 11:00:54.088957  332873 factory.go:193] Registered Plugin "containerd"
    ...
      I0111 11:00:54.987534 332873 util.go:506] >>> kubeConfig: /var/run/kubernetes/admin.kubeconfig

Indention is a bit different because the initial output is printed before
installing the logger which writes through ginkgo.GinkgoWriter.

One welcome side effect is that now "go vet" detects mismatched parameters for
framework.Logf because fmt.Sprintf is called without mangling the format
string. Some of the calls were incorrect.
2024-01-20 18:23:31 +01:00
Patrick Ohly
dd0cee4895 e2e node runner: remove dependency on e2e/framework
A stand-alone binary shouldn't import the test/e2e/framework, which is targeted
towards usage in a Ginkgo test suite. This currently works, but will break once
test/e2e/framework becomes more opinionated about how to configure logging.

The simplest solution is to duplicate the one short function that the binary
was calling in the framework.
2024-01-20 18:23:31 +01:00
Qi Ni
3bf2bf8191 chore: Cleanup in-tree credential provider azure and cloud provider azure 2024-01-20 15:18:31 +08:00
Kubernetes Prow Robot
2d4100335e Merge pull request #122866 from pohly/e2e-klog-fatal
e2e: replace klog.Fatal with assertion
2024-01-19 19:22:14 +01:00
Patrick Ohly
de014579a1 e2e: enforce usage of WithFlaky instead of [Flaky]
Now that we have it (8a89a1f5a5), let's also make sure that
the new WithFlaky is used everywhere instead if [Flaky]. This way it can be
used for filtering by label.
2024-01-19 12:17:37 +01:00
Patrick Ohly
e3ee4e3585 e2e: replace klog.Fatal with assertion
Using klog.Fatal to abort a test leads to a poor user experience because the
output is buffered in ginkgo.GinkgoWriter and not flushed before killing the
process. The output is also different from other failures. Using the normal
error checking is better.

Before:

    $ KUBECONFIG=/no/such/config go test -v ./test/e2e/
      Jan 19 10:06:58.475: INFO: The --provider flag is not set. Continuing as if --provider=skeleton had been used.
    === RUN   TestE2E
      I0119 10:06:58.475844   99472 e2e.go:109] Starting e2e run "5303f626-ae0e-44d7-abf1-b4956d910ef4" on Ginkgo node 1
    Running Suite: Kubernetes e2e suite - /nvme/gopath/src/k8s.io/kubernetes/test/e2e
    =================================================================================
    Random Seed: 1705655217 - will randomize all specs

    Will run 4678 of 7421 specs
    goroutine 817 [running]:
    k8s.io/klog/v2/internal/dbg.Stacks(0x0)
    	/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/klog/v2/internal/dbg/dbg.go:35 +0x85
    k8s.io/klog/v2.(*loggingT).output(0x9d92b20, 0x3, 0x0, 0xc00069d7a0, 0x2, {0x834c6e8?, 0x9d91c80?}, 0x300000060?, 0x0)
    ...
    k8s.io/klog/v2.Fatal(...)
    	/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/klog/v2/klog.go:1652
    k8s.io/kubernetes/test/e2e.setupSuite({0x7fb49064c078, 0xc003072360})
    	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/e2e.go:187 +0x125
    ...
    FAIL	k8s.io/kubernetes/test/e2e	0.759s
    FAIL

After:

    $ KUBECONFIG=/no/such/config go test -v ./test/e2e/
      Jan 19 10:12:58.889: INFO: The --provider flag is not set. Continuing as if --provider=skeleton had been used.
    === RUN   TestE2E
      I0119 10:12:58.889224  106019 e2e.go:109] Starting e2e run "bed5a77a-f595-42d0-b512-5f601067444b" on Ginkgo node 1
    Running Suite: Kubernetes e2e suite - /nvme/gopath/src/k8s.io/kubernetes/test/e2e
    =================================================================================
    Random Seed: 1705655578 - will randomize all specs

    Will run 4678 of 7421 specs
    ------------------------------
    [SynchronizedBeforeSuite] [FAILED] [0.001 seconds]
    [SynchronizedBeforeSuite]
    /nvme/gopath/src/k8s.io/kubernetes/test/e2e/e2e.go:69

      Timeline >>
      Jan 19 10:12:59.063: INFO: >>> kubeConfig: /no/such/config
      Jan 19 10:12:59.063: INFO: Unexpected error: Error loading client:
          <*errors.errorString | 0xc00182c130>:
          error creating client: error loading KubeConfig: open /no/such/config: no such file or directory
          {
              s: "error creating client: error loading KubeConfig: open /no/such/config: no such file or directory",
          }
      [FAILED] in [SynchronizedBeforeSuite] - /nvme/gopath/src/k8s.io/kubernetes/test/e2e/e2e.go:186 @ 01/19/24 10:12:59.064
      << Timeline

      [FAILED] Error loading client: error creating client: error loading KubeConfig: open /no/such/config: no such file or directory
      In [SynchronizedBeforeSuite] at: /nvme/gopath/src/k8s.io/kubernetes/test/e2e/e2e.go:186 @ 01/19/24 10:12:59.064
    ------------------------------

    Summarizing 1 Failure:
      [FAIL] [SynchronizedBeforeSuite]
      /nvme/gopath/src/k8s.io/kubernetes/test/e2e/e2e.go:186

    Ran 0 of 7421 Specs in 0.001 seconds
    FAIL! -- A BeforeSuite node failed so all tests were skipped.
    --- FAIL: TestE2E (0.18s)
    FAIL
    FAIL	k8s.io/kubernetes/test/e2e	0.769s
    FAIL
2024-01-19 10:14:07 +01:00
Kubernetes Prow Robot
afb1523bf4 Merge pull request #122833 from kannon92/add-density-test-flake
mark density tests as flaky
2024-01-18 19:03:11 +01:00
Kevin Hannon
8a89a1f5a5 mark density tests as flaky 2024-01-18 09:50:39 -05:00
Patrick Ohly
3aa366a3eb e2e: remove dead code
The dead code was found with:

    deadcode -test -filter=k8s.io/kubernetes/test/e2e/framework/... ./test/e2e ./test/e2e_node ./test/e2e_node ./test/e2e_kubeadm

See https://go.dev/blog/deadcode for an introduction.

Only dead code which is clearly not needed anymore (glog logging),
questionable (skipping based on feature gates) or
redundant (WaitForPodSuccessInNamespaceSlow) gets removed for now. More
removals might make sense in the future.
2024-01-17 12:57:35 +01:00
Kubernetes Prow Robot
c9158e9a19 Merge pull request #122595 from dims/support-building-with-and-without-cloud-providers
KUBE_PROVIDERLESS - Support building with and without cloud providers
2024-01-11 05:42:23 +01:00
Kubernetes Prow Robot
c8a718bb87 Merge pull request #121916 from carlory/issue-121892
E2E - Sig-autoscaling: Refactor the Autoscaling utils
2024-01-08 17:30:08 +01:00
Maciej Szulik
67cf648ab7 Add a new neverTerminate job behavior just for upgrade 2024-01-08 13:51:08 +01:00
Davanum Srinivas
4b296699af Add fake GCE provider to make CI jobs happy
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-07 08:16:06 -05:00
Davanum Srinivas
220a559f45 Add missing doc.go for some providers
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-07 08:16:05 -05:00
Davanum Srinivas
7a236bd7e0 Add providerless tags appropriately in test/
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-07 08:16:05 -05:00
Kubernetes Prow Robot
6eeb48cd7f Merge pull request #122401 from jongwooo/hotfix/correct-typo-from-gingko-to-ginkgo
Correct typo from 'gingko' to 'ginkgo'
2023-12-21 06:42:10 +01:00
Mohamed Omar Zaian
c8a2d5684d etcd: Update to version 3.5.11 2023-12-20 11:18:35 +01:00
Jongwoo Han
725b107f49 Correct typo from 'gingko' to 'ginkgo'
Signed-off-by: Jongwoo Han <jongwooo.han@gmail.com>
2023-12-20 10:31:53 +09:00
Kubernetes Prow Robot
42ab3b7b40 Merge pull request #121833 from borg-land/fix-lb-logic
Look for the ingress-uid cm after the Loadbalancer is created
2023-12-19 00:26:39 +01:00
Kubernetes Prow Robot
00e4cba038 Merge pull request #122232 from pohly/e2e-test-label-error
e2e framework: provide more guidance to developers
2023-12-14 07:27:21 +01:00
Kubernetes Prow Robot
bd24ec42fd Merge pull request #121877 from pohly/e2e-pod-context-cleanup
e2e: pass context into pod helper functions
2023-12-13 23:55:37 +01:00
Patrick Ohly
1d11bc4aca e2e framework: provide more guidance to developers
Developers who are unaware of the Ginkgo wrappers in the framework might end up
passing the label decorators directly to Ginkgo. Previously, this led to an
error that was hard to understand without background knowledge:

    Unknown Decorator
    ginkgo.It("must deallocate on non graceful node shutdown", f.WithSerial(), f.WithDisruptive(), f.WithSlow(), func(ctx context.Context) {
    /nvme/gopath/src/k8s.io/kubernetes/test/e2e/dra/dra.go:527
      [It] node was passed an unknown decorator:
      'framework.label{parts:[]string{"Serial"}, extra:""}'

    Learn more at: http://onsi.github.io/ginkgo/#node-decorators-overview

When including a special field that Ginkgo dumps the message gets a bit better:

    Unknown Decorator
    ginkgo.It("must deallocate on non graceful node shutdown", f.WithSerial(), f.WithDisruptive(), f.WithSlow(), func(ctx context.Context) {
    /nvme/gopath/src/k8s.io/kubernetes/test/e2e/dra/dra.go:527
      [It] node was passed an unknown decorator:
      'framework.label{parts:[]string{"Serial"}, extra:"", explanation:"If you see
      this as part of an \"Unknown Decorator\" error from Ginkgo, then you need to
      replace the ginkgo.It/Context/Describe call with the corresponding
      framework.It/Context/Describe or (if available) f.It/Context/Describe."}'

    Learn more at: http://onsi.github.io/ginkgo/#node-decorators-overview
2023-12-08 08:04:18 +01:00
carlory
08e5e8681d E2E - Sig-autoscaling: Refactor the Autoscaling utils to use gomega.Consistenly according to e2e test framework guidance 2023-12-01 18:02:15 +08:00
James Sturtevant
c99b5a208d Check error from gomega
Signed-off-by: James Sturtevant <jstur@microsoft.com>
2023-11-14 21:29:56 +00:00
James Sturtevant
49e8c196c3 use framework gomega
Signed-off-by: James Sturtevant <jstur@microsoft.com>
2023-11-14 19:35:04 +00:00
Patrick Ohly
f9ceab37ca e2e: pass context into pod helper functions
This ensures that progress reports and timeouts work.
2023-11-14 15:57:55 +01:00
James Sturtevant
4b1b9a198a Fix issue with client rate limiter when polling
Signed-off-by: James Sturtevant <jstur@microsoft.com>
2023-11-13 20:00:33 +00:00
Patrick Ohly
617f2132fe e2e: avoid redundant labels in JUnit file
Because labels are currently typically added also to the spec texts, we don't
need to write them separately.

This redundancy got introduced in f2cfbf44b1 when registering all inline tags
also as labels.
2023-11-13 08:08:09 +01:00
upodroid
4c06bd5bbb fix bad assumptions in gce network tests 2023-11-10 15:33:33 -06:00
Kubernetes Prow Robot
24e6b03780 Merge pull request #121708 from aravindhp/add-azure-framework-ssh-provider
framework: add SSH support for Azure
2023-11-04 17:19:13 +01:00
Kubernetes Prow Robot
953afbb328 Merge pull request #121193 from sohankunkerkar/kubelet-config-dir
Retarget drop-in kubelet configuration dir feature to Alpha
2023-11-03 23:59:29 +01:00
Sohan Kunkerkar
ad7b9b56f5 test/e2e_node: add e2e test for Kubeletconfig drop-in dir
Signed-off-by: Sohan Kunkerkar <sohank2602@gmail.com>
Co-authored-by: Peter Hunt <pehunt@redhat.com>
2023-11-03 17:49:22 -04:00
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
Aravindh Puthiyaparambil
34b2c4e1ed framework: add SSH support for Azure
Add Azure to the list of providers that support accessing nodes
using SSH.
Note: This will require a follow up PR adding the required
environment variables, AZURE_SSH_KEY, KUBE_SSH_BASTION to the test
configuration.
2023-11-02 15:01:31 -07: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