blob: 17a4ccfee88a6d25bab137842dbd40ec5c130e1f [file] [log] [blame]
Devin Lim2edfcec2018-05-09 17:16:21 -07001#!groovy
2
3funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
4test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
5triggerFuncs = evaluate readTrusted( 'TestON/JenkinsFile/TriggerFuncs.groovy' )
6
7current_version = "master"
8previous_version = "1.13"
9before_previous_version = "1.12"
10funcs.initializeTrend( "VM" );
11triggerFuncs.init( funcs )
12wikiContents = ""
13testcases = [
14 "FUNC" : [ tests : "" , nodeName : "VM", wikiContent : "" ],
15 "HA" : [ tests : "" , nodeName : "VM", wikiContent : "" ],
16 "SCPF" : [ tests : "" , nodeName : "BM", wikiContent : "" ],
17 "SR" : [ tests : "", nodeName : "Fabric", wikiContent : "" ],
18 "USECASE" : [ tests : "" , nodeName : "BM", wikiContent : "" ]
19]
20Prefix_organizer = [
21 "FU" : "FUNC",
22 "HA" : "HA",
23 "PL" : "USECASE",
24 "SA" : "USECASE",
25 "SC" : "SCPF",
26 "SR" : "SR",
27 "US" : "USECASE",
28 "VP" : "USECASE"
29]
30
31manually_run = params.manual_run
32onos_b = current_version
33test_branch = ""
34onos_tag = params.ONOSTag
35isOldFlow = true
36
37// Set tests based on day of week
38def now = funcs.getCurrentTime()
39print now.toString()
40today = now[ Calendar.DAY_OF_WEEK ]
41
42if ( manually_run ){
43 onos_b = params.ONOSVersion
44} else {
45 if ( today == Calendar.SATURDAY ){
46 onos_b = previous_version
47 } else if( today == Calendar.SUNDAY ){
48 onos_b = before_previous_version
49 }
50}
51AllTheTests = test_lists.getAllTheTests( onos_b )
52
53day = ""
54SCPF_choices = ""
55USECASE_choices = ""
56FUNC_choices = ""
57HA_choices = ""
58SR_choices = ""
59stat_graph_generator_file = "testCategoryBuildStats.R"
60pie_graph_generator_file = "testCategoryPiePassFail.R"
61graph_saved_directory = "/var/jenkins/workspace/postjob-VM/"
62
63post_result = params.PostResult
64if( !manually_run ){
Devin Lim2edfcec2018-05-09 17:16:21 -070065 testDivider( today )
66 FUNC_choices = triggerFuncs.lastCommaRemover( FUNC_choices )
67 HA_choices = triggerFuncs.lastCommaRemover( HA_choices )
68 SCPF_choices = triggerFuncs.lastCommaRemover( SCPF_choices )
69 USECASE_choices = triggerFuncs.lastCommaRemover( USECASE_choices )
70 SR_choices = triggerFuncs.lastCommaRemover( SR_choices )
71}
72
73if ( manually_run ){
74 testcases = triggerFuncs.organize_tests( params.Tests, testcases )
75
76 isOldFlow = params.isOldFlow
77 println "Tests to be run manually : "
78}else{
79 testcases[ "SCPF" ][ "tests" ] = SCPF_choices
80 testcases[ "USECASE" ][ "tests" ] = USECASE_choices
81 testcases[ "FUNC" ][ "tests" ] = FUNC_choices
82 testcases[ "HA" ][ "tests" ] = HA_choices
83 testcases[ "SR" ][ "tests" ] = SR_choices
84 println "Defaulting to " + day + " tests:"
85}
86
87triggerFuncs.print_tests( testcases )
88
89def runTest = [
90 "VM" : [:],
91 "BM" : [:]
92]
93for( String test in testcases.keySet() ){
94 println test
95 if ( testcases[ test ][ "tests" ] != "" ){
96 runTest[ testcases[ test ][ "nodeName" ] ][ test ] = triggerFuncs.trigger_pipeline( onos_b, testcases[ test ][ "tests" ], testcases[ test ][ "nodeName" ], test, manually_run, onos_tag )
97 }
98}
99def finalList = [:]
100finalList[ "VM" ] = triggerFuncs.runTestSeq( runTest[ "VM" ] )
101finalList[ "BM" ] = triggerFuncs.runTestSeq( runTest[ "BM" ] )
102parallel finalList
103//finalList[ "BM" ].call()
104
105if ( !manually_run ){
106 funcs.generateStatGraph( "TestStation-VMs",
107 funcs.branchWithPrefix( onos_b ),
108 AllTheTests,
109 stat_graph_generator_file,
110 pie_graph_generator_file,
111 graph_saved_directory )
112}
113
114def testDivider( today ){
115 switch ( today ) {
116 case Calendar.MONDAY:
117 initHtmlForWiki()
118 monday( true )
119 tuesday( true, false )
120 wednesday( true, false )
121 thursday( true, false )
122 friday( true, false )
123 saturday( false, false )
124 sunday( false, false )
125 day = "Monday"
126 closeHtmlForWiki()
127 postToWiki( wikiContents )
128 slackSend( color:'#FFD988', message:"Tests to be run this weekdays : \n" + triggerFuncs.printDaysForTest( AllTheTests ) )
129 break
130 case Calendar.TUESDAY:
131 tuesday( false, true )
132 day = "Tuesday"
133 break
134 case Calendar.WEDNESDAY:
135 wednesday( false, true )
136 day = "Wednesday"
137 break
138 case Calendar.THURSDAY:
139 thursday( false, true )
140 day = "Thursday"
141 break
142 case Calendar.FRIDAY:
143 friday( false, true )
144 day = "Friday"
145 break
146 case Calendar.SATURDAY:
147 saturday( false, true )
148 day = "Saturday"
149 break
150 case Calendar.SUNDAY:
151 sunday( false , true )
152 day = "Sunday"
153 break
154 }
155}
156def monday( getResult ){
157 addingHeader( "FUNC" )
158 FUNC_choices += adder( "FUNC", "basic", true, "M", getResult )
159 FUNC_choices += adder( "FUNC", "extra_A", true, "M", getResult )
160 closingHeader( "FUNC" )
161 addingHeader( "HA" )
162 HA_choices += adder( "HA", "basic", true, "M", getResult )
163 HA_choices += adder( "HA", "extra_A", true, "M", getResult )
164 closingHeader( "HA" )
165 addingHeader( "SCPF" )
166 SCPF_choices += adder( "SCPF", "basic", true, "M", getResult )
167 SCPF_choices += adder( "SCPF", "extra_B", true, "M", getResult )
168 closingHeader( "SCPF" )
169 addingHeader( "SR" )
170 SR_choices += adder( "SR", "basic", true, "M", false )
171 closingHeader( "SR" )
172 addingHeader( "USECASE" )
173 closingHeader( "USECASE" )
174}
175def tuesday( getDay, getResult ){
176 addingHeader( "FUNC" )
177 FUNC_choices += adder( "FUNC", "basic", getDay, "T", getResult )
178 FUNC_choices += adder( "FUNC", "extra_B", getDay, "T", getResult )
179 closingHeader( "FUNC" )
180 addingHeader( "HA" )
181 HA_choices += adder( "HA", "basic", getDay, "T", getResult )
182 HA_choices += adder( "HA", "extra_B", getDay, "T", getResult )
183 closingHeader( "HA" )
184 addingHeader( "SCPF" )
185 SCPF_choices += adder( "SCPF", "basic", getDay, "T", getResult )
186 SCPF_choices += adder( "SCPF", "extra_C", getDay, "T", getResult )
187 closingHeader( "SCPF" )
188 addingHeader( "SR" )
189 SR_choices += adder( "SR", "basic", getDay, "T", false )
190 closingHeader( "SR" )
191 addingHeader( "USECASE" )
192 USECASE_choices += adder( "USECASE", "basic", getDay, "T", getResult )
193 USECASE_choices += adder( "USECASE", "extra_A", getDay, "T", getResult )
194 closingHeader( "USECASE" )
195}
196def wednesday( getDay, getResult ){
197 addingHeader( "FUNC" )
198 FUNC_choices += adder( "FUNC", "basic", getDay, "W", getResult )
199 FUNC_choices += adder( "FUNC", "extra_A", getDay, "W", getResult )
200 closingHeader( "FUNC" )
201 addingHeader( "HA" )
202 HA_choices += adder( "HA", "basic", getDay, "W", getResult )
203 HA_choices += adder( "HA", "extra_A", getDay, "W", getResult )
204 closingHeader( "HA" )
205 addingHeader( "SCPF" )
206 SCPF_choices += adder( "SCPF", "basic", getDay, "W", getResult )
207 SCPF_choices += adder( "SCPF", "extra_A", getDay, "W", getResult )
208 closingHeader( "SCPF" )
209 addingHeader( "SR" )
210 SR_choices += adder( "SR", "basic", getDay, "W", false )
211 closingHeader( "SR" )
212 addingHeader( "USECASE" )
213 closingHeader( "USECASE" )
214}
215def thursday( getDay, getResult ){
216 addingHeader( "FUNC" )
217 FUNC_choices += adder( "FUNC", "basic", getDay, "Th", getResult )
218 FUNC_choices += adder( "FUNC", "extra_B", getDay, "Th", getResult )
219 closingHeader( "FUNC" )
220 addingHeader( "HA" )
221 HA_choices += adder( "HA", "basic", getDay, "Th", getResult )
222 HA_choices += adder( "HA", "extra_B", getDay, "Th", getResult )
223 closingHeader( "HA" )
224 addingHeader( "SCPF" )
225 SCPF_choices += adder( "SCPF", "basic", getDay, "Th", getResult )
226 SCPF_choices += adder( "SCPF", "extra_B", getDay, "Th", getResult )
227 closingHeader( "SCPF" )
228 addingHeader( "SR" )
229 SR_choices += adder( "SR", "basic", getDay, "Th", false )
230 closingHeader( "SR" )
231 addingHeader( "USECASE" )
232 closingHeader( "USECASE" )
233}
234def friday( getDay, getResult ){
235 addingHeader( "FUNC" )
236 FUNC_choices += adder( "FUNC", "basic", getDay, "F", getResult )
237 FUNC_choices += adder( "FUNC", "extra_A", getDay, "F", getResult )
238 closingHeader( "FUNC" )
239 addingHeader( "HA" )
240 HA_choices += adder( "HA", "basic", getDay, "F", getResult )
241 HA_choices += adder( "HA", "extra_A", getDay, "F", getResult )
242 closingHeader( "HA" )
243 addingHeader( "SCPF" )
244 SCPF_choices += adder( "SCPF", "basic", getDay, "F", getResult )
245 SCPF_choices += adder( "SCPF", "extra_A", getDay, "F", getResult )
246 SCPF_choices += adder( "SCPF", "extra_D", getDay, "F", getResult )
247 closingHeader( "SCPF" )
248 addingHeader( "SR" )
249 SR_choices += adder( "SR", "basic", getDay, "F", false )
250 SR_choices += adder( "SR", "extra_A", getDay, "F", false )
251 closingHeader( "SR" )
252 addingHeader( "USECASE" )
253 closingHeader( "USECASE" )
254}
255def saturday( getDay, getResult ){
256 addingHeader( "FUNC" )
257 FUNC_choices += adder( "FUNC", "basic", getDay, "Sa", getResult )
258 FUNC_choices += adder( "FUNC", "extra_A", getDay, "Sa", getResult )
259 FUNC_choices += adder( "FUNC", "extra_B", getDay, "Sa", getResult )
260 closingHeader( "FUNC" )
261 addingHeader( "HA" )
262 HA_choices += adder( "HA", "basic", getDay, "Sa", getResult )
263 HA_choices += adder( "HA", "extra_A", getDay, "Sa", getResult )
264 HA_choices += adder( "HA", "extra_B", getDay, "Sa", getResult )
265 closingHeader( "HA" )
266 addingHeader( "SCPF" )
267 SCPF_choices += adder( "SCPF", "basic", getDay, "Sa", getResult )
268 SCPF_choices += adder( "SCPF", "extra_A", getDay, "Sa", getResult )
269 SCPF_choices += adder( "SCPF", "extra_B", getDay, "Sa", getResult )
270 SCPF_choices += adder( "SCPF", "extra_C", getDay, "Sa", getResult )
271 SCPF_choices += adder( "SCPF", "extra_D", getDay, "Sa", getResult )
272 closingHeader( "SCPF" )
273 addingHeader( "SR" )
274 SR_choices += adder( "SR", "basic", getDay, "Sa", false )
275 SR_choices += adder( "SR", "extra_B", getDay, "Sa", false )
276 closingHeader( "SR" )
277 addingHeader( "USECASE" )
278 USECASE_choices += adder( "USECASE", "basic", getDay, "Sa", getResult )
279 closingHeader( "USECASE" )
280}
281def sunday( getDay, getResult ){
282 addingHeader( "FUNC" )
283 FUNC_choices += adder( "FUNC", "basic", getDay, "S", getResult )
284 FUNC_choices += adder( "FUNC", "extra_A", getDay, "S", getResult )
285 FUNC_choices += adder( "FUNC", "extra_B", getDay, "S", getResult )
286 closingHeader( "FUNC" )
287 addingHeader( "HA" )
288 HA_choices += adder( "HA", "basic", getDay, "S", getResult )
289 HA_choices += adder( "HA", "extra_A", getDay, "S", getResult )
290 HA_choices += adder( "HA", "extra_B", getDay, "S", getResult )
291 closingHeader( "HA" )
292 addingHeader( "SCPF" )
293 SCPF_choices += adder( "SCPF", "basic", getDay, "S", getResult )
294 SCPF_choices += adder( "SCPF", "extra_A", getDay, "S", getResult )
295 SCPF_choices += adder( "SCPF", "extra_B", getDay, "S", getResult )
296 SCPF_choices += adder( "SCPF", "extra_C", getDay, "S", getResult )
297 SCPF_choices += adder( "SCPF", "extra_D", getDay, "S", getResult )
298 closingHeader( "SCPF" )
299 addingHeader( "SR" )
300 SR_choices += adder( "SR", "basic", getDay, "S", false )
301 closingHeader( "SR" )
302 addingHeader( "USECASE" )
303 USECASE_choices += adder( "USECASE", "basic", getDay, "S", getResult )
304 closingHeader( "USECASE" )
305}
306def adder( testCat, set, dayAdding, day, getResult ){
307 result = ""
308 for( String test in AllTheTests[ testCat ].keySet() ){
309 if( AllTheTests[ testCat ][ test ][ set ] ){
310 if( getResult )
311 result += test + ","
312 if( dayAdding )
313 dayAdder( testCat, test, day )
314 makeHtmlColList( testCat, test )
315 }
316 }
317 return result
318}
319def initHtmlForWiki(){
320 wikiContents = '''
321 <table class="wrapped confluenceTable">
322 <colgroup>
323 <col />
324 <col />
325 <col />
326 <col />
327 <col />
328 <col />
329 </colgroup>
330 <tbody>
331 <tr>
332 <th colspan="1" class="confluenceTh">
333 <br />
334 </th>
335 <th class="confluenceTh"><p>Monday</p></th>
336 <th class="confluenceTh"><p>Tuesday</p></th>
337 <th class="confluenceTh"><p>Wednesday</p></th>
338 <th class="confluenceTh"><p>Thursday</p></th>
339 <th class="confluenceTh"><p>Friday</p></th>
340 <th class="confluenceTh"><p>Saturday</p></th>
341 <th class="confluenceTh"><p>Sunday</p></th>
342 </tr>'''
343 for( String test in testcases.keySet() ){
344 testcases[ test ][ 'wikiContent' ] = '''
345 <tr>
346 <th colspan="1" class="confluenceTh">''' + test + '''</th>'''
347 }
348}
349def addingHeader( testCategory ){
350 testcases[ testCategory ][ 'wikiContent' ] += '''
351 <td class="confluenceTd">
352 <ul>'''
353}
354def makeHtmlColList( testCategory, testName ){
355 testcases[ testCategory ][ 'wikiContent' ] += '''
356 <li>'''+ testName +'''</li>'''
357
358}
359def closingHeader( testCategory ){
360 testcases[ testCategory ][ 'wikiContent' ] += '''
361 </ul>
362 </td>'''
363}
364def closeHtmlForWiki(){
365 for( String test in testcases.keySet() ){
366 wikiContents += testcases[ test ][ 'wikiContent' ]
367 wikiContents += '''
368 </tr>'''
369 }
370 wikiContents += '''
371 </tbody>
372 </table>
373 <p><strong>Everyday</strong>, all SegmentRouting tests are built and run on every supported branch.</p>
374 <p>On <strong>Weekdays</strong>, all the other tests are built and run on the master branch.</p>
375 <p>On <strong>Saturdays</strong>, all the other tests are built and run on the '''+ funcs.branchWithPrefix( previous_version ) +''' branch.</p>
376 <p>On <strong>Sundays</strong>, all the other tests are built and run on the '''+ funcs.branchWithPrefix( before_previous_version ) +''' branch.</p>'''
377}
378def postToWiki( contents ){
379 node( testMachine ){
380 workspace = "/var/jenkins/workspace/all-pipeline-trigger/"
381 filename = "jenkinsSchedule.txt"
382 writeFile file: workspace + filename, text: contents
383 funcs.publishToConfluence( "false", "true",
384 "Automated Test Schedule",
385 workspace + filename )
386 }
387}
388def dayAdder( testCat, testName, dayOfWeek ){
389 AllTheTests[ testCat ][ testName ][ "day" ] += dayOfWeek + ","
390}