X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Ftests%2Fintegration%2Ftest_application.py;h=b7058322894c14e4e6b92d74f8e874a1f922919d;hp=1a4fcaabd027ce853f027cd50be2a3575dda21bd;hb=caf6efba68120623038efc361cf46e1f60de452b;hpb=68858c1915122c2dbc8999a5cd3229694abf5f3a diff --git a/modules/libjuju/tests/integration/test_application.py b/modules/libjuju/tests/integration/test_application.py index 1a4fcaa..b705832 100644 --- a/modules/libjuju/tests/integration/test_application.py +++ b/modules/libjuju/tests/integration/test_application.py @@ -1,3 +1,5 @@ +import asyncio + import pytest from .. import base @@ -10,9 +12,9 @@ MB = 1 async def test_action(event_loop): async with base.CleanModel() as model: ubuntu_app = await model.deploy( - 'mysql', + 'percona-cluster', application_name='mysql', - series='trusty', + series='xenial', channel='stable', config={ 'tuning-level': 'safest', @@ -27,11 +29,20 @@ async def test_action(event_loop): config = await ubuntu_app.get_config() assert config['tuning-level']['value'] == 'fast' + # Restore config back to default + await ubuntu_app.reset_config(['tuning-level']) + config = await ubuntu_app.get_config() + assert config['tuning-level']['value'] == 'safest' + # update and check app constraints await ubuntu_app.set_constraints({'mem': 512 * MB}) constraints = await ubuntu_app.get_constraints() assert constraints['mem'] == 512 * MB + # check action definitions + actions = await ubuntu_app.get_actions() + assert 'backup' in actions.keys() + @base.bootstrapped @pytest.mark.asyncio @@ -92,3 +103,32 @@ async def test_upgrade_charm_switch(event_loop): assert app.data['charm-url'] == 'cs:ubuntu-0' await app.upgrade_charm(switch='ubuntu-8') assert app.data['charm-url'] == 'cs:ubuntu-8' + + +@base.bootstrapped +@pytest.mark.asyncio +async def test_upgrade_charm_resource(event_loop): + async with base.CleanModel() as model: + app = await model.deploy('cs:~cynerva/upgrade-charm-resource-test-1') + + def units_ready(): + if not app.units: + return False + unit = app.units[0] + return unit.workload_status == 'active' and \ + unit.agent_status == 'idle' + + await asyncio.wait_for(model.block_until(units_ready), timeout=480) + unit = app.units[0] + expected_message = 'I have no resource.' + assert unit.workload_status_message == expected_message + + await app.upgrade_charm(revision=2) + await asyncio.wait_for( + model.block_until( + lambda: unit.workload_status_message != 'I have no resource.' + ), + timeout=60 + ) + expected_message = 'My resource: I am the resource.' + assert app.units[0].workload_status_message == expected_message