Commit Graph

2063 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
39724859b5 Merge pull request #81849 from oomichi/move-PrintPerfData
Move PrintPerfData to the test
2019-08-26 11:54:38 -07:00
Kubernetes Prow Robot
2bd3226564 Merge pull request #81814 from oomichi/replace-e2elog-framework-job-node
Use log functions of core framework on sub [j-l]
2019-08-26 11:54:22 -07:00
Kubernetes Prow Robot
f81ab5a9fc Merge pull request #81342 from knight42/fix/kubectl-patch-scale
Refactor `kubectl scale` to patch scale subresource
2019-08-26 11:53:54 -07:00
Kubernetes Prow Robot
52f708dc28 Merge pull request #81855 from oomichi/replace-e2elog-framework-perf-replicaset
Use log functions of core framework on sub p*
2019-08-26 10:20:24 -07:00
Patrick Ohly
cdaba2bea3 e2e logger test: handle paths in Kubernetes CI
Source code paths during //test/e2e/framework/log:go_default_test in
the Kubernetes CI start with relative paths. To avoid too broad
matching of the regex, those paths that occur in practice are named
explicitly as alternatives to the leading slash.
2019-08-26 12:39:08 +02:00
Patrick Ohly
f021d6590e bazel update 2019-08-26 12:39:00 +02:00
Patrick Ohly
259bb3bef5 e2e: consistent failure logging
All failures are worth logging immediately, not just unexpected
errors. That helps understand tests that have long-running cleanup
operations with their own logging, because the failure will be visible
inside the test output.

The logging in framework.ExpectNoError also was rather poor, because
it only showed the error, but not the additional information about it.

Tests suites now should use log.Fail as Gomega failure handler instead
of ginkgowrapper.Fail. log.Fail will handle the logging for all
failures before proceeding to record the failure in Ginkgo.

Because logging is always done also after a test failure, additional
failures during cleanup are now visible. Ginkgo itself just ignores
them.
2019-08-26 12:38:35 +02:00
Patrick Ohly
311b66ada1 e2e: unit test for logger.go and ginkgowrapper.go
This test runs a fake Ginkgo suite with various errors and checks how
logger.go respectively ginkgowrapper.go handle this. Right now, the
outcome is sub-optimal:

- some test failures (those that use framework.Failf or
  framework.ExpectNoError) are logged immediately, Gomega failures
  are not
- framework.ExpectNoError logs just the error, which is often useless
  without the additional explanation
- failures that occur after some others are not reported at all;
  this can happen in cleanup code and while that code should better
  be written so that it contines instead of failing on an assertion,
  in practice quite a lot of code fails and when it does, the output
  would be useful to have
- the full stack trace is odd and doesn't start with the expected
  function name

Example output:

• Failure [0.002 seconds]
log
/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:35
  fails [It]
  /nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:39

  Jul 17 12:00:52.545: I'm failing.

  /nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:41

  Full Stack Trace
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger.go:51 +0x143
  k8s.io/kubernetes/test/e2e/framework/log.Failf(...)
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger.go:43
  k8s.io/kubernetes/test/e2e/framework/log_test.glob..func1.2.1(...)
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:41
  k8s.io/kubernetes/test/e2e/framework/log_test.glob..func1.2()
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:42 +0x52
  k8s.io/kubernetes/vendor/github.com/onsi/ginkgo/internal/leafnodes.(*runner).runSync(0xc00029b020, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:65 +0x1c8
  testing.tRunner(0xc000358600, 0x19818c0)
  	/nvme/gopath/go/src/testing/testing.go:865 +0xc0
  created by testing.(*T).Run
  	/nvme/gopath/go/src/testing/testing.go:916 +0x35a

------------------------------
Jul 17 12:00:52.545: INFO: before
Jul 17 12:00:52.545: INFO: I'm failing.
Jul 17 12:00:52.547: INFO: after
• Failure [0.002 seconds]
log
/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:35
  asserts [It]
  /nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:44

  false is never true
  Expected
      <bool>: false
  to equal
      <bool>: true

  /nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:45

  Full Stack Trace
  	/nvme/gopath/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/assertion/assertion.go:75 +0x1f1
  k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/assertion.(*Assertion).To(0xc00035f6c0, 0x1b42140, 0xc000350dd0, 0xc000350de0, 0x1, 0x1, 0x42e35f)
  	/nvme/gopath/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/assertion/assertion.go:38 +0xc7
  k8s.io/kubernetes/test/e2e/framework/log_test.glob..func1.3()
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:45 +0x17e
  k8s.io/kubernetes/vendor/github.com/onsi/ginkgo/internal/leafnodes.(*runner).runSync(0xc00029b0e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:65 +0x1c8
  testing.tRunner(0xc000358600, 0x19818c0)
  	/nvme/gopath/go/src/testing/testing.go:865 +0xc0
  created by testing.(*T).Run
  	/nvme/gopath/go/src/testing/testing.go:916 +0x35a

------------------------------
Jul 17 12:00:52.548: INFO: before
Jul 17 12:00:52.549: INFO: after
• Failure [0.002 seconds]
log
/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:35
  error [It]
  /nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:47

  hard-coded error
  Unexpected error:
      <*errors.errorString | 0xc000351930>: {
          s: "I'm an error, nice to meet to.",
      }
      I'm an error, nice to meet to.
  occurred

  /nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:49

  Full Stack Trace
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/util.go:1376 +0x191
  k8s.io/kubernetes/test/e2e/framework.ExpectNoError(...)
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/util.go:1367
  k8s.io/kubernetes/test/e2e/framework/log_test.glob..func1.4()
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:49 +0xc9
  k8s.io/kubernetes/vendor/github.com/onsi/ginkgo/internal/leafnodes.(*runner).runSync(0xc00029b200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
  	/nvme/gopath/src/k8s.io/kubernetes/test/e2e/framework/log/logger_test.go:65 +0x1c8
  testing.tRunner(0xc000358600, 0x19818c0)
  	/nvme/gopath/go/src/testing/testing.go:865 +0xc0
  created by testing.(*T).Run
  	/nvme/gopath/go/src/testing/testing.go:916 +0x35a

------------------------------
Jul 17 12:00:52.550: INFO: before
Jul 17 12:00:52.550: INFO: Unexpected error occurred: I'm an error, nice to meet to.
Jul 17 12:00:52.551: INFO: after
2019-08-26 11:32:25 +02:00
Kubernetes Prow Robot
36b2914207 Merge pull request #81809 from oomichi/replace-e2elog-framework-p
Use log functions of core framework on p*
2019-08-25 21:40:21 -07:00
Kubernetes Prow Robot
8e05e8346a Merge pull request #81693 from oomichi/replace-e2elog-framework-c-n
Use log functions of core framework on [c-n]
2019-08-24 04:48:24 -07:00
Kubernetes Prow Robot
8dc4b1b585 Merge pull request #80213 from bclau/tests/skips-windows-unrelated-tests
tests: Skips Windows-unrelated tests on Windows
2019-08-23 20:56:25 -07:00
Kenichi Omichi
9e9c1709db Use log functions of core framework on sub p*
This makes sub packages of e2e test framework to use log functions
of core framework instead for avoiding circular dependencies.

NOTE: subpackage pod would make circular dependency if changing here.
      So we need to take care of it with another PR.
2019-08-23 19:50:47 +00:00
Kenichi Omichi
c8e0c94a8a Move PrintPerfData to the test
PrintPerfData is called at e2e node tests and it depends on e2elog
and e2emetrics. This moves the function to the place which calls
the function for removing unnecessary dependencies from e2e node
subpackage.
2019-08-23 19:33:24 +00:00
Kubernetes Prow Robot
518ff2a405 Merge pull request #81811 from oomichi/replace-e2elog-framework-deployment-ingress
Use log functions of core framework on [d-i]
2019-08-23 06:54:17 -07:00
Kubernetes Prow Robot
da470c6c5f Merge pull request #81767 from schrodit/fix-e2e-node-lease
Do not cleanup node lease namespace in e2e setup suite
2019-08-23 04:55:44 -07:00
Kubernetes Prow Robot
81c0febcd0 Merge pull request #81715 from SataQiu/fix-test-e2e-framework
Fix static check for test/e2e/framework
2019-08-22 23:27:55 -07:00
knight42
92c4c2ec72 test(scale): fix tests 2019-08-23 10:19:09 +08:00
Kubernetes Prow Robot
09a4b7e257 Merge pull request #81488 from oomichi/move-HandleFlags
Move HandleFlags to e2e package
2019-08-22 17:33:33 -07:00
Kenichi Omichi
acc0c0c980 Use log functions of core framework on sub [j-l]
This makes sub packages of e2e test framework to use log functions
of core framework instead for avoiding circular dependencies.

NOTE: test/e2e/framework/kubelet, test/e2e/framework/metrics and
      test/e2e/framework/node will make circular dependencies if
      updating them. It is necessary to solve them in advance before
      this work.
2019-08-23 00:11:36 +00:00
Kenichi Omichi
20f507fc6a Use log functions of core framework on [d-i]
This makes sub packages of e2e test framework to use log functions
of core framework instead for avoiding circular dependencies.
2019-08-22 22:12:47 +00:00
Kenichi Omichi
0adcf14477 Use log functions of core framework on p*
This makes sub packages of e2e test framework to use log functions
of core framework instead for avoiding circular dependencies.
2019-08-22 20:55:25 +00:00
Tim Schrodi
e88b6310ce Do not cleanup node lease namespace in e2e setup suite 2019-08-22 08:44:31 +02:00
Jiatong Wang
9a2ccc2c4f Dump the stacktrace while an error occurs
Signed-off-by: Jiatong Wang <wangjiatong@vmware.com>
2019-08-21 11:28:59 -07:00
Kubernetes Prow Robot
dd0fb73a61 Merge pull request #81393 from oomichi/cleanup-ReadOrDie
Remove fail argument from ReadOrDie()
2019-08-21 10:36:31 -07:00
SataQiu
c60377c682 fix static check for test/e2e/framework 2019-08-21 17:28:36 +08:00
Kubernetes Prow Robot
11abd6dca0 Merge pull request #81389 from oomichi/remove-invalid-dependency-node
Move ProxyRequest to kubelet e2e fw
2019-08-20 23:05:42 -07:00
Kubernetes Prow Robot
efcb62abff Merge pull request #81196 from mkimuram/issue/71748
Speed up block volume e2e test by checking events
2019-08-20 20:40:16 -07:00
Kubernetes Prow Robot
7a81ecd191 Merge pull request #77794 from saiyan86/fixAzureE2ETest
Use TCP instead of ICMP to check outbound connectivity
2019-08-20 19:13:18 -07:00
Kenichi Omichi
f3f14f9698 Use log functions of core framework on [c-n]
This makes sub packages of e2e test framework to use log functions
of core framework instead for avoiding circular dependencies.
2019-08-21 00:55:32 +00:00
Claudiu Belu
8812720148 tests: Skips Windows-unrelated tests on Windows
Skips IPv6 tests on Windows.
Skips sysctl tests on Windows.
Skips network policy tests on Windows.
Skips RunAsUser / FSGroup / file permissions related tests, as those are
not supported on Windows.
Skips the test "should preserve source pod IP for traffic thru service cluster IP"
on Windows, as it creates a Pod with HostNetwork=true, which is unsupported.

What works and what doesn't work on Windows has been documented here:
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md#windows--linux-considerations
2019-08-20 14:19:14 -07:00
Kubernetes Prow Robot
081db915d3 Merge pull request #81426 from oomichi/make-e2elog-back
Add log.go back to core of e2e test framework
2019-08-19 20:43:47 -07:00
Masaki Kimura
04300826fd Rename WaitTimeoutForPodEvent to WaitTimeoutForEvent and move it to common/events.go 2019-08-19 16:11:30 +00:00
Kenichi Omichi
c76291b8d3 Move HandleFlags to e2e package
HandleFlags() was used at e2e package and it depends on sub e2e
framework "config" in core e2e framework. That was invalid dependency.
So this moves HandleFlags() to e2e package for simple dependency.
2019-08-16 16:43:50 +00:00
Yongli Chen
68e553ae6c use agnhost image
add back ServeHostnameImage
2019-08-15 20:40:07 -07:00
Kenichi Omichi
5e1743cfb1 Add log.go back to core of e2e test framework
We tried to separate logger functionality as subpackage of e2e test
framework, but we've recognized that should be core functionality
and we should keep it as core of e2e test framework after facing
circular dependency issues.
So this adds log.go back to core of e2e test framework. In addition,
this makes volume sub package use the core logger as a sample.
2019-08-16 00:06:04 +00:00
Kenichi Omichi
a5a23d2845 Move ConfirmStatefulPodCount to e2e test
ConfirmStatefulPodCount() was used at e2e statefulset test only,
and that added dependency on another sub framework to statefulset
sub framework. This moves ConfirmStatefulPodCount() to the e2e test
for clean dependency.
2019-08-15 17:36:04 +00:00
Kubernetes Prow Robot
fec7d35f26 Merge pull request #81391 from oomichi/cleanup-GetGPUDevicePluginImage
Move GetGPUDevicePluginImage to the test
2019-08-15 07:20:48 -07:00
Kubernetes Prow Robot
5dad5c726f Merge pull request #81341 from mgdevstack/unflake-service-reach
Add service reachability polling to avoid flakiness
2019-08-14 00:40:39 -07:00
Kubernetes Prow Robot
1e82e1ca1f Merge pull request #81099 from oomichi/remove-golint-e2e-framework
Rename MetricsForE2E for golint failure
2019-08-13 19:36:24 -07:00
Mayank Gaikwad
eddd7da462 Add service reachability polling to avoid flakiness 2019-08-14 06:22:33 +05:30
Kenichi Omichi
cd24b24725 Remove fail argument from ReadOrDie()
Every caller of ReadOrDie() specified ginkgo.Fail as fail argument,
and that was intentional to avoid depending on Ginkgo.
However that just spreaded the dependency on Ginkgo to caller sides.
Especially that was unnecessary e2e test framework "ingress" depended
on Ginkgo only for the above reason.
Now we are cleaning up the dependencies on e2e tests, so let's just
remove such dependencies.
2019-08-14 00:35:51 +00:00
Kenichi Omichi
2efa60b849 Move GetGPUDevicePluginImage to the test
GetGPUDevicePluginImage() was called in some e2e node test only.
So it is not worth keeping the function as a part of e2e test
framework. This moves GetGPUDevicePluginImage() to the e2e node
test for code cleanup.
2019-08-14 00:01:50 +00:00
Kenichi Omichi
2cd45b2c54 Move ProxyRequest to kubelet e2e fw
In e2e test framework, ProxyRequest() is called in kubelet e2e test
framework only. In addition, the function works for kubelet as tests
which call the function do. So this moves the function into kubelet
e2e test framework to make the dependency simple.
2019-08-13 23:25:47 +00:00
Kubernetes Prow Robot
61af419d38 Merge pull request #81291 from danwinship/service-test-cleanup-1
Inline/simplify two used-only-once service test helper functions
2019-08-12 20:12:38 -07:00
Kubernetes Prow Robot
feb6da78f9 Merge pull request #81235 from oomichi/make-simple-dependency-endpoints
Remove core dependency from endpoints e2e fw
2019-08-12 20:12:25 -07:00
Dan Winship
6a42e102b7 Inline/simplify two used-only-once service test helper functions 2019-08-12 09:51:54 -04:00
Kubernetes Prow Robot
0610bf0c7e Merge pull request #81241 from oomichi/cleanup-unused-BusyBoxImage
Remove unused BusyBoxImage
2019-08-11 11:11:10 -07:00
Kubernetes Prow Robot
3e962cb61a Merge pull request #81157 from openSUSE/localhost-nodeport-e2e-fix
[e2e] Fix node port service reachability test for nodes running on localhost
2019-08-10 04:19:14 -07:00
Kenichi Omichi
bb6da9e356 Remove unused BusyBoxImage
The core e2e framework contains BusyBoxImage. The sub e2e "pod"
framework also contains it but not used at all.
So this removes this unused BusyBoxImage for code cleanup.
2019-08-09 22:09:21 +00:00
Kenichi Omichi
19c474fc4d Remove core dependency from endpoints e2e fw
WaitForEndpoint() of the endpoints e2e framework was used in
test/e2e/network/proxy.go only. In addition, the endpoints e2e
framework imported the core of e2e framework only for the function.
So this moves the function into test/e2e/network/proxy.go then we
can remove dependency of core framework from the sub e2e framework.
2019-08-09 20:22:56 +00:00