Mbed OS example of Pelion device management LGUPlus Client

Committer:
MACRUM
Date:
Thu Dec 12 10:26:06 2019 +0900
Revision:
0:9f917a7bf2da
Initial commit.

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,useless-super-delegation
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 mbed_cloud.exceptions import CloudApiException
MACRUM 0:9f917a7bf2da 22 from pelion_helper import PelionBase
MACRUM 0:9f917a7bf2da 23
MACRUM 0:9f917a7bf2da 24
MACRUM 0:9f917a7bf2da 25 class Testcase(PelionBase):
MACRUM 0:9f917a7bf2da 26 def __init__(self):
MACRUM 0:9f917a7bf2da 27 PelionBase.__init__(self,
MACRUM 0:9f917a7bf2da 28 name="observation",
MACRUM 0:9f917a7bf2da 29 title="Example application can respond to resource subscription)",
MACRUM 0:9f917a7bf2da 30 status="released",
MACRUM 0:9f917a7bf2da 31 type="acceptance",
MACRUM 0:9f917a7bf2da 32 component=["mbed_cloud_client_example"])
MACRUM 0:9f917a7bf2da 33
MACRUM 0:9f917a7bf2da 34 def setup(self):
MACRUM 0:9f917a7bf2da 35 super(Testcase, self).setup()
MACRUM 0:9f917a7bf2da 36
MACRUM 0:9f917a7bf2da 37 def case(self):
MACRUM 0:9f917a7bf2da 38 # Test resource subscription
MACRUM 0:9f917a7bf2da 39 resource_path = '/3201/0/5853'
MACRUM 0:9f917a7bf2da 40
MACRUM 0:9f917a7bf2da 41 # 1) Add initial resource value
MACRUM 0:9f917a7bf2da 42 self.logger.info("PUT %s with value %s", resource_path, self.pattern_value1)
MACRUM 0:9f917a7bf2da 43 try:
MACRUM 0:9f917a7bf2da 44 self.connect_api.set_resource_value(device_id=self.device_id,
MACRUM 0:9f917a7bf2da 45 resource_path=resource_path,
MACRUM 0:9f917a7bf2da 46 resource_value=self.pattern_value1,
MACRUM 0:9f917a7bf2da 47 timeout=self.restTimeout)
MACRUM 0:9f917a7bf2da 48 except CloudApiException as error:
MACRUM 0:9f917a7bf2da 49 raise TestStepFail("PUT request failed with %d and msg %s" % (error.status, error.message))
MACRUM 0:9f917a7bf2da 50
MACRUM 0:9f917a7bf2da 51 # Create resource subscription for custom resource (/3201/0/5853)
MACRUM 0:9f917a7bf2da 52 self.logger.info("Testing subscription for %s", resource_path)
MACRUM 0:9f917a7bf2da 53 self.connect_api.start_notifications()
MACRUM 0:9f917a7bf2da 54
MACRUM 0:9f917a7bf2da 55 try:
MACRUM 0:9f917a7bf2da 56 self.connect_api.add_resource_subscription_async(device_id=self.device_id,
MACRUM 0:9f917a7bf2da 57 resource_path=resource_path,
MACRUM 0:9f917a7bf2da 58 callback_fn=self._callback_fn)
MACRUM 0:9f917a7bf2da 59 except CloudApiException as error:
MACRUM 0:9f917a7bf2da 60 raise TestStepFail("Subscription request failed with %d and msg %s" % (error.status, error.message))
MACRUM 0:9f917a7bf2da 61
MACRUM 0:9f917a7bf2da 62 # 2) Update resource value
MACRUM 0:9f917a7bf2da 63 self.logger.info("PUT %s with value %s", resource_path, self.pattern_value2)
MACRUM 0:9f917a7bf2da 64 try:
MACRUM 0:9f917a7bf2da 65 self.connect_api.set_resource_value(device_id=self.device_id,
MACRUM 0:9f917a7bf2da 66 resource_path=resource_path,
MACRUM 0:9f917a7bf2da 67 resource_value=self.pattern_value2,
MACRUM 0:9f917a7bf2da 68 timeout=self.restTimeout)
MACRUM 0:9f917a7bf2da 69 except CloudApiException as error:
MACRUM 0:9f917a7bf2da 70 raise TestStepFail("PUT request failed with %d and msg %s" % (error.status, error.message))
MACRUM 0:9f917a7bf2da 71
MACRUM 0:9f917a7bf2da 72 self.logger.info("Waiting for resource notification")
MACRUM 0:9f917a7bf2da 73 notif_timeout = time.time() + self.restTimeout
MACRUM 0:9f917a7bf2da 74
MACRUM 0:9f917a7bf2da 75 # 3) Wait until we receive some value or timeout
MACRUM 0:9f917a7bf2da 76 while time.time() < notif_timeout:
MACRUM 0:9f917a7bf2da 77 if self.notified_value != "":
MACRUM 0:9f917a7bf2da 78 break
MACRUM 0:9f917a7bf2da 79
MACRUM 0:9f917a7bf2da 80 if self.notified_value != self.pattern_value2:
MACRUM 0:9f917a7bf2da 81 self.logger.error("Web-application received %s as notification, expected %s", self.notified_value, self.pattern_value2)
MACRUM 0:9f917a7bf2da 82 raise TestStepFail("Incorrect/No notification received")
MACRUM 0:9f917a7bf2da 83 else:
MACRUM 0:9f917a7bf2da 84 self.logger.info("Web-application received %s as notification.", self.notified_value)
MACRUM 0:9f917a7bf2da 85
MACRUM 0:9f917a7bf2da 86 # 4) Remove subscription
MACRUM 0:9f917a7bf2da 87 try:
MACRUM 0:9f917a7bf2da 88 self.connect_api.delete_resource_subscription(device_id=self.device_id)
MACRUM 0:9f917a7bf2da 89 except CloudApiException as error:
MACRUM 0:9f917a7bf2da 90 raise TestStepFail("Subscription removal failed with %d and msg %s" % (error.status, error.message))
MACRUM 0:9f917a7bf2da 91
MACRUM 0:9f917a7bf2da 92 # 5) Update resource value to trigger reset from server
MACRUM 0:9f917a7bf2da 93 # This is needed to clean the client subscription status for any follow-up tests
MACRUM 0:9f917a7bf2da 94 self.logger.info("PUT %s with value %s", resource_path, self.pattern_value3)
MACRUM 0:9f917a7bf2da 95 try:
MACRUM 0:9f917a7bf2da 96 self.connect_api.set_resource_value(device_id=self.device_id,
MACRUM 0:9f917a7bf2da 97 resource_path=resource_path,
MACRUM 0:9f917a7bf2da 98 resource_value=self.pattern_value3,
MACRUM 0:9f917a7bf2da 99 timeout=self.restTimeout)
MACRUM 0:9f917a7bf2da 100 except CloudApiException as error:
MACRUM 0:9f917a7bf2da 101 raise TestStepFail("PUT request failed with %d and msg %s" % (error.status, error.message))
MACRUM 0:9f917a7bf2da 102
MACRUM 0:9f917a7bf2da 103 def teardown(self):
MACRUM 0:9f917a7bf2da 104 # Remove subscription
MACRUM 0:9f917a7bf2da 105 try:
MACRUM 0:9f917a7bf2da 106 self.connect_api.delete_resource_subscription(device_id=self.device_id)
MACRUM 0:9f917a7bf2da 107 except CloudApiException as error:
MACRUM 0:9f917a7bf2da 108 raise TestStepFail("Subscription removal failed with %d and msg %s" % (error.status, error.message))
MACRUM 0:9f917a7bf2da 109
MACRUM 0:9f917a7bf2da 110 self.connect_api.stop_notifications()