Skip to content

Commit

Permalink
Merge pull request #112 from gregoil/clean_legacy_code
Browse files Browse the repository at this point in the history
Remove all xml legacy
  • Loading branch information
gregoil committed Nov 6, 2018
2 parents 735271b + 202e66d commit 87f07f5
Show file tree
Hide file tree
Showing 22 changed files with 103 additions and 1,113 deletions.
8 changes: 3 additions & 5 deletions docs/output_handlers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -113,16 +113,14 @@ higher or equal to ``DEBUG`` (``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``,
is higher or equal to ``INFO`` (``INFO``, ``WARNING``, ``ERROR``,
``CRITICAL``).

XML & Excel
Excel
===========

Sometimes, you want to have a better visualization of the results. Rotest can
output the results into a human-readable :file:`results.xls` file, which can be
sent via email for instance. Alternatively, it can output a Junit-compatible
XML, which lots of reporting systems can parse and display. The two relevant
options are ``-o excel`` and ``-o xml``.
sent via email for instance. The relevant option is ``-o excel``.

Those artifacts are saved in the working directory of Rotest. For more about
This artifact is saved in the working directory of Rotest. For more about
this location, see :ref:`configurations`.

Remote
Expand Down
2 changes: 0 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

result_handlers = [
"db = rotest.core.result.handlers.db_handler:DBHandler",
"xml = rotest.core.result.handlers.xml_handler:XMLHandler",
"excel = rotest.core.result.handlers.excel_handler:ExcelHandler",
"dots = rotest.core.result.handlers.stream.dots_handler:DotsHandler",
"tree = rotest.core.result.handlers.stream.tree_handler:TreeHandler",
Expand All @@ -30,7 +29,6 @@
'isort',
'ipdbugger>=2',
'docopt',
'lxml<4.0.0',
'xlwt',
'attrdict',
'pyyaml',
Expand Down
4 changes: 2 additions & 2 deletions src/rotest/api/resource_control/lock_resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from swaggapi.api.builder.server.request import DjangoRequestView

from rotest.management.common.utils import get_username
from rotest.management.common.json_parser import JSONParser
from rotest.management.common.parsers import JSONParser
from rotest.management.common.errors import ResourceTypeError
from rotest.api.common.models import LockResourcesParamsModel
from rotest.api.test_control.middleware import session_middleware
Expand Down Expand Up @@ -168,7 +168,7 @@ def post(self, request, sessions, *args, **kwargs):
session.resources.append(resource)

encoder = JSONParser()
response = [encoder.encode(_resource)
response = [encoder.recursive_encode(_resource)
for _resource in locked_resources]
return Response({
"resource_descriptors": response
Expand Down
5 changes: 3 additions & 2 deletions src/rotest/api/resource_control/query_resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
from swaggapi.api.builder.server.exceptions import BadRequest
from swaggapi.api.builder.server.request import DjangoRequestView

from rotest.management.common.parsers import JSONParser
from rotest.management.common.errors import ResourceTypeError
from rotest.management.common.json_parser import JSONParser
from rotest.api.common.models import ResourceDescriptorModel
from rotest.management.common.resource_descriptor import ResourceDescriptor
from rotest.api.common.responses import (InfluencedResourcesResponseModel,
Expand Down Expand Up @@ -58,7 +58,8 @@ def post(self, request, *args, **kwargs):
"the requirements: {!r}".format(descriptor))

encoder = JSONParser()
query_result = [encoder.encode(resource) for resource in matches]
query_result = [encoder.recursive_encode(resource)
for resource in matches]

return Response({
"resource_descriptors": query_result
Expand Down
4 changes: 2 additions & 2 deletions src/rotest/api/test_control/start_test_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from swaggapi.api.builder.server.request import DjangoRequestView

from rotest.core.models import RunData
from rotest.management.common.json_parser import JSONParser
from rotest.management.common.parsers import JSONParser
from rotest.api.common.models import StartTestRunParamsModel
from rotest.api.test_control.middleware import session_middleware
from rotest.api.common.responses import (SuccessResponse,
Expand Down Expand Up @@ -47,7 +47,7 @@ def _create_test_data(self, test_dict, run_data, all_tests):
GeneralData. the created test data object.
"""
parser = JSONParser()
data_type = parser.decode(test_dict[TEST_CLASS_CODE_KEY])
data_type = parser.recursive_decode(test_dict[TEST_CLASS_CODE_KEY])
try:
test_data = data_type(name=test_dict[TEST_NAME_KEY])

Expand Down
130 changes: 0 additions & 130 deletions src/rotest/core/result/handlers/xml_handler.py

This file was deleted.

6 changes: 3 additions & 3 deletions src/rotest/core/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from future.builtins import range

from rotest.common import core_log
from rotest.core.utils.json_parser import parse
from rotest.core.utils.common import parse_json
from rotest.common.utils import get_class_fields
from rotest.management.base_resource import BaseResource
from rotest.core.runners.base_runner import BaseTestRunner
Expand Down Expand Up @@ -140,8 +140,8 @@ def parse_config_file(json_path, schema_path=DEFAULT_SCHEMA_PATH):
raise ValueError("Illegal config-path: %r" % json_path)

core_log.debug('Parsing configuration file %r', json_path)
config = parse(json_path=json_path,
schema_path=schema_path)
config = parse_json(json_path=json_path,
schema_path=schema_path)

return config

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
from rotest.common import core_log
from rotest.core.models.case_data import TestOutcome
from rotest.core.models.general_data import GeneralData
from rotest.management.common.parsers import DEFAULT_PARSER
from rotest.core.flow_component import AbstractFlowComponent
from rotest.management.common.parsers.xml_parser import XMLParser
from rotest.core.runners.multiprocess.common import (WrappedException,
get_item_by_id)
from rotest.management.common.messages import (StopTest,
Expand Down Expand Up @@ -47,7 +47,7 @@ def __init__(self, multiprocess_runner, result, main_test):
"""
self.result = result
self.main_test = main_test
self.decoder = XMLParser()
self.decoder = DEFAULT_PARSER()
self.runner = multiprocess_runner

self.result_event_handlers = {
Expand Down
8 changes: 4 additions & 4 deletions src/rotest/core/runners/multiprocess/worker/result_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from future.utils import iteritems

from rotest.core.models.case_data import TestOutcome
from rotest.management.common.parsers.xml_parser import XMLParser
from rotest.management.common.parsers import DEFAULT_PARSER
from rotest.core.result.handlers.abstract_handler import AbstractResultHandler
from rotest.management.common.messages import (StopTest,
AddResult,
Expand Down Expand Up @@ -44,7 +44,7 @@ def __init__(self, reply_queue, results_queue, *args, **kwargs):
data from the main runner to this specific worker.
"""
super(WorkerHandler, self).__init__()
self.xml_parser = XMLParser()
self.parser = DEFAULT_PARSER()
self.worker_pid = os.getpid()
self.reply_queue = reply_queue
self.results_queue = results_queue
Expand All @@ -55,7 +55,7 @@ def send_message(self, message):
Args:
message (collections.namedtuple): message to send.
"""
self.results_queue.put(self.xml_parser.encode(message))
self.results_queue.put(self.parser.encode(message))
# Wait for the lock to be released on both sides of the queue.
time.sleep(0.1)

Expand All @@ -66,7 +66,7 @@ def get_message(self, timeout=REPLY_TIMEOUT):
timeout (number): waiting timeout.
"""
message = self.reply_queue.get(timeout=timeout, block=True)
return self.xml_parser.decode(message)
return self.parser.decode(message)

def start_test(self, test):
"""Notify the manager about the starting of a test run via queue."""
Expand Down
29 changes: 29 additions & 0 deletions src/rotest/core/utils/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@
# pylint: disable=dangerous-default-value
from __future__ import print_function, absolute_import

import json
from future.builtins import str

from attrdict import AttrDict
from jsonschema import validate

from rotest.core.case import TestCase
from rotest.core.flow import TestFlow
from rotest.core.block import TestBlock
Expand Down Expand Up @@ -81,3 +85,28 @@ def print_test_hierarchy(test, tag_filter, tags=[], depth=0):
print_test_hierarchy(sub_test,
PASS_ALL_FILTER if is_colored else None,
tags, depth + 1)


def parse_json(json_path, schema_path=None):
"""Parse the Json file into attribute dictionary.
Args:
json_path (str): path of the Json file.
schema_path (str): path of the schema file - optional.
Returns:
AttrDict. representing the Json file .
Raises:
jsonschema.ValidationError: Json file does not comply with the schema.
"""
with open(json_path) as config_file:
json_content = json.load(config_file)

if schema_path is not None:
with open(schema_path) as schema:
schema_content = json.load(schema)

validate(json_content, schema_content)

return AttrDict(json_content)
33 changes: 0 additions & 33 deletions src/rotest/core/utils/json_parser.py

This file was deleted.

2 changes: 1 addition & 1 deletion src/rotest/management/client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from rotest.api.common.models import GenericModel
from rotest.api.resource_control import UpdateFields
from rotest.api.common import UpdateFieldsParamsModel
from rotest.management.common.json_parser import JSONParser
from rotest.management.common.parsers import JSONParser
from rotest.api.common.responses import FailureResponseModel
from rotest.management.common.resource_descriptor import ResourceDescriptor
from rotest.common.config import (DJANGO_MANAGER_PORT,
Expand Down
4 changes: 2 additions & 2 deletions src/rotest/management/client/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ def _lock_resources(self, descriptors, timeout=None):
self._wait_until_resources_are_locked(server_requests, timeout)

response_resources = \
[self.parser.decode(resource)
[self.parser.recursive_decode(resource)
for resource in response.resource_descriptors]

resources.extend(descriptor.type(data=resource_data)
Expand Down Expand Up @@ -586,5 +586,5 @@ def query_resources(self, descriptor):
if isinstance(response, FailureResponseModel):
raise Exception(response.details)

return [self.parser.decode(resource)
return [self.parser.recursive_decode(resource)
for resource in response.resource_descriptors]

0 comments on commit 87f07f5

Please sign in to comment.