Merge pull request #35650 from rmmh/verify-test-owners

Automatic merge from submit-queue

Add hack/verify-test-owners.sh to ensure tests always have owners.

This ensures that new tests or changed tests are assigned appropriate owners.
This commit is contained in:
Kubernetes Submit Queue 2016-10-27 16:46:50 -07:00 committed by GitHub
commit bbe5fe327f
3 changed files with 46 additions and 12 deletions

View File

@ -118,7 +118,7 @@ def get_maintainers():
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--history', action='store_true', help='Generate test list from result history.') parser.add_argument('--history', action='store_true', help='Generate test list from result history.')
parser.add_argument('--user', help='User to assign new tests to (RANDOM for random assignment).') parser.add_argument('--user', help='User to assign new tests to (default: random).')
parser.add_argument('--check', action='store_true', help='Exit with a nonzero status if the test list has changed.') parser.add_argument('--check', action='store_true', help='Exit with a nonzero status if the test list has changed.')
options = parser.parse_args() options = parser.parse_args()
@ -135,7 +135,9 @@ def main():
maintainers = get_maintainers() maintainers = get_maintainers()
print '# OUTDATED TESTS (%d):' % len(outdated_tests) print '# OUTDATED TESTS (%d):' % len(outdated_tests)
print '\n'.join(outdated_tests) print '\n'.join('%s -- %s%s' %
(t, owners[t][0], ['', ' (random)'][owners[t][1]])
for t in outdated_tests)
print '# NEW TESTS (%d):' % len(new_tests) print '# NEW TESTS (%d):' % len(new_tests)
print '\n'.join(new_tests) print '\n'.join(new_tests)
@ -161,14 +163,14 @@ def main():
owner for name, (owner, random) in owners.iteritems() owner for name, (owner, random) in owners.iteritems()
if owner in maintainers) if owner in maintainers)
for test_name in set(test_names) - set(owners): for test_name in set(test_names) - set(owners):
if options.user == 'RANDOM': random_assignment = True
new_owner, _count = random.choice(owner_counts.most_common()[-4:]) if options.user:
elif options.user:
new_owner = options.user new_owner = options.user
random_assignment = False
else: else:
raise AssertionError('--user must be specified for new tests') new_owner, _count = random.choice(owner_counts.most_common()[-4:])
owner_counts[new_owner] += 1 owner_counts[new_owner] += 1
owners[test_name] = (new_owner, True) owners[test_name] = (new_owner, random_assignment)
print '# Tests per maintainer:' print '# Tests per maintainer:'
for owner, count in owner_counts.most_common(): for owner, count in owner_counts.most_common():

27
hack/verify-test-owners.sh Executable file
View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Copyright 2016 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -o errexit
set -o nounset
set -o pipefail
export KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
source "${KUBE_ROOT}/hack/lib/init.sh"
cd "${KUBE_ROOT}"
if ! hack/update_owners.py --check; then
echo 'Run ./hack/update_owners.py to fix it'
exit 1
fi

View File

@ -277,10 +277,13 @@ NodeProblemDetector KernelMonitor should generate node condition and events for
Nodes Network when a node becomes unreachable *,alex-mohr,1 Nodes Network when a node becomes unreachable *,alex-mohr,1
Nodes Resize should be able to add nodes,piosz,1 Nodes Resize should be able to add nodes,piosz,1
Nodes Resize should be able to delete nodes,zmerlynn,1 Nodes Resize should be able to delete nodes,zmerlynn,1
PersistentVolumes create a PV and a pre-bound PVC: test write access,caesarxuchao,1 PersistentVolumes with Single PV - PVC pairs create a PV and a pre-bound PVC: test write access,alex-mohr,1
PersistentVolumes create a PVC and a pre-bound PV: test write access,lavalamp,1 PersistentVolumes with Single PV - PVC pairs create a PVC and a pre-bound PV: test write access,ncdc,1
PersistentVolumes create a PVC and non-pre-bound PV: test write access,mwielgus,1 PersistentVolumes with Single PV - PVC pairs create a PVC and non-pre-bound PV: test write access,dchen1107,1
PersistentVolumes should create a non-pre-bound PV and PVC: test write access,andyzheng0831,1 PersistentVolumes with Single PV - PVC pairs should create a non-pre-bound PV and PVC: test write access,dchen1107,1
PersistentVolumes with multiple PVs and PVCs all in same ns should create 2 PVs and 4 PVCs: test write access,lavalamp,1
PersistentVolumes with multiple PVs and PVCs all in same ns should create 3 PVs and 3 PVCs: test write access,ghodss,1
PersistentVolumes with multiple PVs and PVCs all in same ns should create 4 PVs and 2 PVCs: test write access,andyzheng0831,1
Pet Store should scale to persist a nominal number ( * ) of transactions in * seconds,xiang90,1 Pet Store should scale to persist a nominal number ( * ) of transactions in * seconds,xiang90,1
Pet set recreate should recreate evicted petset,hurf,1 Pet set recreate should recreate evicted petset,hurf,1
PetSet Basic PetSet functionality should handle healthy pet restarts during scale,kevin-wangzefeng,1 PetSet Basic PetSet functionality should handle healthy pet restarts during scale,kevin-wangzefeng,1
@ -444,6 +447,7 @@ k8s.io/kubernetes/cmd/kube-apiserver/app,nikhiljindal,0
k8s.io/kubernetes/cmd/kube-apiserver/app/options,nikhiljindal,0 k8s.io/kubernetes/cmd/kube-apiserver/app/options,nikhiljindal,0
k8s.io/kubernetes/cmd/kube-discovery/app,vulpecula,1 k8s.io/kubernetes/cmd/kube-discovery/app,vulpecula,1
k8s.io/kubernetes/cmd/kube-proxy/app,luxas,1 k8s.io/kubernetes/cmd/kube-proxy/app,luxas,1
k8s.io/kubernetes/cmd/kubeadm/app/cmd,vishh,1
k8s.io/kubernetes/cmd/kubeadm/app/images,davidopp,1 k8s.io/kubernetes/cmd/kubeadm/app/images,davidopp,1
k8s.io/kubernetes/cmd/kubeadm/app/util,krousey,1 k8s.io/kubernetes/cmd/kubeadm/app/util,krousey,1
k8s.io/kubernetes/cmd/kubelet/app,hurf,1 k8s.io/kubernetes/cmd/kubelet/app,hurf,1
@ -530,7 +534,6 @@ k8s.io/kubernetes/pkg/client/unversioned/clientcmd,yifan-gu,1
k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api,thockin,1 k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api,thockin,1
k8s.io/kubernetes/pkg/client/unversioned/portforward,lavalamp,1 k8s.io/kubernetes/pkg/client/unversioned/portforward,lavalamp,1
k8s.io/kubernetes/pkg/client/unversioned/remotecommand,andyzheng0831,1 k8s.io/kubernetes/pkg/client/unversioned/remotecommand,andyzheng0831,1
k8s.io/kubernetes/pkg/client/unversioned/testclient,brendandburns,1
k8s.io/kubernetes/pkg/cloudprovider/providers/aws,eparis,1 k8s.io/kubernetes/pkg/cloudprovider/providers/aws,eparis,1
k8s.io/kubernetes/pkg/cloudprovider/providers/azure,saad-ali,1 k8s.io/kubernetes/pkg/cloudprovider/providers/azure,saad-ali,1
k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack,roberthbailey,1 k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack,roberthbailey,1
@ -617,7 +620,9 @@ k8s.io/kubernetes/pkg/kubelet/qos,vishh,0
k8s.io/kubernetes/pkg/kubelet/rkt,apelisse,1 k8s.io/kubernetes/pkg/kubelet/rkt,apelisse,1
k8s.io/kubernetes/pkg/kubelet/rktshim,mml,1 k8s.io/kubernetes/pkg/kubelet/rktshim,mml,1
k8s.io/kubernetes/pkg/kubelet/server,timstclair,0 k8s.io/kubernetes/pkg/kubelet/server,timstclair,0
k8s.io/kubernetes/pkg/kubelet/server/portforward,timstclair,0
k8s.io/kubernetes/pkg/kubelet/server/stats,timstclair,0 k8s.io/kubernetes/pkg/kubelet/server/stats,timstclair,0
k8s.io/kubernetes/pkg/kubelet/server/streaming,timstclair,0
k8s.io/kubernetes/pkg/kubelet/status,mwielgus,1 k8s.io/kubernetes/pkg/kubelet/status,mwielgus,1
k8s.io/kubernetes/pkg/kubelet/sysctl,piosz,1 k8s.io/kubernetes/pkg/kubelet/sysctl,piosz,1
k8s.io/kubernetes/pkg/kubelet/types,jlowdermilk,1 k8s.io/kubernetes/pkg/kubelet/types,jlowdermilk,1

1 name owner auto-assigned
277 Nodes Network when a node becomes unreachable * alex-mohr 1
278 Nodes Resize should be able to add nodes piosz 1
279 Nodes Resize should be able to delete nodes zmerlynn 1
280 PersistentVolumes create a PV and a pre-bound PVC: test write access PersistentVolumes with Single PV - PVC pairs create a PV and a pre-bound PVC: test write access caesarxuchao alex-mohr 1
281 PersistentVolumes create a PVC and a pre-bound PV: test write access PersistentVolumes with Single PV - PVC pairs create a PVC and a pre-bound PV: test write access lavalamp ncdc 1
282 PersistentVolumes create a PVC and non-pre-bound PV: test write access PersistentVolumes with Single PV - PVC pairs create a PVC and non-pre-bound PV: test write access mwielgus dchen1107 1
283 PersistentVolumes should create a non-pre-bound PV and PVC: test write access PersistentVolumes with Single PV - PVC pairs should create a non-pre-bound PV and PVC: test write access andyzheng0831 dchen1107 1
284 PersistentVolumes with multiple PVs and PVCs all in same ns should create 2 PVs and 4 PVCs: test write access lavalamp 1
285 PersistentVolumes with multiple PVs and PVCs all in same ns should create 3 PVs and 3 PVCs: test write access ghodss 1
286 PersistentVolumes with multiple PVs and PVCs all in same ns should create 4 PVs and 2 PVCs: test write access andyzheng0831 1
287 Pet Store should scale to persist a nominal number ( * ) of transactions in * seconds xiang90 1
288 Pet set recreate should recreate evicted petset hurf 1
289 PetSet Basic PetSet functionality should handle healthy pet restarts during scale kevin-wangzefeng 1
447 k8s.io/kubernetes/cmd/kube-apiserver/app/options nikhiljindal 0
448 k8s.io/kubernetes/cmd/kube-discovery/app vulpecula 1
449 k8s.io/kubernetes/cmd/kube-proxy/app luxas 1
450 k8s.io/kubernetes/cmd/kubeadm/app/cmd vishh 1
451 k8s.io/kubernetes/cmd/kubeadm/app/images davidopp 1
452 k8s.io/kubernetes/cmd/kubeadm/app/util krousey 1
453 k8s.io/kubernetes/cmd/kubelet/app hurf 1
534 k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api thockin 1
535 k8s.io/kubernetes/pkg/client/unversioned/portforward lavalamp 1
536 k8s.io/kubernetes/pkg/client/unversioned/remotecommand andyzheng0831 1
k8s.io/kubernetes/pkg/client/unversioned/testclient brendandburns 1
537 k8s.io/kubernetes/pkg/cloudprovider/providers/aws eparis 1
538 k8s.io/kubernetes/pkg/cloudprovider/providers/azure saad-ali 1
539 k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack roberthbailey 1
620 k8s.io/kubernetes/pkg/kubelet/rkt apelisse 1
621 k8s.io/kubernetes/pkg/kubelet/rktshim mml 1
622 k8s.io/kubernetes/pkg/kubelet/server timstclair 0
623 k8s.io/kubernetes/pkg/kubelet/server/portforward timstclair 0
624 k8s.io/kubernetes/pkg/kubelet/server/stats timstclair 0
625 k8s.io/kubernetes/pkg/kubelet/server/streaming timstclair 0
626 k8s.io/kubernetes/pkg/kubelet/status mwielgus 1
627 k8s.io/kubernetes/pkg/kubelet/sysctl piosz 1
628 k8s.io/kubernetes/pkg/kubelet/types jlowdermilk 1