1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-04-14 23:00:49 +01:00

tests/test_agenda_parser: Use custom yaml loader for test cases

Instead of using the default yaml loader make sure to use our customised
loader. Also move the loading stage into our test cases as this should
be part of the test case to ensure that it functions for the individual
test case.
This commit is contained in:
Marc Bonnici 2019-05-17 16:44:04 +01:00 committed by setrofim
parent 83f826d6fe
commit aa0564e8f3

View File

@ -18,7 +18,6 @@
# pylint: disable=R0201 # pylint: disable=R0201
import os import os
import sys import sys
import yaml
from collections import defaultdict from collections import defaultdict
from unittest import TestCase from unittest import TestCase
@ -31,6 +30,7 @@ os.environ['WA_USER_DIRECTORY'] = os.path.join(DATA_DIR, 'includes')
from wa.framework.configuration.execution import ConfigManager from wa.framework.configuration.execution import ConfigManager
from wa.framework.configuration.parsers import AgendaParser from wa.framework.configuration.parsers import AgendaParser
from wa.framework.exception import ConfigError from wa.framework.exception import ConfigError
from wa.utils.serializer import yaml
from wa.utils.types import reset_all_counters from wa.utils.types import reset_all_counters
@ -44,7 +44,6 @@ workloads:
workload_parameters: workload_parameters:
test: 1 test: 1
""" """
invalid_agenda = yaml.load(invalid_agenda_text)
duplicate_agenda_text = """ duplicate_agenda_text = """
global: global:
@ -57,12 +56,10 @@ workloads:
- id: "1" - id: "1"
workload_name: benchmarkpi workload_name: benchmarkpi
""" """
duplicate_agenda = yaml.load(duplicate_agenda_text)
short_agenda_text = """ short_agenda_text = """
workloads: [antutu, dhrystone, benchmarkpi] workloads: [antutu, dhrystone, benchmarkpi]
""" """
short_agenda = yaml.load(short_agenda_text)
default_ids_agenda_text = """ default_ids_agenda_text = """
workloads: workloads:
@ -75,7 +72,6 @@ workloads:
cpus: 1 cpus: 1
- vellamo - vellamo
""" """
default_ids_agenda = yaml.load(default_ids_agenda_text)
sectioned_agenda_text = """ sectioned_agenda_text = """
sections: sections:
@ -98,7 +94,6 @@ sections:
workloads: workloads:
- memcpy - memcpy
""" """
sectioned_agenda = yaml.load(sectioned_agenda_text)
dup_sectioned_agenda_text = """ dup_sectioned_agenda_text = """
sections: sections:
@ -111,7 +106,6 @@ sections:
workloads: workloads:
- memcpy - memcpy
""" """
dup_sectioned_agenda = yaml.load(dup_sectioned_agenda_text)
class AgendaTest(TestCase): class AgendaTest(TestCase):
@ -126,6 +120,8 @@ class AgendaTest(TestCase):
assert_equal(len(self.config.jobs_config.root_node.workload_entries), 4) assert_equal(len(self.config.jobs_config.root_node.workload_entries), 4)
def test_duplicate_id(self): def test_duplicate_id(self):
duplicate_agenda = yaml.load(duplicate_agenda_text)
try: try:
self.parser.load(self.config, duplicate_agenda, 'test') self.parser.load(self.config, duplicate_agenda, 'test')
except ConfigError as e: except ConfigError as e:
@ -134,6 +130,8 @@ class AgendaTest(TestCase):
raise Exception('ConfigError was not raised for an agenda with duplicate ids.') raise Exception('ConfigError was not raised for an agenda with duplicate ids.')
def test_yaml_missing_field(self): def test_yaml_missing_field(self):
invalid_agenda = yaml.load(invalid_agenda_text)
try: try:
self.parser.load(self.config, invalid_agenda, 'test') self.parser.load(self.config, invalid_agenda, 'test')
except ConfigError as e: except ConfigError as e:
@ -142,20 +140,26 @@ class AgendaTest(TestCase):
raise Exception('ConfigError was not raised for an invalid agenda.') raise Exception('ConfigError was not raised for an invalid agenda.')
def test_defaults(self): def test_defaults(self):
short_agenda = yaml.load(short_agenda_text)
self.parser.load(self.config, short_agenda, 'test') self.parser.load(self.config, short_agenda, 'test')
workload_entries = self.config.jobs_config.root_node.workload_entries workload_entries = self.config.jobs_config.root_node.workload_entries
assert_equal(len(workload_entries), 3) assert_equal(len(workload_entries), 3)
assert_equal(workload_entries[0].config['workload_name'], 'antutu') assert_equal(workload_entries[0].config['workload_name'], 'antutu')
assert_equal(workload_entries[0].id, 'wk1') assert_equal(workload_entries[0].id, 'wk1')
def test_default_id_assignment(self): def test_default_id_assignment(self):
default_ids_agenda = yaml.load(default_ids_agenda_text)
self.parser.load(self.config, default_ids_agenda, 'test2') self.parser.load(self.config, default_ids_agenda, 'test2')
workload_entries = self.config.jobs_config.root_node.workload_entries workload_entries = self.config.jobs_config.root_node.workload_entries
assert_equal(workload_entries[0].id, 'wk2') assert_equal(workload_entries[0].id, 'wk2')
assert_equal(workload_entries[3].id, 'wk3') assert_equal(workload_entries[3].id, 'wk3')
def test_sections(self): def test_sections(self):
sectioned_agenda = yaml.load(sectioned_agenda_text)
self.parser.load(self.config, sectioned_agenda, 'test') self.parser.load(self.config, sectioned_agenda, 'test')
root_node_workload_entries = self.config.jobs_config.root_node.workload_entries root_node_workload_entries = self.config.jobs_config.root_node.workload_entries
leaves = list(self.config.jobs_config.root_node.leaves()) leaves = list(self.config.jobs_config.root_node.leaves())
section1_workload_entries = leaves[0].workload_entries section1_workload_entries = leaves[0].workload_entries
@ -167,6 +171,7 @@ class AgendaTest(TestCase):
@raises(ConfigError) @raises(ConfigError)
def test_dup_sections(self): def test_dup_sections(self):
dup_sectioned_agenda = yaml.load(dup_sectioned_agenda_text)
self.parser.load(self.config, dup_sectioned_agenda, 'test') self.parser.load(self.config, dup_sectioned_agenda, 'test')
@raises(ConfigError) @raises(ConfigError)