Commit Graph

658 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
8993fbc543 Merge pull request #74328 from daixiang0/delete-blank
delete all duplicate empty blanks
2019-02-23 01:43:58 -08:00
Xiang Dai
36065c6dd7 delete all duplicate empty blanks
Signed-off-by: Xiang Dai <764524258@qq.com>
2019-02-23 10:28:04 +08:00
Michelle Au
6266c47972 Fix localssd test panic 2019-02-22 17:06:11 -08:00
Yecheng Fu
5c67d55002 Use same fsGroup for both pods until we have a reliable way to detect
volumes are unmounted or not
2019-02-21 15:56:35 +08:00
Kubernetes Prow Robot
21e3c15dfe Merge pull request #72732 from sandeeppsunny/vsphere_volume_zone
Added e2e tests for multi-zone volume provisioning through VCP
2019-02-20 09:01:27 -08:00
Kubernetes Prow Robot
07cf5fa08e Merge pull request #72434 from pohly/storage-volume-testsuites-config
e2e/storage: delay CreateDriver, simplify APIs and test definition
2019-02-20 05:37:45 -08:00
Kubernetes Prow Robot
9e55995a31 Merge pull request #73989 from oomichi/golint-e2e-framework-metrics
Fix golint failures under test/e2e/framework/metrics
2019-02-19 16:23:48 -08:00
Kubernetes Prow Robot
e67562dc4c Merge pull request #74143 from oomichi/issue/73771
Call getRandomClusterZone() only if necessary
2019-02-19 09:55:55 -08:00
Sandeep Sunny
5b59c6e08c Added e2e tests for multi-zone volume provisioning 2019-02-19 18:44:20 +05:30
Kubernetes Prow Robot
f7eb5769c2 Merge pull request #71468 from bclau/windows-tests
Windows networking tests
2019-02-18 06:24:24 -08:00
Kubernetes Prow Robot
07a5488b2a Merge pull request #74141 from zetaab/fixtest
disable xfs localvolume test
2019-02-16 00:29:57 -08:00
Kubernetes Prow Robot
95c3cbaf9f Merge pull request #74094 from gnufied/fix-multizone-test-resizing
Use delayed binding for multizone tests
2019-02-15 20:35:51 -08:00
Hemant Kumar
abb2fc656d Use delayed binding for multizone tests 2019-02-15 15:57:21 -05:00
Kenichi Omichi
a01381a7d2 Call getRandomClusterZone() only if necessary
e2e test "[It] should provision storage with different parameters"
depends on cloud providers as gce/gke, aws, openstack, vsphere and
azure. If the other cloud providers like local, the test is skipped.
However getRandomClusterZone() was called before the above cloud
provider check, and if the zone label is not found the test was failed.
This makes the test call getRandomClusterZone() only if necessary
to avoid such unnecessary failures.

Fixes: #73771
2019-02-15 20:07:11 +00:00
Jesse Haka
c75b0bf8ca disable xfs localvolume test 2019-02-15 21:31:25 +02:00
Patrick Ohly
ec3655a1d4 e2e/storage: re-initialize all local variables
There is a risk that the init function does not reset one of the local
variables that was set by a previous test. To avoid this, all
variables set by init are now in a struct which gets cleaned
completely first.
2019-02-15 11:03:28 +01:00
Patrick Ohly
e79cd9efe1 e2e: update bazel BUILD files
Generated via hack/update-bazel.sh.
2019-02-15 11:01:09 +01:00
Patrick Ohly
4643624084 e2e/storage: remove test pattern filtering
The recommended approach for not running unsuitable tests is to skip
them at runtime with an explanation. Filtering out unsuitable test
patters and thus not even defining unsuitable tests was done earlier
because it was faster than skipping tests at runtime.

But now these tests can be skipped efficiently, so this special case
can be removed.
2019-02-15 11:01:08 +01:00
Patrick Ohly
05cc31697f e2e/storage: speed up skipping, simplify APIs and test definition
CreateDriver (now called SetupTest) is a potentially expensive
operation, depending on the driver. Creating and tearing down a
framework instance also takes time (measured at 6 seconds on a fast
machine) and produces quite a bit of log output.

Both can be avoided for tests that skip based on static
information (like for instance the current OS, vendor, driver and test
pattern) by making the test suite responsible for creating framework
and driver.

The lifecycle of the TestConfig instance was confusing because it was
stored inside the DriverInfo, a struct which conceptually is static,
while the TestConfig is dynamic. It is cleaner to separate the two,
even if that means that an additional pointer must be passed into some
functions. Now CreateDriver is responsible for initializing the
PerTestConfig that is to be used by the test.

To make this approach simpler to implement (= less functions which
need the pointer) and the tests easier to read, the entire setup and
test definition is now contained in a single function. This is how it
is normally done in Ginkgo. This is easier to read because one can see
at a glance where variables are set, instead of having to trace values
though two additional structs (TestResource and TestInput).

Because we are changing the API already, also other changes are made:
- some function prototypes get simplified
- the naming of functions is changed to match their purpose
  (tests aren't executed by the test suite, they only get defined
  for later execution)
- unused methods get removed (TestSuite.skipUnsupportedTest is redundant)
2019-02-15 11:01:05 +01:00
Patrick Ohly
1cb121d2a9 e2e/storage: introduce TestVolume interface
This increases type safety and makes the code easier to read because
it becomes obvious that the "test resource" passed to some functions
must be the result of a previous CreateVolume.

This makes it possible to remove:
- functions that never did anything (the DeleteVolume methods in
  drivers that never create a volume)
- type casts (in the DeleteVolume implementation)
- the unused DeleteVolume parameters
- the stand-alone DeleteVolume function (which would be just a non-nil
  check)

GetPersistentVolumeSource and GetVolumeSource could also become
methods on more specific interfaces - they don't actually use anything
from TestDriver instance which provides them.

The main motivation however is to reduce the number of methods which
might need an explicit test config parameter.
2019-02-15 08:38:54 +01:00
Jose A. Rivera
a33acd2ba6 CSIDriverRegistry e2e: Use framework.Poll when waiting for PVC delete
Signed-off-by: Jose A. Rivera <jarrpa@redhat.com>
2019-02-14 11:25:15 -06:00
Jose A. Rivera
86c71472df CSIDriverRegistry e2e: Wait for CSIDriver creation
Signed-off-by: Jose A. Rivera <jarrpa@redhat.com>
2019-02-14 11:25:15 -06:00
Jose A. Rivera
81bc0e5ec8 CRIDriverRegistry e2e: Clarify variable name
Signed-off-by: Jose A. Rivera <jarrpa@redhat.com>
2019-02-14 06:59:43 -06:00
Jose A. Rivera
1ac3b37848 CSIDriverRegistry e2e: Always clean up driver
Signed-off-by: Jose A. Rivera <jarrpa@redhat.com>
2019-02-14 06:56:17 -06:00
Kubernetes Prow Robot
b13438ab24 Merge pull request #73928 from wongma7/protection-waitforfirstconsumer
Fix PVC protection e2es when default storage class is WaitForFirstConsumer
2019-02-13 21:50:17 -08:00
Kubernetes Prow Robot
2e287a0ac1 Merge pull request #73677 from jarrpa/csi-cluster-registrar
e2e: Use cluster-driver-registrar for CSIDriverRegistry tests
2019-02-13 17:31:33 -08:00
Kubernetes Prow Robot
f9af7e94a9 Merge pull request #73962 from wongma7/glusterfs-sc
Fix glusterfs e2e not using correct storageclass
2019-02-13 14:32:16 -08:00
Jose A. Rivera
62f3211d76 Run hack/update-bazel.sh
Signed-off-by: Jose A. Rivera <jarrpa@redhat.com>
2019-02-13 15:06:58 -06:00
Jose A. Rivera
6115fc49a6 Use cluster-driver-registrar for CSIDriverRegistry tests
Signed-off-by: Jose A. Rivera <jarrpa@redhat.com>
2019-02-13 15:06:58 -06:00
Kubernetes Prow Robot
812016fa23 Merge pull request #73818 from gnufied/add-e2e-for-no-expand
add e2e test when expansion is disabled
2019-02-13 12:16:09 -08:00
Kenichi Omichi
89f6f1d0cc Fix golint failures under e2e/framework/metrics 2019-02-13 18:07:16 +00:00
Kubernetes Prow Robot
1250237316 Merge pull request #73995 from humblec/fix-e2e
Use correct server url in dynamic provisioning tests
2019-02-13 09:45:15 -08:00
Matthew Wong
2f981fa4c1 Fix PVC protection e2es when default storage class is WaitForFirstConsumer 2019-02-13 12:41:45 -05:00
Hemant Kumar
7d823e5df0 also remove slow tag from resizing tests 2019-02-13 10:48:49 -05:00
Hemant Kumar
e3faa003a1 add e2e test when expansion is disabled
Also refactor some of the code that creates resizable SC
2019-02-13 10:48:49 -05:00
Humble Chirammal
a078ebf246 Set correct server uri on e2e dynamic provisioner
Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
2019-02-13 13:52:38 +05:30
Kubernetes Prow Robot
2aedcbc7ca Merge pull request #73761 from andrewsykim/remove-cloud-provider-volume-deps
remove cloud provider dependencies to pkg/volume
2019-02-12 18:45:24 -08:00
Matthew Wong
6d73de1154 Fix glusterfs e2e not using correct storageclass 2019-02-12 11:31:29 -05:00
Patrick Ohly
ecc0c4e4b4 e2e/storage: enable concurrent writes for gcepd
The driver should support multiple pods using the same volume on the
same node.
2019-02-12 09:21:50 +01:00
Patrick Ohly
03d352f7aa e2e/storage: test usage of volume in multiple pods at once
This is a special case that both kubelet and the volume driver should
support, because users might expect it. One Kubernetes mechanism to
deploy pods like this is via pod affinity.

However, strictly speaking the CSI spec does not allow this usage
mode (see https://github.com/container-storage-interface/spec/pull/150) and
there is an on-going debate to enable it (see
https://github.com/container-storage-interface/spec/issues/178). Therefore
this test gets skipped unless explicitly enabled for a driver.

CSI drivers which create a block device for a remote volume in
NodePublishVolume fail this test. They have to make the volume
available in NodeStageVolume and then in NodePublishVolume merely do a
bind mount (as for example in
https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver/blob/master/pkg/gce-pd-csi-driver/node.go#L150).
2019-02-12 09:21:50 +01:00
Patrick Ohly
ca42cf4993 e2e/storage: test provisioned volume on multiple nodes
Whether the read test after writing was done on the same node was
random for drivers that weren't locked onto a single node. Now it is
deterministic: it always happens on the same node.

The case with reading on another node is covered separately for test
configurations that support it (not locked onto a single node, more
than one node in the test cluster).

As before, the TestConfig.ClientNodeSelector is ignored by the
provisioning testsuite.
2019-02-12 09:21:50 +01:00
Patrick Ohly
54d8f1648f e2e/storage: improve PV checking
TestDynamicProvisioning had multiple ways of choosing additional
checks:
- the PvCheck callback
- the builtin write/read check controlled by a boolean
- the snapshot testing

Complicating matters further, that builtin write/read test had been
more customizable with new fields `NodeSelector` and
`ExpectUnschedulable` which were only set by one particular test (see
https://github.com/kubernetes/kubernetes/pull/70941).

That is confusing and will only get more confusing when adding more
checks in the future. Therefore the write/read check is now a separate
function that must be enabled explicitly by tests that want to run it.
The snapshot checking is also defined only for the snapshot test.

The test that expects unschedulable pods now also checks for that
particular situation itself. Instead of testing it with two pods (the
behavior from the write/read check) that both fail to start, only a
single unschedulable pod is created.

Because node name, node selector and the `ExpectUnschedulable` were
only used for checking, it is possible to simplify `StorageClassTest`
by removing all of these fields.

Expect(err).NotTo(HaveOccurred()) is an anti-pattern in Ginkgo testing
because a test failure doesn't explain what failed (see
https://github.com/kubernetes/kubernetes/issues/34059). We avoid it
now by making the check function itself responsible for checking
errors and including more information in those checks.
2019-02-09 14:20:17 +01:00
Patrick Ohly
5b8826b610 e2e/storage: use different names for test pods
When the provisioning test gets stuck, the log fills up with messages
about waiting for a certain pod to run. Now the pod names are
pvc-[volume-tester|snapshot]-[writer|reader] plus the random
number appended by Kubernetes. This makes it easier to see where the
test is stuck.
2019-02-09 14:20:17 +01:00
Patrick Ohly
e92bdd14cc e2e/storage: remove unnecessary empty string checks
There is no need to check for empty strings, we can also directly
initialize structs with the value. The end result is the same when the
value is empty (empty string in the struct).
2019-02-09 14:20:17 +01:00
Patrick Ohly
315266b25e e2e: refine snapshot test
This addresses the two remaining change requests from
https://github.com/kubernetes/kubernetes/pull/69036:
- replace "csi-hostpath-v0" name check with capability
  check (cleaner that way)
- add feature tag to "should create snapshot with defaults" because
  that is an alpha feature

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2019-02-09 14:20:17 +01:00
Patrick Ohly
f8536e8e42 e2e: fix snapshot skip test
Even if snapshots are supported by the driver interface, the driver or
suite might still want to skip a particular test, so those checks
still need to be executed.
2019-02-09 14:19:37 +01:00
Andrew Kim
ca6a051b00 remove cloud provider dependencies to pkg/volume
Co-authored-by: Weibin Lin <linweibin1@huawei.com>
2019-02-09 01:16:55 -05:00
Kubernetes Prow Robot
8f7ccf8d4c Merge pull request #69036 from wackxu/snapshottest
add e2e test for snapshot
2019-02-08 13:14:04 -08:00
Kubernetes Prow Robot
54a578d3a1 Merge pull request #72012 from yeya24/patch-1
fix typos lable -> label
2019-02-08 10:36:05 -08:00
Kubernetes Prow Robot
b50c643be0 Merge pull request #73540 from rlenferink/patch-5
Updated OWNERS files to include link to docs
2019-02-08 09:05:56 -08:00