CodeZoo co., ltd
/
mbed-os-example-pelion-CATM1
Mbed OS example of Pelion device management LGUPlus Client
TESTS/device_update.py@2:34933ca5af82, 2020-02-21 (annotated)
- Committer:
- pimco01
- Date:
- Fri Feb 21 19:27:19 2020 +0000
- Revision:
- 2:34933ca5af82
- Parent:
- 0:9f917a7bf2da
main.cpp, app.json modify
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MACRUM | 0:9f917a7bf2da | 1 | """ |
MACRUM | 0:9f917a7bf2da | 2 | Copyright 2019 ARM Limited |
MACRUM | 0:9f917a7bf2da | 3 | Licensed under the Apache License, Version 2.0 (the "License"); |
MACRUM | 0:9f917a7bf2da | 4 | you may not use this file except in compliance with the License. |
MACRUM | 0:9f917a7bf2da | 5 | You may obtain a copy of the License at |
MACRUM | 0:9f917a7bf2da | 6 | |
MACRUM | 0:9f917a7bf2da | 7 | http://www.apache.org/licenses/LICENSE-2.0 |
MACRUM | 0:9f917a7bf2da | 8 | |
MACRUM | 0:9f917a7bf2da | 9 | Unless required by applicable law or agreed to in writing, software |
MACRUM | 0:9f917a7bf2da | 10 | distributed under the License is distributed on an "AS IS" BASIS, |
MACRUM | 0:9f917a7bf2da | 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
MACRUM | 0:9f917a7bf2da | 12 | See the License for the specific language governing permissions and |
MACRUM | 0:9f917a7bf2da | 13 | limitations under the License. |
MACRUM | 0:9f917a7bf2da | 14 | """ |
MACRUM | 0:9f917a7bf2da | 15 | |
MACRUM | 0:9f917a7bf2da | 16 | # pylint: disable=missing-docstring |
MACRUM | 0:9f917a7bf2da | 17 | # pylint: disable=line-too-long,method-hidden,relative-import |
MACRUM | 0:9f917a7bf2da | 18 | |
MACRUM | 0:9f917a7bf2da | 19 | import time |
MACRUM | 0:9f917a7bf2da | 20 | from icetea_lib.bench import TestStepFail |
MACRUM | 0:9f917a7bf2da | 21 | from pelion_helper import PelionBase |
MACRUM | 0:9f917a7bf2da | 22 | |
MACRUM | 0:9f917a7bf2da | 23 | |
MACRUM | 0:9f917a7bf2da | 24 | class Testcase(PelionBase): |
MACRUM | 0:9f917a7bf2da | 25 | def __init__(self): |
MACRUM | 0:9f917a7bf2da | 26 | PelionBase.__init__(self, |
MACRUM | 0:9f917a7bf2da | 27 | name="device_update", |
MACRUM | 0:9f917a7bf2da | 28 | title="Example application can perform firmware update", |
MACRUM | 0:9f917a7bf2da | 29 | status="released", |
MACRUM | 0:9f917a7bf2da | 30 | type="acceptance", |
MACRUM | 0:9f917a7bf2da | 31 | component=["mbed_cloud_client_example"]) |
MACRUM | 0:9f917a7bf2da | 32 | def setup(self): |
MACRUM | 0:9f917a7bf2da | 33 | super(Testcase, self).setup() |
MACRUM | 0:9f917a7bf2da | 34 | super(Testcase, self).setup_update() |
MACRUM | 0:9f917a7bf2da | 35 | |
MACRUM | 0:9f917a7bf2da | 36 | def case(self): |
MACRUM | 0:9f917a7bf2da | 37 | # Create filter for update campaign generation, with automatic startup |
MACRUM | 0:9f917a7bf2da | 38 | update_filter = self.prepare_campaign_filter(state="scheduled") |
MACRUM | 0:9f917a7bf2da | 39 | # Start the update campaign |
MACRUM | 0:9f917a7bf2da | 40 | campaign_id = self.post_campaign(update_filter) |
MACRUM | 0:9f917a7bf2da | 41 | # Wait for the campaign to reach autostopped state |
MACRUM | 0:9f917a7bf2da | 42 | timeout = 600 |
MACRUM | 0:9f917a7bf2da | 43 | _endtime = time.time() + timeout |
MACRUM | 0:9f917a7bf2da | 44 | |
MACRUM | 0:9f917a7bf2da | 45 | while True: |
MACRUM | 0:9f917a7bf2da | 46 | self.delay(10) |
MACRUM | 0:9f917a7bf2da | 47 | result = self.check_campaign_state(campaign_id) |
MACRUM | 0:9f917a7bf2da | 48 | # Update campaign has stopped |
MACRUM | 0:9f917a7bf2da | 49 | if result[0] == "autostopped": |
MACRUM | 0:9f917a7bf2da | 50 | break |
MACRUM | 0:9f917a7bf2da | 51 | |
MACRUM | 0:9f917a7bf2da | 52 | if time.time() > _endtime: |
MACRUM | 0:9f917a7bf2da | 53 | self.logger.error("Campaign in state: %s, Device in state: %s", result[0], result[1]) |
MACRUM | 0:9f917a7bf2da | 54 | raise TestStepFail("Campaign did not finish in %d" % timeout) |
MACRUM | 0:9f917a7bf2da | 55 | |
MACRUM | 0:9f917a7bf2da | 56 | # Check for final state of the device |
MACRUM | 0:9f917a7bf2da | 57 | final_result = self.check_campaign_state(campaign_id) |
MACRUM | 0:9f917a7bf2da | 58 | if final_result[1] != "deployed": |
MACRUM | 0:9f917a7bf2da | 59 | raise TestStepFail("Device in %s state, expected deployed" % result[1]) |
MACRUM | 0:9f917a7bf2da | 60 | |
MACRUM | 0:9f917a7bf2da | 61 | self.logger.info("Firmware update finished successfully") |
MACRUM | 0:9f917a7bf2da | 62 | |
MACRUM | 0:9f917a7bf2da | 63 | def teardown(self): |
MACRUM | 0:9f917a7bf2da | 64 | self.connect_api.stop_notifications() |