Commit Graph

2174 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
ba4adeff20 Merge pull request #84090 from oomichi/move-LaunchHostExecPod
Move LaunchHostExecPod() to e2e network
2019-10-20 17:47:37 -07:00
Kubernetes Prow Robot
0f7873ad5c Merge pull request #82308 from zhlhahaha/kubectl_flag
Add kubectlPath flag to e2e_node.test
2019-10-18 23:47:37 -07:00
Kenichi Omichi
5285cf3eb2 Move LaunchHostExecPod() to e2e network
LaunchHostExecPod() is called only from e2e network.
So it is not necessary to keep the function as a part of e2e framework.
This moves it to the place which calls the function.
2019-10-18 17:29:01 +00:00
Dan Winship
52b366457f Add Namespace to e2eservice.TestJig, make all methods use jig namespace and name
Many TestJig methods made the caller pass a serviceName argument, even
though the jig already has a name, and every caller was passing the
same name to each function as they had passed to NewTestJig().

Likewise, many methods made the caller pass a namespace argument, but
only a single test used more than one namespace, and it can easily be
rewritten to use two test jigs as well.
2019-10-18 08:37:19 -04:00
Dan Winship
a0ad420018 Make e2eservice.TestJig methods return errors rather than failing
This is the preferred style for framework methods, and it lets us
write tests to confirm that certain things *don't* work.
2019-10-18 08:36:40 -04:00
Dan Winship
4dcc6229b1 Call jig.SanityCheckService automatically after changes 2019-10-18 08:35:55 -04:00
Dan Winship
85ebedd93e Remove an unneccessary e2eservice.TestJig method 2019-10-17 21:47:34 -04:00
Miciah Masters
980b6406b2 Prefer to delete doubled-up pods of a ReplicaSet
When scaling down a ReplicaSet, delete doubled up replicas first, where a
"doubled up replica" is defined as one that is on the same node as an
active replica belonging to a related ReplicaSet.  ReplicaSets are
considered "related" if they have a common controller (typically a
Deployment).

The intention of this change is to make a rolling update of a Deployment
scale down the old ReplicaSet as it scales up the new ReplicaSet by
deleting pods from the old ReplicaSet that are colocated with ready pods of
the new ReplicaSet.  This change in the behavior of rolling updates can be
combined with pod affinity rules to preserve the locality of a Deployment's
pods over rollout.

A specific scenario that benefits from this change is when a Deployment's
pods are exposed by a Service that has type "LoadBalancer" and external
traffic policy "Local".  In this scenario, the load balancer uses health
checks to determine whether it should forward traffic for the Service to a
particular node.  If the node has no local endpoints for the Service, the
health check will fail for that node.  Eventually, the load balancer will
stop forwarding traffic to that node.  In the meantime, the service proxy
drops traffic for that Service.  Thus, in order to reduce risk of dropping
traffic during a rolling update, it is desirable preserve node locality of
endpoints.

* pkg/controller/controller_utils.go (ActivePodsWithRanks): New type to
sort pods using a given ranking.
* pkg/controller/controller_utils_test.go (TestSortingActivePodsWithRanks):
New test for ActivePodsWithRanks.
* pkg/controller/replicaset/replica_set.go
(getReplicaSetsWithSameController): New method.  Given a ReplicaSet, return
all ReplicaSets that have the same owner.
(manageReplicas): Call getIndirectlyRelatedPods, and pass its result to
getPodsToDelete.
(getIndirectlyRelatedPods): New method.  Given a ReplicaSet, return all
pods that are owned by any ReplicaSet with the same owner.
(getPodsToDelete): Add an argument for related pods.  Use related pods and
the new getPodsRankedByRelatedPodsOnSameNode function to take into account
whether a pod is doubled up when sorting pods for deletion.
(getPodsRankedByRelatedPodsOnSameNode): New function.  Return an
ActivePodsWithRanks value that wraps the given slice of pods and computes
ranks where each pod's rank is equal to the number of active related pods
that are colocated on the same node.
* pkg/controller/replicaset/replica_set_test.go (newReplicaSet): Set
OwnerReferences on the ReplicaSet.
(newPod): Set a unique UID on the pod.
(byName): New type to sort pods by name.
(TestGetReplicaSetsWithSameController): New test for
getReplicaSetsWithSameController.
(TestRelatedPodsLookup): New test for getIndirectlyRelatedPods.
(TestGetPodsToDelete): Augment the "various pod phases and conditions, diff
= len(pods)" test case to ensure that scale-down still selects doubled-up
pods if there are not enough other pods to scale down.  Add a "various pod
phases and conditions, diff = len(pods), relatedPods empty" test case to
verify that getPodsToDelete works even if related pods could not be
determined.  Add a "ready and colocated with another ready pod vs not
colocated, diff < len(pods)" test case to verify that a doubled-up pod gets
preferred for deletion.  Augment the "various pod phases and conditions,
diff < len(pods)" test case to ensure that not-ready pods are preferred
over ready but doubled-up pods.
* pkg/controller/replicaset/BUILD: Regenerate.
* test/e2e/apps/deployment.go
(testRollingUpdateDeploymentWithLocalTrafficLoadBalancer): New end-to-end
test.  Create a deployment with a rolling update strategy and affinity
rules and a load balancer with "Local" external traffic policy, and verify
that set of nodes with local endponts for the service remains unchanged
during rollouts.
(setAffinity): New helper, used by
testRollingUpdateDeploymentWithLocalTrafficLoadBalancer.
* test/e2e/framework/service/jig.go (GetEndpointNodes): Factor building the
set of node names out...
(GetEndpointNodeNames): ...into this new method.
2019-10-17 11:52:32 -04:00
Kubernetes Prow Robot
cedacc9cae Merge pull request #84025 from oomichi/move-CreateNginxPod
Move CreateNginxPod() to specific e2e
2019-10-17 01:47:48 -07:00
Kubernetes Prow Robot
9aed79b585 Merge pull request #83812 from oomichi/move-Initialized
Move Initialized() to e2e framework util
2019-10-16 22:25:21 -07:00
Howard Zhang
1c9da19bf5 Add kubectlPath flag to e2e_node.test
e2e_node.test does not set default kubectlPath, which lead to test
errors as following:
[Fail] [sig-storage] EmptyDir volumes [It] pod should support
shared volumes between containers [Conformance]

When the test trying to read file in shared volume, it uses
"kubeclt exec namespace -c container_name -- cat file_name".
However, as variable framework.TestContext.KubectlPath not set,
kubectl binary can not be found in the test and the tast fails.

This patch move kubectlPath flag from RegisterClusterFlags to
RegisterCommonFlags, thus default value for
framework.TestContext.KubectlPath will be set,and
user can also use --kubectl-path flag to set kubectl path.

Signed-off-by: Howard Zhang <howard.zhang@arm.com>
2019-10-17 11:29:44 +08:00
Kenichi Omichi
9e17a0e9f3 Move CreateNginxPod() to specific e2e
CreateNginxPod() is called from flexvolume_online_resize only and
that seems storage specific function because that requires a PVC.
So this moves the function to the place which calls it for the code
cleanup.
2019-10-17 00:10:38 +00:00
Kubernetes Prow Robot
6b3d154787 Merge pull request #83816 from oomichi/remove-test_verify.go
Remove test_verify from e2e framework package
2019-10-15 23:06:09 -07:00
Kubernetes Prow Robot
cb3b715de2 Merge pull request #83804 from jpbetz/etcd-3_3_17_server
Upgrade to etcd server 3.3.17
2019-10-15 12:50:09 -07:00
Kubernetes Prow Robot
46a29a0cc3 Merge pull request #71674 from grayluck/firewall-event-msg
Change XPN firewall change msg. Should be required by security admin
2019-10-14 21:09:51 -07:00
Joe Betz
c92bd5e7b5 Upgrade to etcd server 3.3.17 2019-10-13 17:17:15 -07:00
Kubernetes Prow Robot
2e55cf01d1 Merge pull request #83854 from mrbobbytables/update-test-vsphere-owners
Prune inactive owners from test/e2e/framework/providers/vsphere/OWNERS.
2019-10-13 13:20:36 -07:00
Bob Killen
340eefe76b Prune inactive owners from test/e2e/framework/providers/vsphere/OWNERS. 2019-10-13 08:39:38 -04:00
Kubernetes Prow Robot
743031d793 Merge pull request #83817 from oomichi/rename-framework-funcs
Rename e2e framework functions used locally
2019-10-12 17:34:37 -07:00
Kubernetes Prow Robot
fbcfabe8ae Merge pull request #83808 from oomichi/rename-volume-fixtures
Rename Generate[Read|Write]FileCmd()s on e2e framework
2019-10-11 22:40:38 -07:00
Kubernetes Prow Robot
8553d50426 Merge pull request #83793 from oomichi/psp
Fix package name of psp on e2e framework
2019-10-11 18:05:04 -07:00
Kenichi Omichi
0126d35df1 Rename e2e framework functions used locally
The following functions are used locally in e2e framework subpackages.
 - RunSSHCommandViaBastion
 - MakeNginxPod
 - LogPodTerminationMessages
 - CheckPodsCondition
 - SetNodeAffinityRequirement

This renames them to clarify them as local ones.
2019-10-12 00:06:49 +00:00
Kenichi Omichi
ab208e9063 Remove test_verify from e2e framework package
test_verify.go contained the function TestPodSuccessOrFail() only,
and the function is used in the package only.
This moves the function to create.go and remove test_verify.go.
2019-10-12 00:01:20 +00:00
Kenichi Omichi
06d41a485c Move Initialized() to e2e framework util
The function is used at e2e framework util module only.
So this moves the function to the module for trying to remove
dependencies to subpackages from core e2e framework.
2019-10-11 22:29:03 +00:00
Kenichi Omichi
e13fb0cbe5 Rename Generate[Read|Write]FileCmd()s
These functions are only used in fixtures.go module.
So it is not necessary to define them for exposing.
This renames these functions for making them local functions clearly.
2019-10-11 21:54:35 +00:00
Kenichi Omichi
c0430d3f8e Fix package name of psp on e2e framework
psp is imported as separated package from main framework but the
name was framework. This made confusion, so this renames it to psp.
2019-10-11 18:21:28 +00:00
Dan Winship
779a842b3c Drop framework.GetReadySchedulableNodesOrDie
It is now fully replaced by e2enode.GetReadySchedulableNodes,
e2enode.GetBoundedReadySchedulableNodes, and
e2enode.GetRandomReadySchedulableNode.
2019-10-09 15:20:26 -04:00
Kubernetes Prow Robot
72d052a444 Merge pull request #81797 from yastij/move-metrics-util
move util/metrics to component-base
2019-10-08 17:08:05 -07:00
Kubernetes Prow Robot
05474a6d84 Merge pull request #78306 from hoyho/feat/e2e-storage-dynamic-size
feat(e2e): refactor hard-coded provision size
2019-10-08 17:07:51 -07:00
Yassine TIJANI
c1487840bc move util/metrics to component-base
Signed-off-by: Yassine TIJANI <ytijani@vmware.com>
2019-10-08 14:42:31 +02:00
Kubernetes Prow Robot
53d500eca3 Merge pull request #83510 from alejandrox1/framework-err-handling
Refactored e2e-test-framework util.go
2019-10-07 23:35:52 -07:00
Kubernetes Prow Robot
72cd1c14ef Merge pull request #83325 from yutedz/static-mirror-pod
Check whether mirror pod is ciritical in managerImpl#evictPod
2019-10-07 22:15:40 -07:00
hoyho
23320c958e feat(e2e): refactor hard-coded provision size
test/e2e/storage/testsuites creates volumes dynamically. Initially, the size of those volumes was
hard-coded in the test, which prevented using the tests with storage backends that couldn't support
that hard-coded size
2019-10-08 01:33:19 +08:00
alejandrox1
352254129b Refactored e2e-test-framework util.go
This cleans up the framework.util.go file and moves various Expect*
functions into their own file for better organization.

Signed-off-by: alejandrox1 <alarcj137@gmail.com>
2019-10-05 15:02:46 -04:00
Kubernetes Prow Robot
b140b43107 Merge pull request #82176 from pohly/ginkgo-stack-fix
Ginkgo update + stack fix
2019-10-05 00:59:25 -07:00
Ted Yu
79359773f6 Reset default namespace deletion timeout to 5 minutes 2019-10-02 19:48:06 -07:00
Patrick Ohly
72609fc5f4 bazel update 2019-10-01 21:30:12 +02:00
Patrick Ohly
4620d0b2b8 e2e log: move back to framework, part II
This continues the work in
https://github.com/kubernetes/kubernetes/pull/81426 by also moving the
logger_test.go, moving the log helper code from util.go to log.go (a
more logical place, as it is only used there) and updating comments.
2019-10-01 21:30:12 +02:00
Patrick Ohly
ecd7ae55bc e2e log: Ginkgo 1.10.1 fixes stack skip
Now Ginkgo properly skips the initial stack entry.
2019-10-01 21:27:29 +02:00
Patrick Ohly
f70c81c9f2 e2e log: consistent logging of stack backtrace and failure, part II
After merging
259bb3bef5 (diff-eb7b79470992813ea1905e96c298b47b)
ExpectEqual and some of the other wrappers logged the failure twice,
once inside the wrapper itself and once in the failure handler.

Logging the stack backtrace is useful because many assertions still
don't contain an explanation and therefore knowing where they occur is
crucial. Now all failures are logged with a "Full Stack Trace", not
just those with a wrapper. The stack is pruned to skip over wrapper
functions and removes Ginkgo internal functions to keep the stack
trace smaller.

Failures occuring in the wrappers were recorded as occuring in those
wrappers. Now the wrappers are skipped and the caller is recorded
instead.

The full stack trace recorded by Ginkgo 1.10.0 is currently off by one
entry. This needs to be fixed in Ginkgo, then the test can be updated.
2019-10-01 21:27:29 +02:00
Patrick Ohly
6cecc0ab37 e2e log: skip log.Failf in stack information
The function itself isn't relevant.
2019-10-01 21:25:59 +02:00
Patrick Ohly
02ce619078 e2e log: fix full stacktrace with Ginkgo 1.10.0
Ginkgo 1.10.0 includes the relevant fix for dumping the full stack
(https://github.com/onsi/ginkgo/pull/590), so when using that release
we can simplify the logging unit test.

By changing the skipping, we can avoid the rather volatile util.go
entries. However, that gomega is part of the stack trace still needs
to be fixed in Gingko.
2019-10-01 21:25:59 +02:00
Ted Yu
0939f90103 Check whether mirror pod is ciritical in managerImpl#evictPod 2019-10-01 11:12:18 -07:00
Kubernetes Prow Robot
c2c821534b Merge pull request #81093 from johnSchnake/useImageUtilsForLookup
Use imageutils instead of hardcoded image paths
2019-10-01 02:37:32 -07:00
Kubernetes Prow Robot
78940cd5ef Merge pull request #81419 from mgdevstack/checkServiceReachability
Update e2e testing nodePort service listening on same port but different protocols
2019-10-01 01:21:40 -07:00
Kubernetes Prow Robot
820b796c66 Merge pull request #83301 from justinsb/e2e_tag_volume_we_create
e2e: on aws, tag volumes we want the cluster to mount
2019-09-30 20:17:38 -07:00
Kubernetes Prow Robot
8826378be5 Merge pull request #83331 from aojea/getporturl_ipv6
Allow ipv6 urls in GetPortURL()
2019-09-30 16:13:31 -07:00
Kubernetes Prow Robot
2d491ace8d Merge pull request #82439 from smarterclayton/async_ns_cleanup
test/e2e: Delete test namespaces asynchronously
2019-09-30 14:35:31 -07:00
Kubernetes Prow Robot
48199d3c0f Merge pull request #83219 from alejandrox1/framework-util-skip
Cleaned up skip* functions from framework/util.go
2019-09-30 11:47:39 -07:00
Antonio Ojea
5e6eb467ac Allow ipv6 urls in GetPortURL() 2019-09-30 20:32:36 +02:00