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
122f97d2
Commit
122f97d2
authored
Jul 05, 2016
by
Wojciech Tyczynski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Migrate remaining integration tests
parent
c2126f68
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
69 additions
and
51 deletions
+69
-51
master_utils.go
test/integration/framework/master_utils.go
+9
-8
master_benchmark_test.go
test/integration/master_benchmark_test.go
+11
-6
quota_test.go
test/integration/quota_test.go
+11
-6
rbac_test.go
test/integration/rbac_test.go
+38
-29
service_account_test.go
test/integration/service_account_test.go
+0
-2
No files found.
test/integration/framework/master_utils.go
View file @
122f97d2
...
@@ -64,9 +64,6 @@ const (
...
@@ -64,9 +64,6 @@ const (
// Rc manifest used to create pods for benchmarks.
// Rc manifest used to create pods for benchmarks.
// TODO: Convert this to a full path?
// TODO: Convert this to a full path?
TestRCManifest
=
"benchmark-controller.json"
TestRCManifest
=
"benchmark-controller.json"
// Test Namspace, for pods and rcs.
TestNS
=
"test"
)
)
// MasterComponents is a control struct for all master components started via NewMasterComponents.
// MasterComponents is a control struct for all master components started via NewMasterComponents.
...
@@ -326,23 +323,27 @@ func StartRC(controller *api.ReplicationController, restClient *client.Client) (
...
@@ -326,23 +323,27 @@ func StartRC(controller *api.ReplicationController, restClient *client.Client) (
return
ScaleRC
(
created
.
Name
,
created
.
Namespace
,
controller
.
Spec
.
Replicas
,
restClient
)
return
ScaleRC
(
created
.
Name
,
created
.
Namespace
,
controller
.
Spec
.
Replicas
,
restClient
)
}
}
// StartPods check for numPods in
TestNS
. If they exist, it no-ops, otherwise it starts up
// StartPods check for numPods in
namespace
. If they exist, it no-ops, otherwise it starts up
// a temp rc, scales it to match numPods, then deletes the rc leaving behind the pods.
// a temp rc, scales it to match numPods, then deletes the rc leaving behind the pods.
func
StartPods
(
numPods
int
,
host
string
,
restClient
*
client
.
Client
)
error
{
func
StartPods
(
n
amespace
string
,
n
umPods
int
,
host
string
,
restClient
*
client
.
Client
)
error
{
start
:=
time
.
Now
()
start
:=
time
.
Now
()
defer
func
()
{
defer
func
()
{
glog
.
Infof
(
"StartPods took %v with numPods %d"
,
time
.
Since
(
start
),
numPods
)
glog
.
Infof
(
"StartPods took %v with numPods %d"
,
time
.
Since
(
start
),
numPods
)
}()
}()
hostField
:=
fields
.
OneTermEqualSelector
(
api
.
PodHostField
,
host
)
hostField
:=
fields
.
OneTermEqualSelector
(
api
.
PodHostField
,
host
)
options
:=
api
.
ListOptions
{
FieldSelector
:
hostField
}
options
:=
api
.
ListOptions
{
FieldSelector
:
hostField
}
pods
,
err
:=
restClient
.
Pods
(
TestNS
)
.
List
(
options
)
pods
,
err
:=
restClient
.
Pods
(
namespace
)
.
List
(
options
)
if
err
!=
nil
||
len
(
pods
.
Items
)
==
numPods
{
if
err
!=
nil
||
len
(
pods
.
Items
)
==
numPods
{
return
err
return
err
}
}
glog
.
Infof
(
"Found %d pods that match host %v, require %d"
,
len
(
pods
.
Items
),
hostField
,
numPods
)
glog
.
Infof
(
"Found %d pods that match host %v, require %d"
,
len
(
pods
.
Items
),
hostField
,
numPods
)
// For the sake of simplicity, assume all pods in
TestNS
have selectors matching TestRCManifest.
// For the sake of simplicity, assume all pods in
namespace
have selectors matching TestRCManifest.
controller
:=
RCFromManifest
(
TestRCManifest
)
controller
:=
RCFromManifest
(
TestRCManifest
)
// Overwrite namespace
controller
.
ObjectMeta
.
Namespace
=
namespace
controller
.
Spec
.
Template
.
ObjectMeta
.
Namespace
=
namespace
// Make the rc unique to the given host.
// Make the rc unique to the given host.
controller
.
Spec
.
Replicas
=
int32
(
numPods
)
controller
.
Spec
.
Replicas
=
int32
(
numPods
)
controller
.
Spec
.
Template
.
Spec
.
NodeName
=
host
controller
.
Spec
.
Template
.
Spec
.
NodeName
=
host
...
@@ -355,7 +356,7 @@ func StartPods(numPods int, host string, restClient *client.Client) error {
...
@@ -355,7 +356,7 @@ func StartPods(numPods int, host string, restClient *client.Client) error {
}
else
{
}
else
{
// Delete the rc, otherwise when we restart master components for the next benchmark
// Delete the rc, otherwise when we restart master components for the next benchmark
// the rc controller will race with the pods controller in the rc manager.
// the rc controller will race with the pods controller in the rc manager.
return
restClient
.
ReplicationControllers
(
TestNS
)
.
Delete
(
rc
.
Name
)
return
restClient
.
ReplicationControllers
(
namespace
)
.
Delete
(
rc
.
Name
)
}
}
}
}
...
...
test/integration/master_benchmark_test.go
View file @
122f97d2
...
@@ -64,7 +64,6 @@ func init() {
...
@@ -64,7 +64,6 @@ func init() {
Pods
=
*
pods
Pods
=
*
pods
Workers
=
*
workers
Workers
=
*
workers
Tasks
=
*
tasks
Tasks
=
*
tasks
framework
.
DeleteAllEtcdKeys
()
}
}
// getPods returns the cmd line -pods or b.N if -pods wasn't specified.
// getPods returns the cmd line -pods or b.N if -pods wasn't specified.
...
@@ -98,7 +97,7 @@ func getIterations(bN int) int {
...
@@ -98,7 +97,7 @@ func getIterations(bN int) int {
}
}
// startPodsOnNodes creates numPods sharded across numNodes
// startPodsOnNodes creates numPods sharded across numNodes
func
startPodsOnNodes
(
numPods
,
numNodes
int
,
restClient
*
client
.
Client
)
{
func
startPodsOnNodes
(
n
s
string
,
n
umPods
,
numNodes
int
,
restClient
*
client
.
Client
)
{
podsPerNode
:=
numPods
/
numNodes
podsPerNode
:=
numPods
/
numNodes
if
podsPerNode
<
1
{
if
podsPerNode
<
1
{
podsPerNode
=
1
podsPerNode
=
1
...
@@ -114,6 +113,9 @@ func BenchmarkPodList(b *testing.B) {
...
@@ -114,6 +113,9 @@ func BenchmarkPodList(b *testing.B) {
m
:=
framework
.
NewMasterComponents
(
&
framework
.
Config
{
nil
,
true
,
false
,
250.0
,
500
})
m
:=
framework
.
NewMasterComponents
(
&
framework
.
Config
{
nil
,
true
,
false
,
250.0
,
500
})
defer
m
.
Stop
(
true
,
true
)
defer
m
.
Stop
(
true
,
true
)
ns
:=
framework
.
CreateTestingNamespace
(
"benchmark-pod-list"
,
s
,
t
)
defer
framework
.
DeleteTestingNamespace
(
ns
,
s
,
t
)
numPods
,
numTasks
,
iter
:=
getPods
(
b
.
N
),
getTasks
(
b
.
N
),
getIterations
(
b
.
N
)
numPods
,
numTasks
,
iter
:=
getPods
(
b
.
N
),
getTasks
(
b
.
N
),
getIterations
(
b
.
N
)
podsPerNode
:=
numPods
/
numTasks
podsPerNode
:=
numPods
/
numTasks
if
podsPerNode
<
1
{
if
podsPerNode
<
1
{
...
@@ -122,7 +124,7 @@ func BenchmarkPodList(b *testing.B) {
...
@@ -122,7 +124,7 @@ func BenchmarkPodList(b *testing.B) {
glog
.
Infof
(
"Starting benchmark: b.N %d, pods %d, workers %d, podsPerNode %d"
,
glog
.
Infof
(
"Starting benchmark: b.N %d, pods %d, workers %d, podsPerNode %d"
,
b
.
N
,
numPods
,
numTasks
,
podsPerNode
)
b
.
N
,
numPods
,
numTasks
,
podsPerNode
)
startPodsOnNodes
(
numPods
,
numTasks
,
m
.
RestClient
)
startPodsOnNodes
(
n
s
.
Name
,
n
umPods
,
numTasks
,
m
.
RestClient
)
// Stop the rc manager so it doesn't steal resources
// Stop the rc manager so it doesn't steal resources
m
.
Stop
(
false
,
true
)
m
.
Stop
(
false
,
true
)
...
@@ -134,7 +136,7 @@ func BenchmarkPodList(b *testing.B) {
...
@@ -134,7 +136,7 @@ func BenchmarkPodList(b *testing.B) {
defer
func
()
{
defer
func
()
{
glog
.
V
(
3
)
.
Infof
(
"Worker %d: Node %v listing pods took %v"
,
id
,
host
,
time
.
Since
(
now
))
glog
.
V
(
3
)
.
Infof
(
"Worker %d: Node %v listing pods took %v"
,
id
,
host
,
time
.
Since
(
now
))
}()
}()
if
pods
,
err
:=
m
.
RestClient
.
Pods
(
framework
.
TestNS
)
.
List
(
if
pods
,
err
:=
m
.
RestClient
.
Pods
(
ns
.
Name
)
.
List
(
labels
.
Everything
(),
labels
.
Everything
(),
fields
.
OneTermEqualSelector
(
client
.
PodHost
,
host
));
err
!=
nil
{
fields
.
OneTermEqualSelector
(
client
.
PodHost
,
host
));
err
!=
nil
{
return
err
return
err
...
@@ -153,13 +155,16 @@ func BenchmarkPodListEtcd(b *testing.B) {
...
@@ -153,13 +155,16 @@ func BenchmarkPodListEtcd(b *testing.B) {
m
:=
framework
.
NewMasterComponents
(
&
framework
.
Config
{
nil
,
true
,
false
,
250.0
,
500
})
m
:=
framework
.
NewMasterComponents
(
&
framework
.
Config
{
nil
,
true
,
false
,
250.0
,
500
})
defer
m
.
Stop
(
true
,
true
)
defer
m
.
Stop
(
true
,
true
)
ns
:=
framework
.
CreateTestingNamespace
(
"benchmark-pod-list-etcd"
,
s
,
t
)
defer
framework
.
DeleteTestingNamespace
(
ns
,
s
,
t
)
numPods
,
numTasks
,
iter
:=
getPods
(
b
.
N
),
getTasks
(
b
.
N
),
getIterations
(
b
.
N
)
numPods
,
numTasks
,
iter
:=
getPods
(
b
.
N
),
getTasks
(
b
.
N
),
getIterations
(
b
.
N
)
podsPerNode
:=
numPods
/
numTasks
podsPerNode
:=
numPods
/
numTasks
if
podsPerNode
<
1
{
if
podsPerNode
<
1
{
podsPerNode
=
1
podsPerNode
=
1
}
}
startPodsOnNodes
(
numPods
,
numTasks
,
m
.
RestClient
)
startPodsOnNodes
(
n
s
.
Name
,
n
umPods
,
numTasks
,
m
.
RestClient
)
// Stop the rc manager so it doesn't steal resources
// Stop the rc manager so it doesn't steal resources
m
.
Stop
(
false
,
true
)
m
.
Stop
(
false
,
true
)
...
@@ -173,7 +178,7 @@ func BenchmarkPodListEtcd(b *testing.B) {
...
@@ -173,7 +178,7 @@ func BenchmarkPodListEtcd(b *testing.B) {
defer
func
()
{
defer
func
()
{
glog
.
V
(
3
)
.
Infof
(
"Worker %d: listing pods took %v"
,
id
,
time
.
Since
(
now
))
glog
.
V
(
3
)
.
Infof
(
"Worker %d: listing pods took %v"
,
id
,
time
.
Since
(
now
))
}()
}()
pods
,
err
:=
m
.
RestClient
.
Pods
(
framework
.
TestNS
)
.
List
(
labels
.
Everything
(),
fields
.
Everything
())
pods
,
err
:=
m
.
RestClient
.
Pods
(
ns
.
Name
)
.
List
(
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
...
test/integration/quota_test.go
View file @
122f97d2
...
@@ -54,9 +54,6 @@ func init() {
...
@@ -54,9 +54,6 @@ func init() {
// quota_test.go:100: Took 4.196205966s to scale up without quota
// quota_test.go:100: Took 4.196205966s to scale up without quota
// quota_test.go:115: Took 12.021640372s to scale up with quota
// quota_test.go:115: Took 12.021640372s to scale up with quota
func
TestQuota
(
t
*
testing
.
T
)
{
func
TestQuota
(
t
*
testing
.
T
)
{
// TODO: Limit the test to a single non-default namespace and clean this up at the end.
framework
.
DeleteAllEtcdKeys
()
initializationCh
:=
make
(
chan
struct
{})
initializationCh
:=
make
(
chan
struct
{})
// Set up a master
// Set up a master
var
m
*
master
.
Master
var
m
*
master
.
Master
...
@@ -81,6 +78,11 @@ func TestQuota(t *testing.T) {
...
@@ -81,6 +78,11 @@ func TestQuota(t *testing.T) {
}
}
close
(
initializationCh
)
close
(
initializationCh
)
ns
:=
framework
.
CreateTestingNamespace
(
"quotaed"
,
s
,
t
)
defer
framework
.
DeleteTestingNamespace
(
ns
,
s
,
t
)
ns2
:=
framework
.
CreateTestingNamespace
(
"non-quotaed"
,
s
,
t
)
defer
framework
.
DeleteTestingNamespace
(
ns2
,
s
,
t
)
controllerCh
:=
make
(
chan
struct
{})
controllerCh
:=
make
(
chan
struct
{})
defer
close
(
controllerCh
)
defer
close
(
controllerCh
)
...
@@ -102,12 +104,15 @@ func TestQuota(t *testing.T) {
...
@@ -102,12 +104,15 @@ func TestQuota(t *testing.T) {
go
resourcequotacontroller
.
NewResourceQuotaController
(
resourceQuotaControllerOptions
)
.
Run
(
2
,
controllerCh
)
go
resourcequotacontroller
.
NewResourceQuotaController
(
resourceQuotaControllerOptions
)
.
Run
(
2
,
controllerCh
)
startTime
:=
time
.
Now
()
startTime
:=
time
.
Now
()
scale
(
t
,
api
.
NamespaceDefault
,
clientset
)
scale
(
t
,
ns2
.
Name
,
clientset
)
endTime
:=
time
.
Now
()
endTime
:=
time
.
Now
()
t
.
Logf
(
"Took %v to scale up without quota"
,
endTime
.
Sub
(
startTime
))
t
.
Logf
(
"Took %v to scale up without quota"
,
endTime
.
Sub
(
startTime
))
quota
:=
&
api
.
ResourceQuota
{
quota
:=
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"quota"
},
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"quota"
,
Namespace
:
ns
.
Name
,
},
Spec
:
api
.
ResourceQuotaSpec
{
Spec
:
api
.
ResourceQuotaSpec
{
Hard
:
api
.
ResourceList
{
Hard
:
api
.
ResourceList
{
api
.
ResourcePods
:
resource
.
MustParse
(
"1000"
),
api
.
ResourcePods
:
resource
.
MustParse
(
"1000"
),
...
@@ -128,7 +133,7 @@ func waitForQuota(t *testing.T, quota *api.ResourceQuota, clientset *clientset.C
...
@@ -128,7 +133,7 @@ func waitForQuota(t *testing.T, quota *api.ResourceQuota, clientset *clientset.C
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
}
if
_
,
err
:=
clientset
.
Core
()
.
ResourceQuotas
(
"quotaed"
)
.
Create
(
quota
);
err
!=
nil
{
if
_
,
err
:=
clientset
.
Core
()
.
ResourceQuotas
(
quota
.
Namespace
)
.
Create
(
quota
);
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
}
...
...
test/integration/rbac_test.go
View file @
122f97d2
...
@@ -26,14 +26,12 @@ import (
...
@@ -26,14 +26,12 @@ import (
"io"
"io"
"io/ioutil"
"io/ioutil"
"net/http"
"net/http"
"net/http/httptest"
"net/http/httputil"
"net/http/httputil"
"strings"
"strings"
"testing"
"testing"
"github.com/golang/glog"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/api/v1"
...
@@ -229,6 +227,15 @@ var (
...
@@ -229,6 +227,15 @@ var (
}
}
}
}
`
`
podNamespace
=
`
{
"apiVersion": "`
+
testapi
.
Default
.
GroupVersion
()
.
String
()
+
`",
"kind": "Namespace",
"metadata": {
"name": "pod-namespace"%s
}
}
`
jobNamespace
=
`
jobNamespace
=
`
{
{
"apiVersion": "`
+
testapi
.
Default
.
GroupVersion
()
.
String
()
+
`",
"apiVersion": "`
+
testapi
.
Default
.
GroupVersion
()
.
String
()
+
`",
...
@@ -238,6 +245,15 @@ var (
...
@@ -238,6 +245,15 @@ var (
}
}
}
}
`
`
forbiddenNamespace
=
`
{
"apiVersion": "`
+
testapi
.
Default
.
GroupVersion
()
.
String
()
+
`",
"kind": "Namespace",
"metadata": {
"name": "forbidden-namespace"%s
}
}
`
)
)
// Declare some PolicyRules beforehand.
// Declare some PolicyRules beforehand.
...
@@ -292,16 +308,19 @@ func TestRBAC(t *testing.T) {
...
@@ -292,16 +308,19 @@ func TestRBAC(t *testing.T) {
},
},
},
},
requests
:
[]
request
{
requests
:
[]
request
{
// Create the namespace used later in the test
{
superUser
,
"POST"
,
""
,
"namespaces"
,
""
,
""
,
podNamespace
,
http
.
StatusCreated
},
{
superUser
,
"GET"
,
""
,
"pods"
,
""
,
""
,
""
,
http
.
StatusOK
},
{
superUser
,
"GET"
,
""
,
"pods"
,
""
,
""
,
""
,
http
.
StatusOK
},
{
superUser
,
"GET"
,
""
,
"pods"
,
api
.
NamespaceDefault
,
"a"
,
""
,
http
.
StatusNotFound
},
{
superUser
,
"GET"
,
""
,
"pods"
,
"pod-namespace"
,
"a"
,
""
,
http
.
StatusNotFound
},
{
superUser
,
"POST"
,
""
,
"pods"
,
api
.
NamespaceDefault
,
""
,
aPod
,
http
.
StatusCreated
},
{
superUser
,
"POST"
,
""
,
"pods"
,
"pod-namespace"
,
""
,
aPod
,
http
.
StatusCreated
},
{
superUser
,
"GET"
,
""
,
"pods"
,
api
.
NamespaceDefault
,
"a"
,
""
,
http
.
StatusOK
},
{
superUser
,
"GET"
,
""
,
"pods"
,
"pod-namespace"
,
"a"
,
""
,
http
.
StatusOK
},
{
"bob"
,
"GET"
,
""
,
"pods"
,
""
,
""
,
""
,
http
.
StatusForbidden
},
{
"bob"
,
"GET"
,
""
,
"pods"
,
""
,
""
,
""
,
http
.
StatusForbidden
},
{
"bob"
,
"GET"
,
""
,
"pods"
,
api
.
NamespaceDefault
,
"a"
,
""
,
http
.
StatusForbidden
},
{
"bob"
,
"GET"
,
""
,
"pods"
,
"pod-namespace"
,
"a"
,
""
,
http
.
StatusForbidden
},
{
"pod-reader"
,
"GET"
,
""
,
"pods"
,
""
,
""
,
""
,
http
.
StatusOK
},
{
"pod-reader"
,
"GET"
,
""
,
"pods"
,
""
,
""
,
""
,
http
.
StatusOK
},
{
"pod-reader"
,
"POST"
,
""
,
"pods"
,
api
.
NamespaceDefault
,
""
,
aPod
,
http
.
StatusForbidden
},
{
"pod-reader"
,
"POST"
,
""
,
"pods"
,
"pod-namespace"
,
""
,
aPod
,
http
.
StatusForbidden
},
},
},
},
},
{
{
...
@@ -330,21 +349,22 @@ func TestRBAC(t *testing.T) {
...
@@ -330,21 +349,22 @@ func TestRBAC(t *testing.T) {
requests
:
[]
request
{
requests
:
[]
request
{
// Create the namespace used later in the test
// Create the namespace used later in the test
{
superUser
,
"POST"
,
""
,
"namespaces"
,
""
,
""
,
jobNamespace
,
http
.
StatusCreated
},
{
superUser
,
"POST"
,
""
,
"namespaces"
,
""
,
""
,
jobNamespace
,
http
.
StatusCreated
},
{
superUser
,
"POST"
,
""
,
"namespaces"
,
""
,
""
,
forbiddenNamespace
,
http
.
StatusCreated
},
{
"user-with-no-permissions"
,
"POST"
,
"batch"
,
"jobs"
,
"job-namespace"
,
""
,
aJob
,
http
.
StatusForbidden
},
{
"user-with-no-permissions"
,
"POST"
,
"batch"
,
"jobs"
,
"job-namespace"
,
""
,
aJob
,
http
.
StatusForbidden
},
{
"user-with-no-permissions"
,
"GET"
,
"batch"
,
"jobs"
,
"job-namespace"
,
"pi"
,
""
,
http
.
StatusForbidden
},
{
"user-with-no-permissions"
,
"GET"
,
"batch"
,
"jobs"
,
"job-namespace"
,
"pi"
,
""
,
http
.
StatusForbidden
},
// job-writer-namespace cannot write to the "
default" namespace
// job-writer-namespace cannot write to the "
forbidden-namespace"
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"
default
"
,
""
,
""
,
http
.
StatusForbidden
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
""
,
""
,
http
.
StatusForbidden
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"
default
"
,
"pi"
,
""
,
http
.
StatusForbidden
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
"pi"
,
""
,
http
.
StatusForbidden
},
{
"job-writer-namespace"
,
"POST"
,
"batch"
,
"jobs"
,
"
default
"
,
""
,
aJob
,
http
.
StatusForbidden
},
{
"job-writer-namespace"
,
"POST"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
""
,
aJob
,
http
.
StatusForbidden
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"
default
"
,
"pi"
,
""
,
http
.
StatusForbidden
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
"pi"
,
""
,
http
.
StatusForbidden
},
// job-writer can write to any namespace
// job-writer can write to any namespace
{
"job-writer"
,
"GET"
,
"batch"
,
"jobs"
,
"
default
"
,
""
,
""
,
http
.
StatusOK
},
{
"job-writer"
,
"GET"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
""
,
""
,
http
.
StatusOK
},
{
"job-writer"
,
"GET"
,
"batch"
,
"jobs"
,
"
default
"
,
"pi"
,
""
,
http
.
StatusNotFound
},
{
"job-writer"
,
"GET"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
"pi"
,
""
,
http
.
StatusNotFound
},
{
"job-writer"
,
"POST"
,
"batch"
,
"jobs"
,
"
default
"
,
""
,
aJob
,
http
.
StatusCreated
},
{
"job-writer"
,
"POST"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
""
,
aJob
,
http
.
StatusCreated
},
{
"job-writer"
,
"GET"
,
"batch"
,
"jobs"
,
"
default
"
,
"pi"
,
""
,
http
.
StatusOK
},
{
"job-writer"
,
"GET"
,
"batch"
,
"jobs"
,
"
forbidden-namespace
"
,
"pi"
,
""
,
http
.
StatusOK
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"job-namespace"
,
""
,
""
,
http
.
StatusOK
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"job-namespace"
,
""
,
""
,
http
.
StatusOK
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"job-namespace"
,
"pi"
,
""
,
http
.
StatusNotFound
},
{
"job-writer-namespace"
,
"GET"
,
"batch"
,
"jobs"
,
"job-namespace"
,
"pi"
,
""
,
http
.
StatusNotFound
},
...
@@ -355,24 +375,13 @@ func TestRBAC(t *testing.T) {
...
@@ -355,24 +375,13 @@ func TestRBAC(t *testing.T) {
}
}
for
i
,
tc
:=
range
tests
{
for
i
,
tc
:=
range
tests
{
// TODO: Limit the test to a single non-default namespace and clean this up at the end.
framework
.
DeleteAllEtcdKeys
()
var
m
*
master
.
Master
s
:=
httptest
.
NewServer
(
http
.
HandlerFunc
(
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
m
.
Handler
.
ServeHTTP
(
w
,
r
)
}))
defer
s
.
Close
()
// Create an API Server.
// Create an API Server.
masterConfig
:=
framework
.
NewIntegrationTestMasterConfig
()
masterConfig
:=
framework
.
NewIntegrationTestMasterConfig
()
masterConfig
.
Authorizer
=
newRBACAuthorizer
(
t
,
superUser
,
masterConfig
)
masterConfig
.
Authorizer
=
newRBACAuthorizer
(
t
,
superUser
,
masterConfig
)
masterConfig
.
Authenticator
=
newFakeAuthenticator
()
masterConfig
.
Authenticator
=
newFakeAuthenticator
()
masterConfig
.
AuthorizerRBACSuperUser
=
superUser
masterConfig
.
AuthorizerRBACSuperUser
=
superUser
m
,
err
:=
master
.
New
(
masterConfig
)
_
,
s
:=
framework
.
RunAMaster
(
masterConfig
)
if
err
!=
nil
{
defer
s
.
Close
()
t
.
Fatalf
(
"case %d: error bringing up master: %v"
,
i
,
err
)
}
// Bootstrap the API Server with the test case's initial roles.
// Bootstrap the API Server with the test case's initial roles.
if
err
:=
tc
.
bootstrapRoles
.
bootstrap
(
clientForUser
(
superUser
),
s
.
URL
);
err
!=
nil
{
if
err
:=
tc
.
bootstrapRoles
.
bootstrap
(
clientForUser
(
superUser
),
s
.
URL
);
err
!=
nil
{
...
...
test/integration/service_account_test.go
View file @
122f97d2
...
@@ -336,8 +336,6 @@ func TestServiceAccountTokenAuthentication(t *testing.T) {
...
@@ -336,8 +336,6 @@ func TestServiceAccountTokenAuthentication(t *testing.T) {
// startServiceAccountTestServer returns a started server
// startServiceAccountTestServer returns a started server
// It is the responsibility of the caller to ensure the returned stopFunc is called
// It is the responsibility of the caller to ensure the returned stopFunc is called
func
startServiceAccountTestServer
(
t
*
testing
.
T
)
(
*
clientset
.
Clientset
,
restclient
.
Config
,
func
())
{
func
startServiceAccountTestServer
(
t
*
testing
.
T
)
(
*
clientset
.
Clientset
,
restclient
.
Config
,
func
())
{
framework
.
DeleteAllEtcdKeys
()
// Listener
// Listener
var
m
*
master
.
Master
var
m
*
master
.
Master
apiServer
:=
httptest
.
NewServer
(
http
.
HandlerFunc
(
func
(
w
http
.
ResponseWriter
,
req
*
http
.
Request
)
{
apiServer
:=
httptest
.
NewServer
(
http
.
HandlerFunc
(
func
(
w
http
.
ResponseWriter
,
req
*
http
.
Request
)
{
...
...
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