| #!groovy |
| // Copyright 2019 Open Networking Foundation (ONF) |
| // |
| // Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>, |
| // the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>, |
| // or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg> |
| // |
| // TestON is free software: you can redistribute it and/or modify |
| // it under the terms of the GNU General Public License as published by |
| // the Free Software Foundation, either version 2 of the License, or |
| // (at your option) any later version. |
| // |
| // TestON is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| // GNU General Public License for more details. |
| // |
| // You should have received a copy of the GNU General Public License |
| // along with TestON. If not, see <http://www.gnu.org/licenses/>. |
| |
| // This script generates the test list on the wiki. |
| test_list = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' ) |
| |
| wikiContents = "" |
| testHTMLtableContents = "" |
| runningNode = "TestStation-BMs" |
| supportBranch1 = null |
| supportBranch2 = null |
| |
| testCategoryContents = [:] |
| |
| main() |
| |
| def main(){ |
| test_list.init() |
| |
| supportBranch1 = test_list.convertBranchCodeToBranch( "onos-1.x" ) |
| supportBranch2 = test_list.convertBranchCodeToBranch( "onos-2.x" ) |
| |
| initHtmlForWiki() |
| initTestCategoryContents() |
| wikiContents += contentsToHTML() |
| wikiContents += endTable() |
| wikiContents += addBranchDescription() |
| |
| debugPrintHTML() |
| |
| node ( runningNode ) { |
| publishToConfluence( "Automated Test Schedule", wikiContents ) |
| } |
| } |
| |
| // Initial part of the wiki page. |
| def initHtmlForWiki(){ |
| wikiContents = ''' |
| <table class="wrapped confluenceTable"> |
| <colgroup> |
| <col /> |
| <col /> |
| <col /> |
| <col /> |
| <col /> |
| <col /> |
| </colgroup> |
| <tbody> |
| <tr> |
| <th colspan="1" class="confluenceTh"> |
| <br /> |
| </th> |
| <th class="confluenceTh"><p>Monday</p></th> |
| <th class="confluenceTh"><p>Tuesday</p></th> |
| <th class="confluenceTh"><p>Wednesday</p></th> |
| <th class="confluenceTh"><p>Thursday</p></th> |
| <th class="confluenceTh"><p>Friday</p></th> |
| <th class="confluenceTh"><p>Saturday</p></th> |
| <th class="confluenceTh"><p>Sunday</p></th> |
| </tr>''' |
| } |
| |
| def initTestCategoryContents(){ |
| allCategories = test_list.getAllTestCategories() |
| |
| for ( category in allCategories ){ |
| testsFromCategory = test_list.getTestsFromCategory( category ) |
| |
| dayOfWeekDict = [ "mon" : null, |
| "tue" : null, |
| "wed" : null, |
| "thu" : null, |
| "fri" : null, |
| "sat" : null, |
| "sun" : null ] |
| |
| for ( day in dayOfWeekDict.keySet() ){ |
| testsFromDay = test_list.getTestsFromDay( day, testsFromCategory ) |
| dayOfWeekDict[ day ] = testsFromDay |
| } |
| |
| testCategoryContents.put( category, dayOfWeekDict ) |
| } |
| } |
| |
| def contentsToHTML(){ |
| testHTMLtableContents = "" |
| for ( category in testCategoryContents.keySet() ){ |
| categoryTableCells = "" |
| categoryTableCells += ''' |
| <tr> |
| <th colspan="1" class="confluenceTh">''' + category + '''</th>''' |
| for ( day in testCategoryContents[ category ].keySet() ){ |
| categoryTableCells += ''' |
| <td class="confluenceTd"> |
| <ul>''' |
| for ( test in testCategoryContents[ category ][ day ].keySet() ){ |
| testName = test |
| categoryTableCells += ''' |
| <li>''' + test + addAsterisks( category, day, test ) + '''</li>''' |
| } |
| categoryTableCells += ''' |
| </ul> |
| </td>''' |
| } |
| categoryTableCells += ''' |
| </tr>''' |
| |
| testHTMLtableContents += categoryTableCells |
| } |
| return testHTMLtableContents |
| } |
| |
| // adds asterisks based on the support branch number (hack) |
| // Example: if support branch is onos-1.x, then adds 1 asterisks, if onos-2.x, then adds 2 asterisks |
| def addAsterisks( category, day, test ){ |
| asterisks = "" |
| tempDict = [ test : testCategoryContents[ category ][ day ][ test ] ] |
| testBranches = test_list.getBranchesFromDay( day, tempDict ) |
| asteriskCount = 0 |
| |
| for ( branch in testBranches ){ |
| if ( branch.substring( 0, 1 ) != "m" ){ |
| asteriskCount += branch.substring( 0, 1 ) as Integer |
| } |
| } |
| |
| for ( i = 0; i < asteriskCount; i++ ){ |
| asterisks += '''*''' |
| } |
| return asterisks |
| } |
| |
| def endTable(){ |
| return ''' |
| </tbody> |
| </table>''' |
| } |
| |
| def debugPrintHTML(){ |
| echo "wikiContents:\n" + wikiContents |
| } |
| |
| def addBranchDescription(){ |
| branchDescription = "" |
| |
| branchDescription += ''' |
| <p>* test runs on the <b>''' + supportBranch1 + '''</b> branch.</p> |
| <p>** test runs on the <b>''' + supportBranch2 + '''</b> branch.</p> |
| <p>*** test runs on the <b>''' + supportBranch1 + ''', ''' + supportBranch2 + ''', and master branches''' + '''</b>.</p> |
| <p>Otherwise, test runs on the <b>''' + '''master''' + '''</b> branch.</p>''' |
| |
| |
| return branchDescription |
| } |
| |
| def publishToConfluence( pageName, contents ){ |
| // publish HTML script to wiki confluence |
| |
| publishConfluence siteName: 'wiki.onosproject.org', pageName: pageName, spaceName: 'ONOS', |
| attachArchivedArtifacts: true, buildIfUnstable: true, |
| editorList: [ confluenceWritePage( confluenceText( contents ) ) ] |
| |
| } |