Provide RP_LOG_BATCH_SIZE variable
Related-Prod: PRODX-53429
Change-Id: Ief51411146c3f0780302405bccc870bc059fcb18
diff --git a/rp_reporter/rp_reporter/report_from_xml.py b/rp_reporter/rp_reporter/report_from_xml.py
index 5493938..652f90f 100644
--- a/rp_reporter/rp_reporter/report_from_xml.py
+++ b/rp_reporter/rp_reporter/report_from_xml.py
@@ -2,6 +2,8 @@
import click
import ipdb
import urllib
+
+import urllib3
import xunitparser
import logging
import pathlib
@@ -17,7 +19,7 @@
from reportportal_client import RPClient
from reportportal_client.helpers import timestamp
-from .settings import RP_ENDPOINT, RP_APIKEY, RP_PROJECT
+from .settings import RP_ENDPOINT, RP_APIKEY, RP_PROJECT, RP_LOG_BATCH_SIZE
LOG = logging.getLogger("rp_reporter")
@@ -93,6 +95,7 @@
endpoint=RP_ENDPOINT,
project=RP_PROJECT,
api_key=RP_APIKEY,
+ log_batch_size=RP_LOG_BATCH_SIZE,
is_skipped_an_issue=False,
truncate_attributes=False,
retries=15,
@@ -287,7 +290,6 @@
stats.add_error()
case _:
raise BaseException(f"Unknown {tc.result=} in xml")
-
if tc.message:
self.client.log(
time=timestamp(), message=tc.message, item_id=item_id
diff --git a/rp_reporter/rp_reporter/settings.py b/rp_reporter/rp_reporter/settings.py
index 9a3ef56..ddd2314 100644
--- a/rp_reporter/rp_reporter/settings.py
+++ b/rp_reporter/rp_reporter/settings.py
@@ -6,12 +6,32 @@
LOG = logging.getLogger("rp_reporter")
+class AnsiColorFormatter(logging.Formatter):
+ def format(self, record: logging.LogRecord):
+ no_style = '\033[0m'
+ bold = '\033[91m'
+ grey = '\033[90m'
+ yellow = '\033[93m'
+ red = '\033[31m'
+ red_light = '\033[91m'
+ start_style = {
+ 'DEBUG': grey,
+ 'INFO': no_style,
+ 'WARNING': yellow,
+ 'ERROR': red,
+ 'CRITICAL': red_light + bold,
+ }.get(record.levelname, no_style)
+ end_style = no_style
+ return f'{start_style}{super().format(record)}{end_style}'
+
+
+
RP_CONFIG_FILE = environ.get("RP_CONFIG_FILE") or (Path.home() / ".reportportal_config")
def from_conf(key_name):
if not Path(RP_CONFIG_FILE).exists():
- LOG.info(
+ LOG.debug(
f"Can't get {key_name} because config file " f"not found: {RP_CONFIG_FILE}"
)
return None
@@ -19,26 +39,25 @@
yaml_config = yaml.safe_load(f)
value = yaml_config.get(key_name)
if value is None:
- LOG.info(f"Can't get {key_name} because it's absent in {RP_CONFIG_FILE}")
+ LOG.debug(f"Can't get {key_name} because it's absent in {RP_CONFIG_FILE}")
return value
-
def call_error(key_name):
raise Exception(
f"{key_name} should be defined in {RP_CONFIG_FILE} or "
f"by environment variable"
)
-
RP_LOGGING = environ.get("RP_LOGGING") or from_conf("RP_LOGGING") or logging.WARNING
RP_LOG_FILE = environ.get("RP_LOG_FILE") or from_conf("RP_LOG_FILE")
-logging.basicConfig(
- level=RP_LOGGING,
- format="%(asctime)s %(levelname)s - %(filename)s:%(lineno)d (%(funcName)s) - %(message)s",
- filename=RP_LOG_FILE,
- filemode="w",
-)
+logger = logging.getLogger()
+handler = logging.StreamHandler()
+handler.setLevel(RP_LOGGING) # DEBUG INFO WARNING ERROR CRITICAL
+formatter = AnsiColorFormatter('{asctime} | {levelname:<8s} | {name:<20s} | {message}', style='{')
+handler.setFormatter(formatter)
+logger.addHandler(handler)
+logger.setLevel(RP_LOGGING) # DEBUG INFO WARNING ERROR CRITICAL
RP_APIKEY = (
environ.get("RP_APIKEY") or from_conf("RP_APIKEY") or call_error("RP_APIKEY")
@@ -50,6 +69,10 @@
environ.get("RP_PROJECT") or from_conf("RP_PROJECT") or call_error("RP_PROJECT")
)
+RP_LOG_BATCH_SIZE = int(
+ environ.get("RP_LOG_BATCH_SIZE") or from_conf("RP_LOG_BATCH_SIZE") or 20
+)
+
JENKINS_USER = (
environ.get('JENKINS_USER') or from_conf("JENKINS_USER")
)