github.com/munnerz/test-infra@v0.0.0-20190108210205-ce3d181dc989/prow/pod-utils/downwardapi/jobspec_test.go (about) 1 /* 2 Copyright 2017 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package downwardapi 18 19 import ( 20 "reflect" 21 "testing" 22 23 "k8s.io/test-infra/prow/kube" 24 ) 25 26 func TestEnvironmentForSpec(t *testing.T) { 27 var tests = []struct { 28 name string 29 spec JobSpec 30 expected map[string]string 31 }{ 32 { 33 name: "periodic job", 34 spec: JobSpec{ 35 Type: kube.PeriodicJob, 36 Job: "job-name", 37 BuildID: "0", 38 ProwJobID: "prowjob", 39 }, 40 expected: map[string]string{ 41 "JOB_NAME": "job-name", 42 "BUILD_ID": "0", 43 "PROW_JOB_ID": "prowjob", 44 "JOB_TYPE": "periodic", 45 "JOB_SPEC": `{"type":"periodic","job":"job-name","buildid":"0","prowjobid":"prowjob"}`, 46 }, 47 }, 48 { 49 name: "postsubmit job", 50 spec: JobSpec{ 51 Type: kube.PostsubmitJob, 52 Job: "job-name", 53 BuildID: "0", 54 ProwJobID: "prowjob", 55 Refs: &kube.Refs{ 56 Org: "org-name", 57 Repo: "repo-name", 58 BaseRef: "base-ref", 59 BaseSHA: "base-sha", 60 }, 61 }, 62 expected: map[string]string{ 63 "JOB_NAME": "job-name", 64 "BUILD_ID": "0", 65 "PROW_JOB_ID": "prowjob", 66 "JOB_TYPE": "postsubmit", 67 "JOB_SPEC": `{"type":"postsubmit","job":"job-name","buildid":"0","prowjobid":"prowjob","refs":{"org":"org-name","repo":"repo-name","base_ref":"base-ref","base_sha":"base-sha"}}`, 68 "REPO_OWNER": "org-name", 69 "REPO_NAME": "repo-name", 70 "PULL_BASE_REF": "base-ref", 71 "PULL_BASE_SHA": "base-sha", 72 "PULL_REFS": "base-ref:base-sha", 73 }, 74 }, 75 { 76 name: "batch job", 77 spec: JobSpec{ 78 Type: kube.BatchJob, 79 Job: "job-name", 80 BuildID: "0", 81 ProwJobID: "prowjob", 82 Refs: &kube.Refs{ 83 Org: "org-name", 84 Repo: "repo-name", 85 BaseRef: "base-ref", 86 BaseSHA: "base-sha", 87 Pulls: []kube.Pull{{ 88 Number: 1, 89 Author: "author-name", 90 SHA: "pull-sha", 91 }, { 92 Number: 2, 93 Author: "other-author-name", 94 SHA: "second-pull-sha", 95 }}, 96 }, 97 }, 98 expected: map[string]string{ 99 "JOB_NAME": "job-name", 100 "BUILD_ID": "0", 101 "PROW_JOB_ID": "prowjob", 102 "JOB_TYPE": "batch", 103 "JOB_SPEC": `{"type":"batch","job":"job-name","buildid":"0","prowjobid":"prowjob","refs":{"org":"org-name","repo":"repo-name","base_ref":"base-ref","base_sha":"base-sha","pulls":[{"number":1,"author":"author-name","sha":"pull-sha"},{"number":2,"author":"other-author-name","sha":"second-pull-sha"}]}}`, 104 "REPO_OWNER": "org-name", 105 "REPO_NAME": "repo-name", 106 "PULL_BASE_REF": "base-ref", 107 "PULL_BASE_SHA": "base-sha", 108 "PULL_REFS": "base-ref:base-sha,1:pull-sha,2:second-pull-sha", 109 }, 110 }, 111 { 112 name: "presubmit job", 113 spec: JobSpec{ 114 Type: kube.PresubmitJob, 115 Job: "job-name", 116 BuildID: "0", 117 ProwJobID: "prowjob", 118 Refs: &kube.Refs{ 119 Org: "org-name", 120 Repo: "repo-name", 121 BaseRef: "base-ref", 122 BaseSHA: "base-sha", 123 Pulls: []kube.Pull{{ 124 Number: 1, 125 Author: "author-name", 126 SHA: "pull-sha", 127 }}, 128 }, 129 }, 130 expected: map[string]string{ 131 "JOB_NAME": "job-name", 132 "BUILD_ID": "0", 133 "PROW_JOB_ID": "prowjob", 134 "JOB_TYPE": "presubmit", 135 "JOB_SPEC": `{"type":"presubmit","job":"job-name","buildid":"0","prowjobid":"prowjob","refs":{"org":"org-name","repo":"repo-name","base_ref":"base-ref","base_sha":"base-sha","pulls":[{"number":1,"author":"author-name","sha":"pull-sha"}]}}`, 136 "REPO_OWNER": "org-name", 137 "REPO_NAME": "repo-name", 138 "PULL_BASE_REF": "base-ref", 139 "PULL_BASE_SHA": "base-sha", 140 "PULL_REFS": "base-ref:base-sha,1:pull-sha", 141 "PULL_NUMBER": "1", 142 "PULL_PULL_SHA": "pull-sha", 143 }, 144 }, 145 { 146 name: "kubernetes agent", 147 spec: JobSpec{ 148 Type: kube.PeriodicJob, 149 Job: "job-name", 150 BuildID: "0", 151 ProwJobID: "prowjob", 152 agent: kube.KubernetesAgent, 153 }, 154 expected: map[string]string{ 155 "JOB_NAME": "job-name", 156 "BUILD_ID": "0", 157 "PROW_JOB_ID": "prowjob", 158 "BUILD_NUMBER": "0", 159 "JOB_TYPE": "periodic", 160 "JOB_SPEC": `{"type":"periodic","job":"job-name","buildid":"0","prowjobid":"prowjob"}`, 161 }, 162 }, 163 { 164 name: "jenkins agent", 165 spec: JobSpec{ 166 Type: kube.PeriodicJob, 167 Job: "job-name", 168 BuildID: "0", 169 ProwJobID: "prowjob", 170 agent: kube.JenkinsAgent, 171 }, 172 expected: map[string]string{ 173 "JOB_NAME": "job-name", 174 "BUILD_ID": "0", 175 "PROW_JOB_ID": "prowjob", 176 "JOB_TYPE": "periodic", 177 "JOB_SPEC": `{"type":"periodic","job":"job-name","buildid":"0","prowjobid":"prowjob"}`, 178 }, 179 }, 180 } 181 182 for _, test := range tests { 183 env, err := EnvForSpec(test.spec) 184 if err != nil { 185 t.Errorf("%s: unexpected error: %v", test.name, err) 186 } 187 if actual, expected := env, test.expected; !reflect.DeepEqual(actual, expected) { 188 t.Errorf("%s: got environment:\n\t%v\n\tbut expected:\n\t%v", test.name, actual, expected) 189 } 190 } 191 }