Commit Graph

72 Commits (c72a5b2c107f2578e98249d1d55682671544ab9b)

Author SHA1 Message Date
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
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
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
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
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
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
Hemant Kumar 7d823e5df0 also remove slow tag from resizing tests 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 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
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
Davanum Srinivas b975573385
move pkg/kubelet/apis/well_known_labels.go to staging/src/k8s.io/api/core/v1/
Co-Authored-By: Weibin Lin <linweibin1@huawei.com>

Change-Id: I163b2f2833e6b8767f72e2c815dcacd0f4e504ea
2019-02-05 13:39:07 -05:00
Jan Safranek 9ed73a948c Pass the test if event is not delivered 2019-01-21 17:03:10 +01:00
Cheng Xing 12ece9dacb CSI topology e2e tests 2019-01-11 18:36:06 -08:00
Deep Debroy 923df464fb Add multi PVC versions of tests for delayed binding
Signed-off-by: Deep Debroy <ddebroy@docker.com>
2018-11-09 12:17:31 -08:00
Masaki Kimura 6afcaccf7d Move the provisioning test for retain policy back to volume_provisioning.go
Provisioning test for retain policy requires each driver's backend volume
deletion logic. Without it, volume leakage happens. Move this test back
to volume_provisioning.go and test it only for gce, until general
backend volume deletion code for each driver becomes available.

Fixes: #70191
2018-10-24 19:21:28 +00:00
Masaki Kimura 4fcb36e205 Move minimum set of dynamic provisioning e2e test to testsuites 2018-10-22 16:04:43 +00:00
Patrick Ohly 8b17db7e0c e2e: modular framework
Not all users of the E2E framework want to run cloud-provider specific
tests. By splitting out the code it becomes possible to decide in
a E2E test suite which providers are supported.

This is achieved in two ways:
- the framework calls certain functions through a provider
  interface instead of calling specific cloud provider functions
  directly
- tests that are cloud-provider specific directly import the
  new provider packages

The ingress test utilities are only needed by a few tests. Splitting
them out into a separate package makes the framework simpler for test
suites not using those tests.

Fixes: #66649
2018-10-11 11:16:11 +02:00
Michelle Au b1594f3cd1 Move storage tests that take longer than 2 minutes to slow suite 2018-09-20 15:29:00 -07:00
Matthew Wong 5d877436bf Update external provisioner test to use latest nfs-provisioner 2018-08-31 16:26:02 -04:00
Kubernetes Submit Queue 39ea20a5bf
Merge pull request #68034 from msau42/remove-feature-tag
Automatic merge from submit-queue (batch tested with PRs 67764, 68034, 67836). If you want to cherry-pick this change to another branch, please follow the instructions here: https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md.

Remove feature tag from dynamic provisioning topology tests

**What this PR does / why we need it**:
Now that the feature has been moved to beta, remove feature tag to let it run in the standard CI suite.

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
NONE
```
2018-08-30 09:59:30 -07:00
Kubernetes Submit Queue 9ca7ffdf59
Merge pull request #66577 from mkimuram/issue/66571
Automatic merge from submit-queue (batch tested with PRs 66577, 67948, 68001, 67982). If you want to cherry-pick this change to another branch, please follow the instructions here: https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md.

Refactor volume test in a similar way to csi tests

Refactoring for non-csi e2e test similar to below commit in csi e2e test.
4d11dab272 (diff-0d9ecaa3e6a0297186ad33f57aad472e)

Scopes for this refactoring are below three files:
  - test/e2e/storage/volumes.go
  - test/e2e/storage/volume_io.go
  - test/e2e/storage/persistent_volumes-volumemode.go



**What this PR does / why we need it**:

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes #66571

**Special notes for your reviewer**:
/sig storage
@davidz627 @msau42 @jsafrane  

**Release note**:

```release-note
NONE
```
2018-08-29 16:33:31 -07:00
Michelle Au a1154682da Remove feature tag from dynamic provisioning topology tests 2018-08-29 13:43:53 -07:00
Masaki Kimura 877ed5c22d Refactor volume test in a similar way to csi tests
Refactoring for non-csi e2e test similar to below commit in csi e2e test.
4d11dab272 (diff-0d9ecaa3e6a0297186ad33f57aad472e)

Scopes for this refactoring are below four files:
  - test/e2e/storage/volumes.go
  - test/e2e/storage/volume_io.go
  - test/e2e/storage/persistent_volumes-volumemode.go
  - test/e2e/storage/subpath.go

fixes: #66571
2018-08-29 14:39:01 +00:00
Deep Debroy 10f652abec E2E tests for allowedTopologies and waitForConsumer for GCE PD and RePD
Signed-off-by: Deep Debroy <ddebroy@docker.com>
2018-08-28 12:35:43 -07:00
Deep Debroy 0417b21d50 End2End tests for DynamicVolumeProvisioning for EBS
Signed-off-by: Deep Debroy <ddebroy@docker.com>
2018-08-10 16:33:46 -07:00
Davanum Srinivas 6cd8bd62fe
e2e test harness - use busybox from dockerhub
Use the same pattern everywhere in the e2e test
harness, use busybox (from dockerhub) instead
of using the one from k8s.gcr.io registry.

Change-Id: I57c3b867408c1f9478a8909c26744ea0368ff003
2018-08-07 11:22:16 -04:00
Krunal Jain 539b3693f4 Reverting commit #56600 as GCE PD is allocated in chunks of GiB instead of GBs
Fixing comments and importing constant from util

Importing constant from util

Fixing comment in volume_provisioning.go
2018-07-16 11:55:57 -07:00
Matthew Wong c968beceb1 Re-enable write-read pv check in volume provisioning tests 2018-07-10 16:20:58 -04:00
Kubernetes Submit Queue 18b16be622
Merge pull request #65223 from jsafrane/aws-inaccessible-key
Automatic merge from submit-queue (batch tested with PRs 65187, 65206, 65223, 64752, 65238). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Fixed detection of inaccessible AWS encryption key.

AWS provisioner now checks if created encrypted volume gets "Available" or it gets silently deleted by AWS because StorageClass referenced invalid (e.g. non-existing) KMS key for encryption.

This seems to be the only way how to detect such invalid key, because Kubernetes may not have enough permission to check if the key exists.

**Which issue(s) this PR fixes**
Fixes #62171

**Special notes for your reviewer**:

**Release note**:

```release-note
AWS now checks for validity of ecryption key when creating encrypted volumes. Dynamic provisioning of encrypted volume may get slower due to these checks.
```

/sig aws
/sig storage
@kubernetes/sig-aws-misc
2018-06-21 19:48:10 -07:00
Jan Safranek 7bbe309d8d Fixed detection of inaccessible AWS encryption key. 2018-06-19 10:11:47 +02:00
Jan Safranek a15a2af085 Enable dynamic provisioning tests on AWS.
The tests are not slow, they finish on GCE under 1.5 minutes and on AWS
under 3 minutes.
2018-06-13 13:09:25 +02:00
Jan Safranek 408f62ca4e e2e test for block volume provisioning 2018-05-30 11:35:58 +02:00
Humble Chirammal 92928845d2 Enable GCE/GKE e2e tests for GlusterFS Dynamic Provisioner.
Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
2018-05-07 23:04:36 +05:30
Kubernetes Submit Queue 34706b79e4
Merge pull request #59879 from humblec/gluster-dp-test-latest_1
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Add tests for GlusterFS dynamic provisioner.

This bring up a heketi server pod and the server will be running
    in mock mode, the PVC creation should work, however the volume
    attachment to a pod and read/write is not part of this test. Due
    to the same reason the tests are marked as [fast].


Signed-off-by: Humble Chirammal <hchiramm@redhat.com>



**What this PR does / why we need it**:

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note

```
2018-04-30 06:09:52 -07:00
Humble Chirammal b550134dfe This bring up a heketi server pod and the server will be running
in mock mode, the PVC creation should work, however the volume
attachment to a pod and read/write is not part of this test. Due
to the same reason the tests are marked as [fast].

Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
2018-04-27 09:24:25 +05:30
Yecheng Fu 27e2e32b00 Use shorter timeout if possible.
- Add PodStartShortTimeout and ClaimProvisionShortTimeout constants.
- Change framework.PodStartTimeout to framework.PodStartShortTimeout in
  persistent_volumes-local.go. Busybox image is very small, no need to
  wait for a long time.
2018-04-19 10:07:59 +08:00
xiangpengzhao 1f80008f41 Remove the use of storage class beta annotations in e2e tests. 2018-04-10 15:29:08 +08:00
Jan Safranek 97fae903a6 Add e2e test for deletion 2018-03-05 09:25:51 +01:00
Cheng Xing c08abb719f multi-zone PD e2e tests 2018-02-22 14:24:08 -08:00
Kubernetes Submit Queue 7dbb709413
Merge pull request #56509 from lpabon/csi-e2e
Automatic merge from submit-queue (batch tested with PRs 57266, 58187, 58186, 46245, 56509). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

e2e: CSI Tests

**What this PR does / why we need it**:
This e2e test tests the CSI external attacher with a mock CSI plugin driver.

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: https://github.com/kubernetes/features/issues/178

**Special notes for your reviewer**:
* Tests features in https://github.com/kubernetes/features/issues/178
* Tests implementation of https://github.com/kubernetes/community/pull/1258
* Tests VolumeAttachment Object: https://github.com/kubernetes/kubernetes/pull/54463

**Release note**:
```release-note
NONE
```
2018-01-12 20:34:56 -08:00
Bowei Du 301488b235 Expose all GCE cloud proivder services versions, not just the GA API 2017-12-22 11:24:10 -08:00
Matthew Wong 9247ff7e21 Update nfsprovisioner image to v1.0.9 to fix annotation race with pv controller 2017-12-20 17:52:06 -05:00
Kubernetes Submit Queue 7ede2a012e
Merge pull request #56600 from edisonxiang/fixvolumesize
Automatic merge from submit-queue (batch tested with PRs 56600, 56814). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Fix volume size allocation in gcd_pd

**What this PR does / why we need it**:
GCE PDs are allocated in chunks of GBs not GiB but CreateVolume function incorrectly creates volume in chunks of GiB.  
1 GiB = 1024 * 1024 * 1024 Bytes
1 GB = 1000 * 1000 * 1000 Bytes

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes #56081

**Special notes for your reviewer**:

**Release note**:

```release-note
Fixed dynamic provisioning of GCE PDs to round to the next GB instead of GiB
```
2017-12-19 14:08:38 -08:00
Luis Pabón d1eb8a6163 e2e: CSI Volume tests
This e2e test tests the CSI volume plugin in kubernetes with
a CSI hostPath driver. It is also setup to be able to be
tested with more drivers in the future.
2017-12-18 22:04:52 -05:00
Rohit Jog 015e20cb15 e2e test layout changes for vsphere (#398) 2017-12-18 10:19:18 -08:00
edisonxiang d80dbe7fea Fix GCE CreateVolume allocates in chunks of GiB incorrectly 2017-12-17 19:43:37 +08:00
David Zhu e5aec8645d Changed GetAllZones to only get zones with nodes that are currently
running (renamed to GetAllCurrentZones). Added E2E test to confirm this
behavior.

Added node informer to cloud-provider controller to keep track of zones
with k8s nodes in them.
2017-11-20 16:04:18 -08:00