Commit Graph

13 Commits

Author SHA1 Message Date
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
Kevin Hannon
8a89a1f5a5 mark density tests as flaky 2024-01-18 09:50:39 -05: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
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
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
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
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
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
a51999e951 e2e framework: support Ginkgo decorators for framework.ConformanceIt
Additional parameters like ginkgo.SpecTimeout may also be relevant for
conformance tests.
2022-12-19 13:53:08 +01:00
Patrick Ohly
896c6fa082 e2e framework: add AnnotatedLocationWithOffset
This is useful in helper functions which themselves don't need to be recorded.
2022-12-12 11:30:07 +01:00
Patrick Ohly
f897c86119 e2e framework: support ignoring "not found" errors during DeferCleanup
The wrapper can be used in combination with ginkgo.DeferCleanup to ignore
harmless "not found" errors during delete operations.

Original code suggested by Onsi Fakhouri.
2022-12-12 11:30:07 +01:00
Patrick Ohly
84990d53cf e2e: improve description of framework callbacks
When Ginkgo shows a BeforeEach/AfterEach/DeferCleanup, then it can only show
the source code where the callback was registered because there is no
description parameter. This can be improved by passing a custom CodeLocation.

Because a description like "set up framework" might not be enough, the source
code is still shown, too.
2022-09-13 14:27:32 +02:00