Mbed OS example of Pelion device management LGUPlus Client

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?

UserRevisionLine numberNew 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()