• Patrick Ohly's avatar
    e2e/storage: speed up skipping, simplify APIs and test definition · 05cc3169
    Patrick Ohly authored
    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)
    05cc3169
csi_volumes.go 20.1 KB