Convert Xena Test Config into XOA

To converter your old test configuration files into new XOA json format, you need to do the following steps.

Step 1. Create Project Folder

First, create a folder on your computer at a location you want. This folder will be the place where you keep your XOA test suites and a simple Python program to load and run them using XOA Core framework.

Let’s create a folder called /my_xoa_project

Create project folder
/my_xoa_project
    |

Step 2. Create Necessary Files

Create a main.py file inside the folder /my_xoa_project.

Then, on the same level as main.py, create a folder /pluginlib for keeping your test suites.

After that, create a __init__.py inside folder /pluginlib to make it into a package.

Create necessary files
/my_xoa_project
    |
    |- main.py
    |- /pluginlib
        |- __init__.py
        |

Step 3. Install XOA Core

If you have already installed XOA Core in your system, either to your global namespace or in a virtual environment, you can skip this step.

Read more about ``

Step 4. Copy XOA Test Suite Plugin into Project Folder

Copy a test suite plugin, e.g. /plugin2544 from XOA Test Suite into /my_xoa_project/pluginlib.

Copy your test configuration json file, e.g. my2544_data.json into /my_xoa_project for easy access.

Copy test suite plugin into project
/my_xoa_project
    |
    |- main.py
    |- my2544_data.json
    |- /pluginlib
        |- __init__.py
        |- /plugin2544

Step 5. Convert Test Config from Xena to XOA

First, import xoa_core and xoa_converter into your Python code. If you haven’t installed xoa-core Python package in your environment, please go to XOA Core.

from xoa_core import controller
from xoa_converter.entry import converter
from xoa_converter.types import TestSuiteType

Then, to use the converter, you need the target schema for the old file to be converted into. After that, simply provide the target schema, the old config file to the converter function and get the new config file:

import asyncio
import json
from xoa_core import controller
from xoa_converter.entry import converter
from xoa_converter.types import TestSuiteType

# source config file to be converted
OLD_CONFIG_FILE = "my_old2544_config.v2544" 
NEW_CONFIG_FILE = "xoa2544.json"
T_SUITE_NAME = "RFC-2544"
PLUGINS_PATH =  "pluginlib"

async def start():

    # create an instance of xoa core controller
    c = await controller.MainController()

    # open and read xena test config my_old2544_config.v2544
    with open(OLD_CONFIG_FILE) as f:
        app_data = f.read()

        # register rfc2544 plugin to core
        c.register_lib(str(PLUGINS_PATH))

        # get rfc2544 test suite information from the core's registration
        info = c.get_test_suite_info(T_SUITE_NAME)
        if not info:
            print("Test suite is not recognized.")
            return None
        
        # convert the old config into new config
        new_data = converter(TestSuiteType.RFC2544, app_data, info["schema"])

        # save the new config file xoa2544.json
        with open(NEW_CONFIG_FILE, "w") as f:
            f.write(new_data)
        
        # you can use the config file below to start the test
        new_config = json.loads(new_data)

        # Test suite name: "RFC-2544" is received from call of c.get_available_test_suites()
        # test_id = c.start_test_suite(T_SUITE_NAME, new_config)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.create_task(start())
    loop.run_forever()