108 lines
4.0 KiB
Python
108 lines
4.0 KiB
Python
#/*
|
|
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
|
# * contributor license agreements. See the NOTICE file distributed with
|
|
# * this work for additional information regarding copyright ownership.
|
|
# * The OpenAirInterface Software Alliance licenses this file to You under
|
|
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
|
# * except in compliance with the License.
|
|
# * You may obtain a copy of the License at
|
|
# *
|
|
# * http://www.openairinterface.org/?page_id=698
|
|
# *
|
|
# * Unless required by applicable law or agreed to in writing, software
|
|
# * distributed under the License is distributed on an "AS IS" BASIS,
|
|
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# * See the License for the specific language governing permissions and
|
|
# * limitations under the License.
|
|
# *-------------------------------------------------------------------------------
|
|
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
|
# * contact@openairinterface.org
|
|
# */
|
|
#---------------------------------------------------------------------
|
|
# Merge Requests Dashboard for RAN on googleSheet
|
|
#
|
|
# Required Python Version
|
|
# Python 3.x
|
|
#
|
|
#---------------------------------------------------------------------
|
|
|
|
#author Remi
|
|
|
|
|
|
import pymysql
|
|
import sys
|
|
from datetime import datetime
|
|
import pickle
|
|
|
|
#This is the script/package used by the dashboard to retrieve the MR test results from the database
|
|
|
|
class SQLConnect:
|
|
def __init__(self):
|
|
self.connection = pymysql.connect(
|
|
host='172.22.0.2',
|
|
user='root',
|
|
password = 'ucZBc2XRYdvEm59F',
|
|
db='oaicicd_tests',
|
|
port=3306
|
|
)
|
|
self.data={}
|
|
|
|
|
|
#retrieve data from mysql database and organize it in a dictionary (per MR passed as argument)
|
|
def get(self,MR):
|
|
self.data[MR]={}
|
|
cur=self.connection.cursor()
|
|
|
|
#get counters per test
|
|
sql = "select TEST,STATUS, count(*) AS COUNT from test_results where MR=(%s) group by TEST, STATUS;"
|
|
cur.execute(sql,MR)
|
|
response=cur.fetchall()
|
|
if len(response)==0:#no test results yet
|
|
self.data[MR]['PASS']=''
|
|
self.data[MR]['FAIL']=''
|
|
else:
|
|
for i in range(0,len(response)):
|
|
test=response[i][0]
|
|
status=response[i][1]
|
|
count=response[i][2]
|
|
if test in self.data[MR]:
|
|
self.data[MR][test][status]=count
|
|
else:
|
|
self.data[MR][test]={}
|
|
self.data[MR][test][status]=count
|
|
|
|
#get last failing build and link
|
|
sql = "select TEST,BUILD, BUILD_LINK from test_results where MR=(%s) and STATUS='FAIL' order by DATE DESC;"
|
|
cur.execute(sql,MR)
|
|
response=cur.fetchall()
|
|
if len(response)!=0:
|
|
for i in range(0,len(response)):
|
|
test=response[i][0]
|
|
build=response[i][1]
|
|
link=response[i][2]
|
|
if 'last_fail' not in self.data[MR][test]:
|
|
self.data[MR][test]['last_fail']=[]
|
|
self.data[MR][test]['last_fail'].append(build)
|
|
self.data[MR][test]['last_fail'].append(link)
|
|
|
|
#get last passing build and link
|
|
sql = "select TEST,BUILD, BUILD_LINK from test_results where MR=(%s) and STATUS='PASS' order by DATE DESC;"
|
|
cur.execute(sql,MR)
|
|
response=cur.fetchall()
|
|
if len(response)!=0:
|
|
for i in range(0,len(response)):
|
|
test=response[i][0]
|
|
build=response[i][1]
|
|
link=response[i][2]
|
|
if 'last_pass' not in self.data[MR][test]:
|
|
self.data[MR][test]['last_pass']=[]
|
|
self.data[MR][test]['last_pass'].append(build)
|
|
self.data[MR][test]['last_pass'].append(link)
|
|
|
|
|
|
#close database connection
|
|
def close_connection(self):
|
|
self.connection.close()
|
|
|
|
|