Skip to content

Commit

Permalink
added ut for sub-adaptive-resources
Browse files Browse the repository at this point in the history
  • Loading branch information
gregoil committed Aug 12, 2019
1 parent 997c1ed commit a687e38
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 3 deletions.
5 changes: 4 additions & 1 deletion src/rotest/management/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@ class ManagementConfig(AppConfig):
def ready(self):
from .models import ResourceData
from .client.manager import ClientResourceManager
from .base_resource import BaseResource, ResourceRequest
from .base_resource import (BaseResource,
ResourceAdapter,
ResourceRequest)

import rotest
rotest.management.ResourceData = ResourceData
rotest.management.ClientResourceManager = ClientResourceManager
rotest.management.BaseResource = BaseResource
rotest.management.ResourceAdapter = ResourceAdapter
rotest.management.ResourceRequest = ResourceRequest


Expand Down
22 changes: 21 additions & 1 deletion src/rotest/management/models/ut_resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import os
import shutil

from rotest.management.base_resource import BaseResource
from rotest.management.base_resource import BaseResource, ResourceAdapter
from .ut_models import ResourceData, DemoResourceData, DemoComplexResourceData


Expand Down Expand Up @@ -158,3 +158,23 @@ def initialize(self):
class DemoService(BaseResource):
"""Fake service class, used in resource manager tests."""
DATA_CLASS = None


class DemoResource2(DemoResource):
"""A demo resource class similar to DemoResource."""


class DemoAdaptiveComplexResource(BaseResource):
"""Fake complex resource class, used in resource manager tests.
Attributes:
sub_res1 (DemoResource): sub resource pointer.
sub_res2 (DemoResource / DemoResource2): sub resource pointer.
"""
DATA_CLASS = DemoComplexResourceData

sub_res1 = DemoResource2.request(data=DATA_CLASS.demo1)
sub_res2 = ResourceAdapter(config_key='field1',
resource_classes={True: DemoResource,
False: DemoResource2},
data=DATA_CLASS.demo2)
34 changes: 33 additions & 1 deletion tests/core/test_case.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@
from rotest.core.models.case_data import TestOutcome, CaseData
from rotest.management.models.ut_models import DemoResourceData
from rotest.management.models.ut_resources import (DemoResource,
DemoResource2,
NonExistingResource,
DemoComplexResource)
DemoComplexResource,
DemoAdaptiveComplexResource)

from tests.core.utils import (ErrorInSetupCase, SuccessCase, FailureCase,
ErrorCase, StoreMultipleFailuresCase,
Expand Down Expand Up @@ -52,6 +54,13 @@ class TempComplexRequestCase(SuccessCase):
res2 = DemoResource.request(name='available_resource2')


class TempComplexAdaptiveResourceCase(SuccessCase):
"""Inherit class and override resources requests."""
__test__ = False

resources = (request('res1', DemoAdaptiveComplexResource),)


class TempAdaptiveRequestPositiveCase(SuccessCase):
"""Inherit class and override resources requests."""
__test__ = False
Expand Down Expand Up @@ -286,6 +295,29 @@ def test_complex_resource_request(self):
self.assertIn('available_resource2', locked_names,
"Resource request using class field ignored kwargs")

def test_complex_adaptive_resource_request(self):
"""Test a TestCase that requests a complex adaptive resources."""
case = self._run_case(TempComplexAdaptiveResourceCase,
config={'field1': False})

self.assertTrue(self.result.wasSuccessful(),
'Case failed when it should have succeeded')

# === Validate case data object ===
self.assertTrue(case.data.success)

test_resources = case.all_resources

self.assertEqual(len(test_resources), 1,
"Unexpected number of resources, expected %r got %r" %
(1, len(test_resources)))

resource, = list(test_resources.values())
self.assertTrue(isinstance(resource.sub_res1, DemoResource2),
"Got wrong resource %r for sub_res1" % resource)
self.assertTrue(isinstance(resource.sub_res2, DemoResource2),
"Got wrong resource %r for sub_res2" % resource)

def test_inherit_resource_request(self):
"""Test a TestCase that inherits its resource request."""
case = self._run_case(TempInheritRequestCase)
Expand Down

0 comments on commit a687e38

Please sign in to comment.