[ONOS-8001]: Reviving automated test schedule functionality on wiki.
Change-Id: I49ce721cf20476d5bd02eb975be100fe4326021c
diff --git a/TestON/JenkinsFile/generateWikiTestList.groovy b/TestON/JenkinsFile/generateWikiTestList.groovy
new file mode 100644
index 0000000..b134d75
--- /dev/null
+++ b/TestON/JenkinsFile/generateWikiTestList.groovy
@@ -0,0 +1,180 @@
+#!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>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 ) ) ]
+
+}