From fcc7c87b3d4f615f50633ab821d6dc6d31c3058c Mon Sep 17 00:00:00 2001 From: Taejin Woo Date: Tue, 26 Jun 2018 12:05:45 +0900 Subject: [PATCH] Add Daily Test Regression's job Change-Id: I773f30400f34651f74a220ad15dd85022d43a68b Signed-off-by: Taejin Woo --- debian/control | 7 + debian/jenkins-scripts-dtr.install | 1 + debian/rules | 2 +- dtr/job_dtr_status.py | 298 +++++++++++++++++++++++++++++++++++++ packaging/jenkins-scripts.spec | 17 ++- 5 files changed, 323 insertions(+), 2 deletions(-) create mode 100644 debian/jenkins-scripts-dtr.install create mode 100644 dtr/job_dtr_status.py diff --git a/debian/control b/debian/control index 9022f06..f21fb89 100644 --- a/debian/control +++ b/debian/control @@ -23,6 +23,7 @@ Depends: ${python:Depends}, jenkins-scripts-abs, jenkins-scripts-groovyinit, jenkins-scripts-pmb, + jenkins-scripts-dtr, python-mysqldb Description: Jenkins build job will call this scripts when build job is triggered by Gerrit/OBS event. @@ -91,3 +92,9 @@ Architecture: all Description: pmb scripts for Tools&Services development and test process Depends: ${python:Depends}, jenkins-scripts-common + +Package: jenkins-scripts-dtr +Architecture: all +Description: dtr scripts for the view & services for Daily Test Result +Depends: ${python:Depends}, + jenkins-scripts-common diff --git a/debian/jenkins-scripts-dtr.install b/debian/jenkins-scripts-dtr.install new file mode 100644 index 0000000..d9c5081 --- /dev/null +++ b/debian/jenkins-scripts-dtr.install @@ -0,0 +1 @@ +debian/tmp/dtr/* /var/lib/jenkins/jenkins-scripts/dtr/ diff --git a/debian/rules b/debian/rules index 7134c8a..c4794da 100755 --- a/debian/rules +++ b/debian/rules @@ -23,7 +23,7 @@ install: build # Installing package mkdir -p $(CURDIR)/debian/tmp/ install -d $(CURDIR)/debian/tmp/ - cp -r job_*.py job_*.groovy dir-purge-tool.sh logs-collector.sh common obs_requests templates scripts dep_graph vis groovy_init_scripts trbs abs pmb $(CURDIR)/debian/tmp/ + cp -r job_*.py job_*.groovy dir-purge-tool.sh logs-collector.sh common obs_requests templates scripts dep_graph vis groovy_init_scripts trbs abs pmb dtr $(CURDIR)/debian/tmp/ binary-indep: build install dh_testdir dh_testroot diff --git a/dtr/job_dtr_status.py b/dtr/job_dtr_status.py new file mode 100644 index 0000000..d5fc7fa --- /dev/null +++ b/dtr/job_dtr_status.py @@ -0,0 +1,298 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2017 Samsung Electronics. Co,. Ltd. +# +# This program 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; version 2 +# of the License. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +import os +import re +import json +import sys +import traceback +import copy +import json +import urllib3 +import requests +import pprint +import xlrd + +#import job_dtr_db_writer + +from datetime import datetime + + +#SAVE_FILE='srbd_daily_total_value.txt' + +##################### 1. DTR Version Info ##################### +def change_version_data(input_version): + p = re.compile('tizen-.*_[0-9]{8}.[0-9]') + + url = input_version + m = p.search(url) + version = m.group() + + return version + + +def dtr_ver_menu_export(sheet, srbd_data): + ncol = sheet.ncols + nrow = sheet.nrows + + total_results = {} + total_results['row'] = nrow + total_results['col'] = ncol + + String_list = [] + for row in range(0, nrow): + for col in range(0, ncol): + try: + String_list.append(sheet.cell(row, col).value) + except Exception as ex: + print('error' , ex) + + for i in range(0, len(String_list)): + total_results[String_list[i]] = [] + total_results[String_list[i]] = String_list[i] + + return total_results + + +def dtr_ver_info_export(sheet, srbd_data): + ncol = sheet.ncols + nrow = sheet.nrows + + total_results = {} + total_results['tizen_version'] = [] + total_results['url_list'] = [] + + total_results['row'] = nrow + total_results['col'] = ncol + + ver_list = [] + url_name = [] + real_url = [] + for row in range(0, nrow): + ver_list.append(sheet.cell(row, 0).value) + url_name.append(sheet.cell(row, 1).value) + real_url.append(sheet.cell(row, 2).value) + + for row in range(0, nrow): + total_results[ver_list[row]] = [] + total_results[url_name[row]] = [] + total_results[url_name[row]].append(real_url[row]) + total_results['tizen_version'].append(ver_list[row]) + total_results['url_list'].append(url_name[row]) + + for index, url_list in enumerate(total_results['url_list']): + tizen_version = change_version_data("".join(total_results[url_list])) + total_results[ver_list[index]] = tizen_version + + return total_results + +##################### 2. DTR Smoke Test result ##################### +def dtr_smoke_menu_export(sheet, srbd_data): + + ncol = sheet.ncols + nrow = sheet.nrows + + total_results = {} + total_results['menus'] = [] + + total_results['row'] = nrow + total_results['col'] = ncol + + String_list = [] + for row in range(0, nrow): + for col in range(0, ncol): + try: +# String_list.append(sheet.cell(row, col).value) + total_results['menus'].append(sheet.cell(row, col).value) + except Exception as ex: + print('error' , ex) + + for i in range(0, len(String_list)): + total_results[String_list[i]] = [] + + return total_results + + +def dtr_smoke_result_export(sheet, srbd_data): + ncol = sheet.ncols + nrow = sheet.nrows + + total_results = {} + total_results['test_cases'] = [] + total_results['comments'] = [] + total_results['smoke_result'] = [] + + total_results['row'] = nrow + total_results['col'] = ncol + + for row in range(0, nrow): + for col in range(1, ncol-1): + try: + total_results['smoke_result'].append(sheet.cell(row, col).value) + except Exception as ex: + print('error' , ex) + + test_case_list = [] + comment_list = [] + for row in range(0, nrow): + test_case_list.append(sheet.cell(row, 0).value) + comment_list.append(sheet.cell(row, ncol-1).value) + + for i in range(0, len(test_case_list)): + total_results['test_cases'].append(test_case_list[i]) + total_results['comments'].append(comment_list[i]) + + return total_results + + +##################### General export ####################### +def dtr_general_menu_export(sheet, srbd_data, arg_name): + + ncol = sheet.ncols + nrow = sheet.nrows + + total_results = {} + total_results[arg_name] = [] + + total_results['row'] = nrow + total_results['col'] = ncol + + for row in range(0, nrow): + for col in range(0, ncol): + try: + total_results[arg_name].append(sheet.cell(row, col).value) + except Exception as ex: + print('error' , ex) + + return total_results + +def dtr_general_result_export(sheet, srbd_data, arg_name): + + ncol = sheet.ncols + nrow = sheet.nrows + + total_results = {} + total_results[arg_name] = [] + + total_results['row'] = nrow + total_results['col'] = ncol + + for row in range(0, nrow): + for col in range(0, ncol): + try: + total_results[arg_name].append(sheet.cell(row, col).value) + except Exception as ex: + print('error' , ex) + + return total_results + +##################### Main ################################## +def main(): + + # temp memory + test_ver_srbd_data = {} + test_ver_menu_data = {} + + smoke_menu_data = {} + smoke_result_data = {} + + tbt_menu_data = {} + tbt_result_data = {} + + sample_menu_data = {} + sample_result_data = {} + + unresolved_menu_data = {} + unresolved_result_data = {} + + # complete memory + test_ver_menu_list = {} + test_ver_info_list = {} + + smoke_menu_list = {} + smoke_result_list = {} + + tbt_menu_list = {} + tbt_result_list = {} + + sample_menu_list = {} + sample_result_list = {} + + unresolved_menu_list = {} + unresolved_result_list = {} + + # open excel + excel_document = xlrd.open_workbook('Regression_Test_Result_v06_format.xlsx') + + # export each tab contents + test_ver_menu_sheet = excel_document.sheet_by_name('version_menu') + test_ver_info_sheet = excel_document.sheet_by_name('version_info') + + smoke_menu_sheet = excel_document.sheet_by_name('smoke_menu') + smoke_result_sheet = excel_document.sheet_by_name('smoke_data') + + tbt_menu_sheet = excel_document.sheet_by_name('tbt_menu') + tbt_result_sheet = excel_document.sheet_by_name('tbt_data') + + sample_menu_sheet = excel_document.sheet_by_name('sample_menu') + sample_result_sheet = excel_document.sheet_by_name('sample_data') + + unresolved_menu_sheet = excel_document.sheet_by_name('unresolved_menu') + unresolved_result_sheet = excel_document.sheet_by_name('unresolved_data') + + + ## 1. DTR test ver. data + test_ver_menu_list = dtr_ver_menu_export(test_ver_menu_sheet, test_ver_menu_data) + test_ver_info_list = dtr_ver_info_export(test_ver_info_sheet, test_ver_menu_data) + + ## 2. DTR Smoke data + smoke_menu_list = dtr_smoke_menu_export(smoke_menu_sheet, smoke_menu_data) + smoke_result_list = dtr_smoke_result_export(smoke_result_sheet, smoke_result_data) + + ## 3. DTR TBT data + tbt_menu_list = dtr_general_menu_export(tbt_menu_sheet, tbt_menu_data, "tbt_menus") + tbt_result_list = dtr_general_result_export(tbt_result_sheet, tbt_result_data, "tbt_results") + + ## 4. DTR sample data + sample_menu_list = dtr_general_menu_export(sample_menu_sheet, sample_menu_data, "sample_menus") + sample_result_list = dtr_general_result_export(sample_result_sheet, sample_result_data, "sample_results") + + ## 5. DTR unresolved data + unresolved_menu_list = dtr_general_menu_export(unresolved_menu_sheet, unresolved_menu_data, "unresolved_menus") + unresolved_result_list = dtr_general_result_export(unresolved_result_sheet, unresolved_result_data, "unresolved_results") + + TOTAL_INFO = { + 'test_ver_menu_data' : test_ver_menu_list, + 'test_ver_info_data' : test_ver_info_list, + 'smoke_menu_data' : smoke_menu_list, + 'smoke_result_data' : smoke_result_list, + 'tbt_menu_data' : tbt_menu_list, + 'tbt_result_data' : tbt_result_list, + 'sample_menu_data' : sample_menu_list, + 'sample_result_data' : sample_result_list, + 'unresolved_menu_data' : unresolved_menu_list, + 'unresolved_result_data' : unresolved_result_list, + } + + pprint.pprint(TOTAL_INFO) + + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/packaging/jenkins-scripts.spec b/packaging/jenkins-scripts.spec index 67f88d2..9196c43 100644 --- a/packaging/jenkins-scripts.spec +++ b/packaging/jenkins-scripts.spec @@ -22,6 +22,7 @@ Requires: %{name}-trbs = %{version}-%{release} Requires: %{name}-abs = %{version}-%{release} Requires: %{name}-groovyinit = %{version}-%{release} Requires: %{name}-pmb = %{version}-%{release} +Requires: %{name}-dtr = %{version}-%{release} BuildArch: noarch %define homedir /var/lib/jenkins @@ -48,6 +49,7 @@ Requires: python-lxml Requires: python-mysql Requires: python-jenkinsapi Requires: python-urllib3 +Requires: python-xlrd Requires: gbs-api %if 0%{?suse_version} <= 1320 Requires: python-boto @@ -112,6 +114,14 @@ Group: Development/Tools/Building %description pmb pmb scripts for Tools&Services development and test process +%package dtr +Summary: dtr scripts for the view & services for Daily Test Result +Group: Development/Tools/Building + +%description dtr +dtr scripts for the view & services for Daily Test Result + + %prep %setup -q @@ -119,7 +129,7 @@ pmb scripts for Tools&Services development and test process %install install -d %{buildroot}%{destdir} -cp -r job_*.py job_*.groovy codebase.py dir-purge-tool.sh logs-collector.sh common obs_requests templates scripts vis dep_graph trbs abs pmb %{buildroot}%{destdir}/ +cp -r job_*.py job_*.groovy codebase.py dir-purge-tool.sh logs-collector.sh common obs_requests templates scripts vis dep_graph trbs abs pmb dtr %{buildroot}%{destdir}/ install -d %{buildroot}%{destinitdir} cp -r groovy_init_scripts/{Module*,init.groovy,setup.properties.example} %{buildroot}%{destinitdir}/ install -d %{buildroot}%{homedir} @@ -372,4 +382,9 @@ fi %{destdir}/pmb/job_tool_jira_receiver.py %{destdir}/pmb/job_tool_history_update.py +%files dtr +%defattr(-,jenkins,jenkins) +%dir %{destdir}/dtr +%{destdir}/dtr/job_dtr_status.py + %changelog -- 2.7.4