Commit Graph

89 Commits

Author SHA1 Message Date
David Zhu
b6a38d7e2b Add supportedMountOptions for GCE PD CSI Driver tests 2019-07-16 16:17:54 -07:00
Patrick Ohly
b86a007057 e2e: avoid mandatory command line flags
Tests should never directly add to the global command line, because
some users of the tests might not want them there. For example,
options might only get set directly from a config file.

To achieve that, e2e/framework/config, e2e/framework/viperconfig, and
e2e/framework/test_context.go avoid using the global flag set and
instead expect to be told by the caller which flag set to use. Tests
that called flag directly either get updated or obsolete flags get
removed.

The exception is framework.HandleFlags, which as before directly
implements global command line handling.

This is a breaking change for test suites which do not use that
function (and only those): they now need to ensure that they copy
individual flags from tests. Because the RegisterCommonFlags prototype
has changed, test suite authors will notice due to the resulting
compilation errors.
2019-07-04 17:15:14 +02:00
SataQiu
332be4b1e3 refactor: replace framework.Failf with e2elog.Failf 2019-06-19 17:52:35 +08:00
SataQiu
b828e570b1 fix golint failures of test/e2e/storage/drivers 2019-05-20 13:12:38 +08:00
danielqsj
1058877fbf remove dot imports in e2e/storage 2019-05-10 13:56:26 +08:00
Michelle Au
80471bf487 remove pd-external from e2e config
Change-Id: I1d734fcc8e8145e586b5df9acd0736c7ba0658d1
2019-04-29 15:25:14 -07:00
Michelle Au
bbf6683e22 Switch PD tests to use delayed binding 2019-03-27 18:30:13 -07:00
Kubernetes Prow Robot
11b9ebf113
Merge pull request #75225 from jingxu97/pd_windows_test
Add bracket to the sig-window tag and other fixes
2019-03-12 13:19:19 -07:00
Jing Xu
3718f4e0ed Add bracket to the sig-window tag
Need to add bracket in the tag for sig-windows. Also fix an issue: for
current testing structure, it first init driver and then set up the
framework. So when initialize the driver, it does not know what OS is
and we can not set up the capabilities correctly. Instead we have to add
all the capabilities and supported fs types including both linux and
windows. Later in the code, we will check the Node OS and decide how to
run the test.
2019-03-11 18:40:45 -07:00
Hemant Kumar
a8f318779b Add CSI volume resizing tests
Add some tests for checking node expansion
Add new tests for expander
2019-03-08 09:23:18 -05:00
Kubernetes Prow Robot
788f24583e
Merge pull request #74990 from jingxu97/pd_windows_test
Add GCE PD tests for windows cluster
2019-03-07 21:20:23 -08:00
Jing Xu
18be0a49e6 Add GCE PD tests for windows cluster
This PR is the first one to add a few GCE PD tests for windows cluster. Will
add more tests in later PRs
2019-03-07 09:13:56 -08:00
Ben Swartzlander
1493e684d3 Promote CSI raw blocks to beta 2019-03-06 13:43:52 -05:00
Michelle Au
afbc8a5056 e2e test updates for beta 2019-03-05 20:24:59 -08:00
Hemant Kumar
2516cbd453 Add e2e for CSI volume limit stuff
Also use privileged for driver registra
2019-02-26 13:04:54 -05: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
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
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
xushiwei
7280fcef5c address reviewer comments 2019-02-01 16:34:16 +08:00
xushiwei
3410d435ed add snapshot e2e 2019-01-30 19:04:45 +08:00
Masaki Kimura
b152d435ae Update fsType parameter for csi v1.0 provisioner 2019-01-23 05:26:55 +00:00
Masaki Kimura
398bf3929f Skip XFS test for csi gce-pd driver on COS 2019-01-23 05:15:24 +00:00
Masaki Kimura
b767dbdeb5 Fix volumes e2e test to check fsType 2019-01-23 05:12:37 +00:00
Cheng Xing
12ece9dacb CSI topology e2e tests 2019-01-11 18:36:06 -08:00
Jan Safranek
e1556c1549 Fix hostpath driver name 2019-01-04 17:26:24 +01:00
Jan Safranek
d617dcb1e0 CSI: Add test for passing Pod information in NodePublish call 2019-01-02 16:11:41 +01:00
Patrick Ohly
3253e9ab6b e2e/storage: refactor test config
Exposing framework.VolumeTestConfig as part of the testsuite package
API was confusing because it was unclear which of the values in it
really have an effect. How it was set also was a bit awkward: a test
driver had a copy that had to be overwritten at test runtime and then
might have been updated and/or overwritten again by the driver.

Now testsuites has its own test config structure. It contains the
values that might have to be set dynamically at runtime. Instead of
overwriting a copy of that struct inside the test driver, the test
driver takes some common defaults (specifically, the framework pointer
and the prefix) when it gets initialized and then manages its own
copy. For example, the hostpath driver has to lock the pods to a
single node.

framework.VolumeTestConfig is still used internally and test drivers
can decide to run tests with a fully populated instance if needed (for
example, after setting up an NFS server).
2018-12-21 10:30:06 +01:00
Patrick Ohly
dfcf2ca345 e2e/storage: separate generic testsuites from specific drivers
This makes it possible to use the testsuites package out-of-tree
without pulling in unnecessary dependencies and code (in
test/e2e/storage/vsphere) that defines tests that are not wanted in a
custom test suite.
2018-12-20 13:41:48 +01:00
Patrick Ohly
41ab9449ed e2e/storage: drivers determine the claim size
Different drivers support different volume sizes. Some have certain
minimum sizes, some maximum sizes. Instead of hard-coding some kind of
default into the testsuites, now each driver that supports dynamic
provisioning has to provide the size.
2018-12-20 13:41:48 +01:00
Patrick Ohly
5349ce75fa e2e/storage: remove code duplication
The setup of the V0 hostpath driver was done with copy-and-paste and
then changing just the driver name and the manifests. The same can be
achieved by making the base struct a bit more configurable, which
simplifies future changes (less code).

Renaming the provisioner container was unnecessary and was reverted to
make it possible to use the same patch configuration.

While at it, also fix the InitHostV0PathCSIDriver typo.
2018-12-20 13:41:48 +01:00
k8s-ci-robot
3156df3e80
Merge pull request #71537 from davidz627/fix/updateGCE
Create cloud-sa on GCE PD Driver creation
2018-11-30 08:20:29 -08:00
Michelle Au
03065a1bde Refactor driverinfo feature support into capabilities map 2018-11-29 11:10:06 -08:00
David Zhu
67a40cd3cc Do GCE Secret setup in driver creation instead of skip test 2018-11-29 10:51:01 -08:00
saad-ali
aa8244beb5 Modify CSI to handle both 0.3 and 1.0
Modify the CSI volume plugin to handle CSI version 0.x as well as 1.x
2018-11-21 18:37:31 -08:00
saad-ali
503f654d7a Update CSI tests to point to 1.0.0 external bits. 2018-11-15 20:01:50 -08:00
Michelle Au
63068be7ef Remove serial from gcepd-external tests 2018-11-13 16:42:57 -08:00
Masaki Kimura
d33211dc44 Fix test driver's unique name consistent
Fixes: #70760
2018-11-07 22:24:48 +00:00
Masaki Kimura
b89b367247 Make csi drivers and in-tree drivers share e2e tests 2018-11-07 15:42:58 +00:00