Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
0b3e28c8
Commit
0b3e28c8
authored
Nov 07, 2017
by
Balu Dontu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vSphere scale tests
parent
18402f6c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
322 additions
and
29 deletions
+322
-29
pv_util.go
test/e2e/framework/pv_util.go
+9
-6
ubernetes_lite.go
test/e2e/multicluster/ubernetes_lite.go
+2
-2
BUILD
test/e2e/storage/BUILD
+1
-0
persistent_volumes-disruptive.go
test/e2e/storage/persistent_volumes-disruptive.go
+2
-2
persistent_volumes.go
test/e2e/storage/persistent_volumes.go
+1
-1
volume_metrics.go
test/e2e/storage/volume_metrics.go
+2
-2
vsphere_scale.go
test/e2e/storage/vsphere_scale.go
+247
-0
vsphere_stress.go
test/e2e/storage/vsphere_stress.go
+5
-11
vsphere_utils.go
test/e2e/storage/vsphere_utils.go
+48
-0
vsphere_volume_fstype.go
test/e2e/storage/vsphere_volume_fstype.go
+2
-2
vsphere_volume_ops_storm.go
test/e2e/storage/vsphere_volume_ops_storm.go
+1
-1
vsphere_volume_vsan_policy.go
test/e2e/storage/vsphere_volume_vsan_policy.go
+1
-1
persistent_volumes.go
test/e2e/upgrades/storage/persistent_volumes.go
+1
-1
No files found.
test/e2e/framework/pv_util.go
View file @
0b3e28c8
...
...
@@ -790,12 +790,12 @@ func deletePD(pdName string) error {
// Returns a pod definition based on the namespace. The pod references the PVC's
// name.
func
MakeWritePod
(
ns
string
,
pvc
*
v1
.
PersistentVolumeClaim
)
*
v1
.
Pod
{
return
MakePod
(
ns
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
"touch /mnt/volume1/SUCCESS && (id -G | grep -E '
\\
b777
\\
b')"
)
return
MakePod
(
ns
,
nil
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
"touch /mnt/volume1/SUCCESS && (id -G | grep -E '
\\
b777
\\
b')"
)
}
// Returns a pod definition based on the namespace. The pod references the PVC's
// name. A slice of BASH commands can be supplied as args to be run by the pod
func
MakePod
(
ns
string
,
pvclaims
[]
*
v1
.
PersistentVolumeClaim
,
isPrivileged
bool
,
command
string
)
*
v1
.
Pod
{
func
MakePod
(
ns
string
,
nodeSelector
map
[
string
]
string
,
pvclaims
[]
*
v1
.
PersistentVolumeClaim
,
isPrivileged
bool
,
command
string
)
*
v1
.
Pod
{
if
len
(
command
)
==
0
{
command
=
"while true; do sleep 1; done"
}
...
...
@@ -832,6 +832,9 @@ func MakePod(ns string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool,
}
podSpec
.
Spec
.
Containers
[
0
]
.
VolumeMounts
=
volumeMounts
podSpec
.
Spec
.
Volumes
=
volumes
if
nodeSelector
!=
nil
{
podSpec
.
Spec
.
NodeSelector
=
nodeSelector
}
return
podSpec
}
...
...
@@ -886,9 +889,9 @@ func MakeSecPod(ns string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bo
return
podSpec
}
//
create pod with given claims
func
CreatePod
(
client
clientset
.
Interface
,
namespace
string
,
pvclaims
[]
*
v1
.
PersistentVolumeClaim
,
isPrivileged
bool
,
command
string
)
(
*
v1
.
Pod
,
error
)
{
pod
:=
MakePod
(
namespace
,
pvclaims
,
isPrivileged
,
command
)
//
CreatePod with given claims based on node selector
func
CreatePod
(
client
clientset
.
Interface
,
namespace
string
,
nodeSelector
map
[
string
]
string
,
pvclaims
[]
*
v1
.
PersistentVolumeClaim
,
isPrivileged
bool
,
command
string
)
(
*
v1
.
Pod
,
error
)
{
pod
:=
MakePod
(
namespace
,
nodeSelector
,
pvclaims
,
isPrivileged
,
command
)
pod
,
err
:=
client
.
CoreV1
()
.
Pods
(
namespace
)
.
Create
(
pod
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"pod Create API error: %v"
,
err
)
...
...
@@ -928,7 +931,7 @@ func CreateSecPod(client clientset.Interface, namespace string, pvclaims []*v1.P
// Define and create a pod with a mounted PV. Pod runs infinite loop until killed.
func
CreateClientPod
(
c
clientset
.
Interface
,
ns
string
,
pvc
*
v1
.
PersistentVolumeClaim
)
(
*
v1
.
Pod
,
error
)
{
return
CreatePod
(
c
,
ns
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
""
)
return
CreatePod
(
c
,
ns
,
nil
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
""
)
}
// wait until all pvcs phase set to bound
...
...
test/e2e/multicluster/ubernetes_lite.go
View file @
0b3e28c8
...
...
@@ -309,8 +309,8 @@ func PodsUseStaticPVsOrFail(f *framework.Framework, podCount int, image string)
By
(
"Creating pods for each static PV"
)
for
_
,
config
:=
range
configs
{
podConfig
:=
framework
.
MakePod
(
ns
,
[]
*
v1
.
PersistentVolumeClaim
{
config
.
pvc
},
false
,
""
)
config
.
pod
,
err
=
c
.
Core
V1
()
.
Pods
(
ns
)
.
Create
(
podConfig
)
podConfig
:=
framework
.
MakePod
(
ns
,
nil
,
[]
*
v1
.
PersistentVolumeClaim
{
config
.
pvc
},
false
,
""
)
config
.
pod
,
err
=
c
.
Core
()
.
Pods
(
ns
)
.
Create
(
podConfig
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
}
...
...
test/e2e/storage/BUILD
View file @
0b3e28c8
...
...
@@ -23,6 +23,7 @@ go_library(
"volume_metrics.go",
"volume_provisioning.go",
"volumes.go",
"vsphere_scale.go",
"vsphere_statefulsets.go",
"vsphere_stress.go",
"vsphere_utils.go",
...
...
test/e2e/storage/persistent_volumes-disruptive.go
View file @
0b3e28c8
...
...
@@ -151,7 +151,7 @@ var _ = SIGDescribe("PersistentVolumes[Disruptive][Flaky]", func() {
framework
.
ExpectNoError
(
framework
.
WaitOnPVandPVC
(
c
,
ns
,
pv2
,
pvc2
))
By
(
"Attaching both PVC's to a single pod"
)
clientPod
,
err
=
framework
.
CreatePod
(
c
,
ns
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc1
,
pvc2
},
true
,
""
)
clientPod
,
err
=
framework
.
CreatePod
(
c
,
ns
,
nil
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc1
,
pvc2
},
true
,
""
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
})
...
...
@@ -309,7 +309,7 @@ func initTestCase(f *framework.Framework, c clientset.Interface, pvConfig framew
}
}()
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
pod
:=
framework
.
MakePod
(
ns
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
""
)
pod
:=
framework
.
MakePod
(
ns
,
nil
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
""
)
pod
.
Spec
.
NodeName
=
nodeName
framework
.
Logf
(
"Creating NFS client pod."
)
pod
,
err
=
c
.
CoreV1
()
.
Pods
(
ns
)
.
Create
(
pod
)
...
...
test/e2e/storage/persistent_volumes.go
View file @
0b3e28c8
...
...
@@ -292,7 +292,7 @@ var _ = SIGDescribe("PersistentVolumes", func() {
// If a file is detected in /mnt, fail the pod and do not restart it.
By
(
"Verifying the mount has been cleaned."
)
mount
:=
pod
.
Spec
.
Containers
[
0
]
.
VolumeMounts
[
0
]
.
MountPath
pod
=
framework
.
MakePod
(
ns
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
fmt
.
Sprintf
(
"[ $(ls -A %s | wc -l) -eq 0 ] && exit 0 || exit 1"
,
mount
))
pod
=
framework
.
MakePod
(
ns
,
nil
,
[]
*
v1
.
PersistentVolumeClaim
{
pvc
},
true
,
fmt
.
Sprintf
(
"[ $(ls -A %s | wc -l) -eq 0 ] && exit 0 || exit 1"
,
mount
))
pod
,
err
=
c
.
CoreV1
()
.
Pods
(
ns
)
.
Create
(
pod
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
framework
.
ExpectNoError
(
framework
.
WaitForPodSuccessInNamespace
(
c
,
pod
.
Name
,
ns
))
...
...
test/e2e/storage/volume_metrics.go
View file @
0b3e28c8
...
...
@@ -87,7 +87,7 @@ var _ = SIGDescribe("[Serial] Volume metrics", func() {
claims
:=
[]
*
v1
.
PersistentVolumeClaim
{
pvc
}
pod
:=
framework
.
MakePod
(
ns
,
claims
,
false
,
""
)
pod
:=
framework
.
MakePod
(
ns
,
nil
,
claims
,
false
,
""
)
pod
,
err
=
c
.
CoreV1
()
.
Pods
(
ns
)
.
Create
(
pod
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
...
...
@@ -115,7 +115,7 @@ var _ = SIGDescribe("[Serial] Volume metrics", func() {
Expect
(
pvc
)
.
ToNot
(
Equal
(
nil
))
claims
:=
[]
*
v1
.
PersistentVolumeClaim
{
pvc
}
pod
:=
framework
.
MakePod
(
ns
,
claims
,
false
,
""
)
pod
:=
framework
.
MakePod
(
ns
,
nil
,
claims
,
false
,
""
)
pod
,
err
=
c
.
CoreV1
()
.
Pods
(
ns
)
.
Create
(
pod
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
...
...
test/e2e/storage/vsphere_scale.go
0 → 100644
View file @
0b3e28c8
This diff is collapsed.
Click to expand it.
test/e2e/storage/vsphere_stress.go
View file @
0b3e28c8
...
...
@@ -18,6 +18,10 @@ package storage
import
(
"fmt"
"os"
"strconv"
"sync"
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/gomega"
"k8s.io/api/core/v1"
...
...
@@ -28,9 +32,6 @@ import (
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
"k8s.io/kubernetes/test/e2e/framework"
"os"
"strconv"
"sync"
)
/*
...
...
@@ -45,13 +46,6 @@ import (
*/
var
_
=
SIGDescribe
(
"vsphere cloud provider stress [Feature:vsphere]"
,
func
()
{
f
:=
framework
.
NewDefaultFramework
(
"vcp-stress"
)
const
(
volumesPerNode
=
55
storageclass1
=
"sc-default"
storageclass2
=
"sc-vsan"
storageclass3
=
"sc-spbm"
storageclass4
=
"sc-user-specified-ds"
)
var
(
client
clientset
.
Interface
namespace
string
...
...
@@ -159,7 +153,7 @@ func PerformVolumeLifeCycleInParallel(f *framework.Framework, client clientset.I
By
(
fmt
.
Sprintf
(
"%v Creating Pod using the claim: %v"
,
logPrefix
,
pvclaim
.
Name
))
// Create pod to attach Volume to Node
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
pvclaims
,
false
,
""
)
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
nil
,
pvclaims
,
false
,
""
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
By
(
fmt
.
Sprintf
(
"%v Waiting for the Pod: %v to be in the running state"
,
logPrefix
,
pod
.
Name
))
...
...
test/e2e/storage/vsphere_utils.go
View file @
0b3e28c8
...
...
@@ -38,6 +38,14 @@ import (
"k8s.io/kubernetes/test/e2e/framework"
)
const
(
volumesPerNode
=
55
storageclass1
=
"sc-default"
storageclass2
=
"sc-vsan"
storageclass3
=
"sc-spbm"
storageclass4
=
"sc-user-specified-ds"
)
// Sanity check for vSphere testing. Verify the persistent disk attached to the node.
func
verifyVSphereDiskAttached
(
vsp
*
vsphere
.
VSphere
,
volumePath
string
,
nodeName
types
.
NodeName
)
(
bool
,
error
)
{
var
(
...
...
@@ -53,6 +61,46 @@ func verifyVSphereDiskAttached(vsp *vsphere.VSphere, volumePath string, nodeName
return
isAttached
,
err
}
// Wait until vsphere volumes are detached from the list of nodes or time out after 5 minutes
func
waitForVSphereDisksToDetach
(
vsp
*
vsphere
.
VSphere
,
nodeVolumes
map
[
k8stype
.
NodeName
][]
string
)
error
{
var
(
err
error
disksAttached
=
true
detachTimeout
=
5
*
time
.
Minute
detachPollTime
=
10
*
time
.
Second
)
if
vsp
==
nil
{
vsp
,
err
=
vsphere
.
GetVSphere
()
if
err
!=
nil
{
return
err
}
}
err
=
wait
.
Poll
(
detachPollTime
,
detachTimeout
,
func
()
(
bool
,
error
)
{
attachedResult
,
err
:=
vsp
.
DisksAreAttached
(
nodeVolumes
)
if
err
!=
nil
{
return
false
,
err
}
for
nodeName
,
nodeVolumes
:=
range
attachedResult
{
for
volumePath
,
attached
:=
range
nodeVolumes
{
if
attached
{
framework
.
Logf
(
"Waiting for volumes %q to detach from %q."
,
volumePath
,
string
(
nodeName
))
return
false
,
nil
}
}
}
disksAttached
=
false
framework
.
Logf
(
"Volume are successfully detached from all the nodes: %+v"
,
nodeVolumes
)
return
true
,
nil
})
if
err
!=
nil
{
return
err
}
if
disksAttached
{
return
fmt
.
Errorf
(
"Gave up waiting for volumes to detach after %v"
,
detachTimeout
)
}
return
nil
}
// Wait until vsphere vmdk is deteched from the given node or time out after 5 minutes
func
waitForVSphereDiskToDetach
(
vsp
*
vsphere
.
VSphere
,
volumePath
string
,
nodeName
types
.
NodeName
)
error
{
var
(
...
...
test/e2e/storage/vsphere_volume_fstype.go
View file @
0b3e28c8
...
...
@@ -128,7 +128,7 @@ func invokeTestForInvalidFstype(f *framework.Framework, client clientset.Interfa
var
pvclaims
[]
*
v1
.
PersistentVolumeClaim
pvclaims
=
append
(
pvclaims
,
pvclaim
)
// Create pod to attach Volume to Node
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
pvclaims
,
false
,
ExecCommand
)
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
nil
,
pvclaims
,
false
,
ExecCommand
)
Expect
(
err
)
.
To
(
HaveOccurred
())
eventList
,
err
:=
client
.
CoreV1
()
.
Events
(
namespace
)
.
List
(
metav1
.
ListOptions
{})
...
...
@@ -170,7 +170,7 @@ func createPodAndVerifyVolumeAccessible(client clientset.Interface, namespace st
pvclaims
=
append
(
pvclaims
,
pvclaim
)
By
(
"Creating pod to attach PV to the node"
)
// Create pod to attach Volume to Node
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
pvclaims
,
false
,
ExecCommand
)
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
nil
,
pvclaims
,
false
,
""
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
// Asserts: Right disk is attached to the pod
...
...
test/e2e/storage/vsphere_volume_ops_storm.go
View file @
0b3e28c8
...
...
@@ -109,7 +109,7 @@ var _ = SIGDescribe("Volume Operations Storm [Feature:vsphere]", func() {
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
By
(
"Creating pod to attach PVs to the node"
)
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
pvclaims
,
false
,
""
)
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
nil
,
pvclaims
,
false
,
""
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
By
(
"Verify all volumes are accessible and available in the pod"
)
...
...
test/e2e/storage/vsphere_volume_vsan_policy.go
View file @
0b3e28c8
...
...
@@ -292,7 +292,7 @@ func invokeValidPolicyTest(f *framework.Framework, client clientset.Interface, n
By
(
"Creating pod to attach PV to the node"
)
// Create pod to attach Volume to Node
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
pvclaims
,
false
,
""
)
pod
,
err
:=
framework
.
CreatePod
(
client
,
namespace
,
nil
,
pvclaims
,
false
,
""
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
vsp
,
err
:=
vsphere
.
GetVSphere
()
...
...
test/e2e/upgrades/storage/persistent_volumes.go
View file @
0b3e28c8
...
...
@@ -98,7 +98,7 @@ func (t *PersistentVolumeUpgradeTest) Teardown(f *framework.Framework) {
// testPod creates a pod that consumes a pv and prints it out. The output is then verified.
func
(
t
*
PersistentVolumeUpgradeTest
)
testPod
(
f
*
framework
.
Framework
,
cmd
string
)
{
pod
:=
framework
.
MakePod
(
f
.
Namespace
.
Name
,
[]
*
v1
.
PersistentVolumeClaim
{
t
.
pvc
},
false
,
cmd
)
pod
:=
framework
.
MakePod
(
f
.
Namespace
.
Name
,
nil
,
[]
*
v1
.
PersistentVolumeClaim
{
t
.
pvc
},
false
,
cmd
)
expectedOutput
:=
[]
string
{
pvTestData
}
f
.
TestContainerOutput
(
"pod consumes pv"
,
pod
,
0
,
expectedOutput
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment