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
1ec3457f
Commit
1ec3457f
authored
Jan 06, 2015
by
Tim Hockin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Beef up validation tests
parent
8b42534f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
158 additions
and
42 deletions
+158
-42
validation_test.go
pkg/api/validation/validation_test.go
+158
-42
No files found.
pkg/api/validation/validation_test.go
View file @
1ec3457f
...
@@ -338,7 +338,22 @@ func TestValidateRestartPolicy(t *testing.T) {
...
@@ -338,7 +338,22 @@ func TestValidateRestartPolicy(t *testing.T) {
if
noPolicySpecified
.
Always
==
nil
{
if
noPolicySpecified
.
Always
==
nil
{
t
.
Errorf
(
"expected Always policy specified"
)
t
.
Errorf
(
"expected Always policy specified"
)
}
}
}
func
TestValidateDNSPolicy
(
t
*
testing
.
T
)
{
successCases
:=
[]
api
.
DNSPolicy
{
api
.
DNSClusterFirst
,
api
.
DNSDefault
,
api
.
DNSPolicy
(
""
)}
for
_
,
policy
:=
range
successCases
{
if
errs
:=
validateDNSPolicy
(
&
policy
);
len
(
errs
)
!=
0
{
t
.
Errorf
(
"expected success: %v"
,
errs
)
}
}
errorCases
:=
[]
api
.
DNSPolicy
{
api
.
DNSPolicy
(
"invalid"
)}
for
_
,
policy
:=
range
errorCases
{
if
errs
:=
validateDNSPolicy
(
&
policy
);
len
(
errs
)
==
0
{
t
.
Errorf
(
"expected failure for %v"
,
policy
)
}
}
}
}
func
TestValidateManifest
(
t
*
testing
.
T
)
{
func
TestValidateManifest
(
t
*
testing
.
T
)
{
...
@@ -404,59 +419,109 @@ func TestValidateManifest(t *testing.T) {
...
@@ -404,59 +419,109 @@ func TestValidateManifest(t *testing.T) {
}
}
}
}
func
TestValidatePod
(
t
*
testing
.
T
)
{
func
TestValidatePodSpec
(
t
*
testing
.
T
)
{
errs
:=
ValidatePod
(
&
api
.
Pod
{
successCases
:=
[]
api
.
PodSpec
{
ObjectMeta
:
api
.
ObjectMeta
{
{},
// empty is valid, if not very useful */
Name
:
"foo"
,
Namespace
:
api
.
NamespaceDefault
,
{
// Populate basic fields, leave defaults for most.
Labels
:
map
[
string
]
string
{
Volumes
:
[]
api
.
Volume
{{
Name
:
"vol"
}},
"foo"
:
"bar"
,
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
},
},
},
Spec
:
api
.
PodSpec
{
{
// Populate all fields.
RestartPolicy
:
api
.
RestartPolicy
{
Volumes
:
[]
api
.
Volume
{
Always
:
&
api
.
RestartPolicyAlways
{
},
{
Name
:
"vol"
},
},
},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
RestartPolicy
:
api
.
RestartPolicy
{
Always
:
&
api
.
RestartPolicyAlways
{}},
DNSPolicy
:
api
.
DNSClusterFirst
,
NodeSelector
:
map
[
string
]
string
{
"key"
:
"value"
,
},
Host
:
"foobar"
,
},
},
})
if
len
(
errs
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero error list: %#v"
,
errs
)
}
}
errs
=
ValidatePod
(
&
api
.
Pod
{
for
i
:=
range
successCases
{
ObjectMeta
:
api
.
ObjectMeta
{
if
errs
:=
ValidatePodSpec
(
&
successCases
[
i
]);
len
(
errs
)
!=
0
{
Name
:
"foo"
,
t
.
Errorf
(
"expected success: %v"
,
errs
)
Namespace
:
api
.
NamespaceDefault
,
}
Labels
:
map
[
string
]
string
{
}
"foo"
:
"bar"
,
},
failureCases
:=
map
[
string
]
api
.
PodSpec
{
"bad volume"
:
{
Volumes
:
[]
api
.
Volume
{{}},
},
"bad container"
:
{
Containers
:
[]
api
.
Container
{{}},
},
"bad DNS policy"
:
{
DNSPolicy
:
api
.
DNSPolicy
(
"invalid"
),
},
},
Spec
:
api
.
PodSpec
{},
}
})
for
k
,
v
:=
range
failureCases
{
if
len
(
errs
)
!=
0
{
if
errs
:=
ValidatePodSpec
(
&
v
);
len
(
errs
)
==
0
{
t
.
Errorf
(
"Unexpected non-zero error list: %#v"
,
errs
)
t
.
Errorf
(
"expected failure for %q"
,
k
)
}
}
}
errs
=
ValidatePodSpec
(
&
api
.
PodSpec
{
defaultPod
:=
api
.
PodSpec
{}
// all empty fields
RestartPolicy
:
api
.
RestartPolicy
{
if
errs
:=
ValidatePodSpec
(
&
defaultPod
);
len
(
errs
)
!=
0
{
Always
:
&
api
.
RestartPolicyAlways
{},
t
.
Errorf
(
"expected success: %v"
,
errs
)
Never
:
&
api
.
RestartPolicyNever
{},
}
if
util
.
AllPtrFieldsNil
(
defaultPod
.
RestartPolicy
)
{
t
.
Errorf
(
"expected a default RestartPolicy"
)
}
if
defaultPod
.
DNSPolicy
==
""
{
t
.
Errorf
(
"expected a default DNSPolicy"
)
}
}
func
TestValidatePod
(
t
*
testing
.
T
)
{
successCases
:=
[]
api
.
Pod
{
{
// Mostly empty.
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc"
,
Namespace
:
"ns"
},
},
},
})
{
// Basic fields.
if
len
(
errs
)
!=
1
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"123"
,
Namespace
:
"ns"
},
t
.
Errorf
(
"Unexpected error list: %#v"
,
errs
)
Spec
:
api
.
PodSpec
{
Volumes
:
[]
api
.
Volume
{{
Name
:
"vol"
}},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
},
},
{
// Just about everything.
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc.123.do-re-mi"
,
Namespace
:
"ns"
},
Spec
:
api
.
PodSpec
{
Volumes
:
[]
api
.
Volume
{
{
Name
:
"vol"
},
},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
RestartPolicy
:
api
.
RestartPolicy
{
Always
:
&
api
.
RestartPolicyAlways
{}},
DNSPolicy
:
api
.
DNSClusterFirst
,
NodeSelector
:
map
[
string
]
string
{
"key"
:
"value"
,
},
Host
:
"foobar"
,
},
},
}
for
_
,
pod
:=
range
successCases
{
if
errs
:=
ValidatePod
(
&
pod
);
len
(
errs
)
!=
0
{
t
.
Errorf
(
"expected success: %v"
,
errs
)
}
}
}
errs
=
ValidatePod
(
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
errorCases
:=
map
[
string
]
api
.
Pod
{
Name
:
"foo"
,
"bad name"
:
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
""
,
Namespace
:
"ns"
}},
Namespace
:
api
.
NamespaceDefault
,
"bad namespace"
:
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc"
,
Namespace
:
""
}},
Labels
:
map
[
string
]
string
{
"bad spec"
:
{
"1/2/3/4/5"
:
"bar"
,
// invalid
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc"
,
Namespace
:
"ns"
},
"valid"
:
"bar"
,
// good
Spec
:
api
.
PodSpec
{
Containers
:
[]
api
.
Container
{{}},
},
},
},
},
Spec
:
api
.
PodSpec
{},
}
})
for
k
,
v
:=
range
errorCases
{
if
len
(
errs
)
!=
1
{
if
errs
:=
ValidatePod
(
&
v
);
len
(
errs
)
==
0
{
t
.
Errorf
(
"Unexpected error list: %#v"
,
errs
)
t
.
Errorf
(
"expected failure for %s"
,
k
)
}
}
}
}
}
...
@@ -623,6 +688,57 @@ func TestValidatePodUpdate(t *testing.T) {
...
@@ -623,6 +688,57 @@ func TestValidatePodUpdate(t *testing.T) {
}
}
}
}
func
TestValidateBoundPods
(
t
*
testing
.
T
)
{
successCases
:=
[]
api
.
BoundPod
{
{
// Mostly empty.
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc"
,
Namespace
:
"ns"
},
},
{
// Basic fields.
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"123"
,
Namespace
:
"ns"
},
Spec
:
api
.
PodSpec
{
Volumes
:
[]
api
.
Volume
{{
Name
:
"vol"
}},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
},
},
{
// Just about everything.
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc.123.do-re-mi"
,
Namespace
:
"ns"
},
Spec
:
api
.
PodSpec
{
Volumes
:
[]
api
.
Volume
{
{
Name
:
"vol"
},
},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
RestartPolicy
:
api
.
RestartPolicy
{
Always
:
&
api
.
RestartPolicyAlways
{}},
DNSPolicy
:
api
.
DNSClusterFirst
,
NodeSelector
:
map
[
string
]
string
{
"key"
:
"value"
,
},
Host
:
"foobar"
,
},
},
}
for
_
,
pod
:=
range
successCases
{
if
errs
:=
ValidateBoundPod
(
&
pod
);
len
(
errs
)
!=
0
{
t
.
Errorf
(
"expected success: %v"
,
errs
)
}
}
errorCases
:=
map
[
string
]
api
.
Pod
{
"bad name"
:
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
""
,
Namespace
:
"ns"
}},
"bad namespace"
:
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc"
,
Namespace
:
""
}},
"bad spec"
:
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"abc"
,
Namespace
:
"ns"
},
Spec
:
api
.
PodSpec
{
Containers
:
[]
api
.
Container
{{}},
},
},
}
for
k
,
v
:=
range
errorCases
{
if
errs
:=
ValidatePod
(
&
v
);
len
(
errs
)
==
0
{
t
.
Errorf
(
"expected failure for %s"
,
k
)
}
}
}
func
TestValidateService
(
t
*
testing
.
T
)
{
func
TestValidateService
(
t
*
testing
.
T
)
{
testCases
:=
[]
struct
{
testCases
:=
[]
struct
{
name
string
name
string
...
...
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