11 async def test_action(event_loop
):
12 async with base
.CleanModel() as model
:
13 ubuntu_app
= await model
.deploy(
15 application_name
='mysql',
19 'tuning-level': 'safest',
26 # update and check app config
27 await ubuntu_app
.set_config({'tuning-level': 'fast'})
28 config
= await ubuntu_app
.get_config()
29 assert config
['tuning-level']['value'] == 'fast'
31 # update and check app constraints
32 await ubuntu_app
.set_constraints({'mem': 512 * MB
})
33 constraints
= await ubuntu_app
.get_constraints()
34 assert constraints
['mem'] == 512 * MB
39 async def test_add_units(event_loop
):
40 from juju
.unit
import Unit
42 async with base
.CleanModel() as model
:
43 app
= await model
.deploy(
45 application_name
='ubuntu',
49 units
= await app
.add_units(count
=2)
51 assert len(units
) == 2
53 assert isinstance(unit
, Unit
)
58 async def test_upgrade_charm(event_loop
):
59 async with base
.CleanModel() as model
:
60 app
= await model
.deploy('ubuntu-0')
61 assert app
.data
['charm-url'] == 'cs:ubuntu-0'
62 await app
.upgrade_charm()
63 assert app
.data
['charm-url'].startswith('cs:ubuntu-')
64 assert app
.data
['charm-url'] != 'cs:ubuntu-0'
69 async def test_upgrade_charm_channel(event_loop
):
70 async with base
.CleanModel() as model
:
71 app
= await model
.deploy('ubuntu-0')
72 assert app
.data
['charm-url'] == 'cs:ubuntu-0'
73 await app
.upgrade_charm(channel
='stable')
74 assert app
.data
['charm-url'].startswith('cs:ubuntu-')
75 assert app
.data
['charm-url'] != 'cs:ubuntu-0'
80 async def test_upgrade_charm_revision(event_loop
):
81 async with base
.CleanModel() as model
:
82 app
= await model
.deploy('ubuntu-0')
83 assert app
.data
['charm-url'] == 'cs:ubuntu-0'
84 await app
.upgrade_charm(revision
=8)
85 assert app
.data
['charm-url'] == 'cs:ubuntu-8'
90 async def test_upgrade_charm_switch(event_loop
):
91 async with base
.CleanModel() as model
:
92 app
= await model
.deploy('ubuntu-0')
93 assert app
.data
['charm-url'] == 'cs:ubuntu-0'
94 await app
.upgrade_charm(switch
='ubuntu-8')
95 assert app
.data
['charm-url'] == 'cs:ubuntu-8'
100 async def test_upgrade_charm_resource(event_loop
):
101 async with base
.CleanModel() as model
:
102 app
= await model
.deploy('cs:~cynerva/upgrade-charm-resource-test-1')
108 return unit
.workload_status
== 'active' and \
109 unit
.agent_status
== 'idle'
111 await asyncio
.wait_for(model
.block_until(units_ready
), timeout
=480)
113 expected_message
= 'I have no resource.'
114 assert unit
.workload_status_message
== expected_message
116 await app
.upgrade_charm(revision
=2)
117 await asyncio
.wait_for(
119 lambda: unit
.workload_status_message
!= 'I have no resource.'
123 expected_message
= 'My resource: I am the resource.'
124 assert app
.units
[0].workload_status_message
== expected_message