Example

Dependencies:   FXAS21002 FXOS8700Q

Committer:
maygup01
Date:
Tue Nov 19 09:49:38 2019 +0000
Revision:
0:11cc2b7889af
Example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maygup01 0:11cc2b7889af 1 ## ----------------------------------------------------------------------------
maygup01 0:11cc2b7889af 2 ## Copyright 2016-2018 ARM Ltd.
maygup01 0:11cc2b7889af 3 ##
maygup01 0:11cc2b7889af 4 ## SPDX-License-Identifier: Apache-2.0
maygup01 0:11cc2b7889af 5 ##
maygup01 0:11cc2b7889af 6 ## Licensed under the Apache License, Version 2.0 (the "License");
maygup01 0:11cc2b7889af 7 ## you may not use this file except in compliance with the License.
maygup01 0:11cc2b7889af 8 ## You may obtain a copy of the License at
maygup01 0:11cc2b7889af 9 ##
maygup01 0:11cc2b7889af 10 ## http://www.apache.org/licenses/LICENSE-2.0
maygup01 0:11cc2b7889af 11 ##
maygup01 0:11cc2b7889af 12 ## Unless required by applicable law or agreed to in writing, software
maygup01 0:11cc2b7889af 13 ## distributed under the License is distributed on an "AS IS" BASIS,
maygup01 0:11cc2b7889af 14 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
maygup01 0:11cc2b7889af 15 ## See the License for the specific language governing permissions and
maygup01 0:11cc2b7889af 16 ## limitations under the License.
maygup01 0:11cc2b7889af 17 ## ----------------------------------------------------------------------------
maygup01 0:11cc2b7889af 18
maygup01 0:11cc2b7889af 19 from mbed_host_tests import BaseHostTest
maygup01 0:11cc2b7889af 20 from mbed_host_tests.host_tests_logger import HtrunLogger
maygup01 0:11cc2b7889af 21 from mbed_cloud.device_directory import DeviceDirectoryAPI
maygup01 0:11cc2b7889af 22 from mbed_cloud.connect import ConnectAPI
maygup01 0:11cc2b7889af 23 import os
maygup01 0:11cc2b7889af 24 import time
maygup01 0:11cc2b7889af 25 import subprocess
maygup01 0:11cc2b7889af 26 import re
maygup01 0:11cc2b7889af 27 import signal
maygup01 0:11cc2b7889af 28
maygup01 0:11cc2b7889af 29 DEFAULT_CYCLE_PERIOD = 1.0
maygup01 0:11cc2b7889af 30
maygup01 0:11cc2b7889af 31 class SDKTests(BaseHostTest):
maygup01 0:11cc2b7889af 32 __result = None
maygup01 0:11cc2b7889af 33 deviceApi = None
maygup01 0:11cc2b7889af 34 connectApi = None
maygup01 0:11cc2b7889af 35 deviceID = None
maygup01 0:11cc2b7889af 36 post_timeout = None
maygup01 0:11cc2b7889af 37 firmware_proc = None
maygup01 0:11cc2b7889af 38 firmware_sent = False
maygup01 0:11cc2b7889af 39 firmware_file = None
maygup01 0:11cc2b7889af 40 iteration = 0
maygup01 0:11cc2b7889af 41 boot_cycles = 0
maygup01 0:11cc2b7889af 42
maygup01 0:11cc2b7889af 43 def send_safe(self, key, value):
maygup01 0:11cc2b7889af 44 #self.send_kv('dummy_start', 0)
maygup01 0:11cc2b7889af 45 self.send_kv(key, value)
maygup01 0:11cc2b7889af 46 self.send_kv(key, value)
maygup01 0:11cc2b7889af 47 self.send_kv(key, value)
maygup01 0:11cc2b7889af 48 self.send_kv(key, value)
maygup01 0:11cc2b7889af 49 self.send_kv(key, value)
maygup01 0:11cc2b7889af 50 #self.send_kv('dummy_end', 1)
maygup01 0:11cc2b7889af 51
maygup01 0:11cc2b7889af 52 def _callback_device_booted(self, key, value, timestamp):
maygup01 0:11cc2b7889af 53 # This is used to let the device boot normally
maygup01 0:11cc2b7889af 54 self.send_safe('__sync', 0)
maygup01 0:11cc2b7889af 55
maygup01 0:11cc2b7889af 56 def _callback_device_ready(self, key, value, timestamp):
maygup01 0:11cc2b7889af 57 # Send device iteration number after a reset
maygup01 0:11cc2b7889af 58 self.boot_cycles += 1
maygup01 0:11cc2b7889af 59 # Prevent boot loop due to Mbed OS crash
maygup01 0:11cc2b7889af 60 if self.boot_cycles <= 5:
maygup01 0:11cc2b7889af 61 self.send_safe('iteration', self.iteration)
maygup01 0:11cc2b7889af 62
maygup01 0:11cc2b7889af 63 def _callback_test_advance(self, key, value, timestamp):
maygup01 0:11cc2b7889af 64 # Advance test sequence
maygup01 0:11cc2b7889af 65 self.iteration = self.iteration + 1
maygup01 0:11cc2b7889af 66 self.send_safe('reset', 0)
maygup01 0:11cc2b7889af 67
maygup01 0:11cc2b7889af 68 def _callback_test_failed(self, key, value, timestamp):
maygup01 0:11cc2b7889af 69 # Test failed. End it.
maygup01 0:11cc2b7889af 70 self.notify_complete(False)
maygup01 0:11cc2b7889af 71
maygup01 0:11cc2b7889af 72 """
maygup01 0:11cc2b7889af 73 Device Register routines
maygup01 0:11cc2b7889af 74 """
maygup01 0:11cc2b7889af 75 def _callback_verify_registration(self, key, value, timestamp):
maygup01 0:11cc2b7889af 76 try:
maygup01 0:11cc2b7889af 77 #set value for later use
maygup01 0:11cc2b7889af 78 self.deviceID = value
maygup01 0:11cc2b7889af 79
maygup01 0:11cc2b7889af 80 # Check if device is in Mbed Cloud Device Directory
maygup01 0:11cc2b7889af 81 device = self.deviceApi.get_device(value)
maygup01 0:11cc2b7889af 82
maygup01 0:11cc2b7889af 83 # Send registraton status to device
maygup01 0:11cc2b7889af 84 self.send_safe("registered", 1 if device.state == "registered" else 0)
maygup01 0:11cc2b7889af 85 except:
maygup01 0:11cc2b7889af 86 # SDK throws an exception if the device is not found (unsuccessful registration) or times out
maygup01 0:11cc2b7889af 87 self.send_safe("registered", 0)
maygup01 0:11cc2b7889af 88
maygup01 0:11cc2b7889af 89 def _callback_verify_identity(self, key, value, timestamp):
maygup01 0:11cc2b7889af 90 # Send true if old DeviceID is the same as current device is
maygup01 0:11cc2b7889af 91 self.send_safe("verified", 1 if self.deviceID == value else 0)
maygup01 0:11cc2b7889af 92
maygup01 0:11cc2b7889af 93 """
maygup01 0:11cc2b7889af 94 Device Connect routines
maygup01 0:11cc2b7889af 95 """
maygup01 0:11cc2b7889af 96 def _callback_verify_lwm2m_get(self, key, value, timestamp):
maygup01 0:11cc2b7889af 97 timeout = 0
maygup01 0:11cc2b7889af 98
maygup01 0:11cc2b7889af 99 # Get resource value from device
maygup01 0:11cc2b7889af 100 async_response = self.connectApi.get_resource_value_async(self.deviceID, value)
maygup01 0:11cc2b7889af 101
maygup01 0:11cc2b7889af 102 # Set a 30 second timeout here.
maygup01 0:11cc2b7889af 103 while not async_response.is_done and timeout <= 50:
maygup01 0:11cc2b7889af 104 time.sleep(0.1)
maygup01 0:11cc2b7889af 105 timeout += 1
maygup01 0:11cc2b7889af 106
maygup01 0:11cc2b7889af 107 if not async_response.is_done:
maygup01 0:11cc2b7889af 108 # Kick the REST API
maygup01 0:11cc2b7889af 109 timeout = 0
maygup01 0:11cc2b7889af 110 async_response = self.connectApi.get_resource_value_async(self.deviceID, value)
maygup01 0:11cc2b7889af 111 while not async_response.is_done and timeout <= 250:
maygup01 0:11cc2b7889af 112 time.sleep(0.1)
maygup01 0:11cc2b7889af 113 timeout += 1
maygup01 0:11cc2b7889af 114
maygup01 0:11cc2b7889af 115 if async_response.is_done:
maygup01 0:11cc2b7889af 116 # Send resource value back to device
maygup01 0:11cc2b7889af 117 self.send_safe("get_value", async_response.value)
maygup01 0:11cc2b7889af 118 else:
maygup01 0:11cc2b7889af 119 # Request timed out.
maygup01 0:11cc2b7889af 120 self.send_safe("timeout", 0)
maygup01 0:11cc2b7889af 121
maygup01 0:11cc2b7889af 122 def _callback_verify_lwm2m_set(self, key, value, timestamp):
maygup01 0:11cc2b7889af 123 timeout = 0
maygup01 0:11cc2b7889af 124
maygup01 0:11cc2b7889af 125 # Get resource value from device
maygup01 0:11cc2b7889af 126 async_response = self.connectApi.get_resource_value_async(self.deviceID, value)
maygup01 0:11cc2b7889af 127
maygup01 0:11cc2b7889af 128 # Set a 30 second timeout here.
maygup01 0:11cc2b7889af 129 while not async_response.is_done and timeout <= 300:
maygup01 0:11cc2b7889af 130 time.sleep(0.1)
maygup01 0:11cc2b7889af 131 timeout += 1
maygup01 0:11cc2b7889af 132
maygup01 0:11cc2b7889af 133 if async_response.is_done:
maygup01 0:11cc2b7889af 134 # Send resource value back to device
maygup01 0:11cc2b7889af 135 self.send_safe("set_value", async_response.value)
maygup01 0:11cc2b7889af 136 else:
maygup01 0:11cc2b7889af 137 # Request timed out.
maygup01 0:11cc2b7889af 138 self.send_safe("timeout", 0)
maygup01 0:11cc2b7889af 139
maygup01 0:11cc2b7889af 140 def _callback_verify_lwm2m_put(self, key, value, timestamp):
maygup01 0:11cc2b7889af 141 timeout = 0
maygup01 0:11cc2b7889af 142
maygup01 0:11cc2b7889af 143 # Get resource value from device and increment it
maygup01 0:11cc2b7889af 144 resource_value = self.connectApi.get_resource_value_async(self.deviceID, value)
maygup01 0:11cc2b7889af 145
maygup01 0:11cc2b7889af 146 # Set a 30 second timeout here.
maygup01 0:11cc2b7889af 147 while not resource_value.is_done and timeout <= 300:
maygup01 0:11cc2b7889af 148 time.sleep(0.1)
maygup01 0:11cc2b7889af 149 timeout += 1
maygup01 0:11cc2b7889af 150
maygup01 0:11cc2b7889af 151 if not resource_value.is_done:
maygup01 0:11cc2b7889af 152 self.send_safe("timeout", 0)
maygup01 0:11cc2b7889af 153 return
maygup01 0:11cc2b7889af 154
maygup01 0:11cc2b7889af 155 updated_value = int(resource_value.value) + 5
maygup01 0:11cc2b7889af 156
maygup01 0:11cc2b7889af 157 # Set new resource value from cloud
maygup01 0:11cc2b7889af 158 async_response = self.connectApi.set_resource_value_async(self.deviceID, value, updated_value)
maygup01 0:11cc2b7889af 159
maygup01 0:11cc2b7889af 160 # Set a 30 second timeout here.
maygup01 0:11cc2b7889af 161 while not async_response.is_done and timeout <= 300:
maygup01 0:11cc2b7889af 162 time.sleep(0.1)
maygup01 0:11cc2b7889af 163 timeout += 1
maygup01 0:11cc2b7889af 164
maygup01 0:11cc2b7889af 165 if not async_response.is_done:
maygup01 0:11cc2b7889af 166 self.send_safe("timeout", 0)
maygup01 0:11cc2b7889af 167 else:
maygup01 0:11cc2b7889af 168 # Send new resource value to device for verification.
maygup01 0:11cc2b7889af 169 self.send_safe("res_set", updated_value);
maygup01 0:11cc2b7889af 170
maygup01 0:11cc2b7889af 171 def _callback_verify_lwm2m_post(self, key, value, timestamp):
maygup01 0:11cc2b7889af 172 timeout = 0
maygup01 0:11cc2b7889af 173
maygup01 0:11cc2b7889af 174 # Execute POST function on device
maygup01 0:11cc2b7889af 175 resource_value = self.connectApi.execute_resource_async(self.deviceID, value)
maygup01 0:11cc2b7889af 176
maygup01 0:11cc2b7889af 177 # Set a 30 second timeout here.
maygup01 0:11cc2b7889af 178 while not resource_value.is_done and timeout <= 300:
maygup01 0:11cc2b7889af 179 time.sleep(0.1)
maygup01 0:11cc2b7889af 180 timeout += 1
maygup01 0:11cc2b7889af 181
maygup01 0:11cc2b7889af 182 if not resource_value.is_done:
maygup01 0:11cc2b7889af 183 self.send_safe("timeout", 0)
maygup01 0:11cc2b7889af 184 self.post_timeout = 1
maygup01 0:11cc2b7889af 185
maygup01 0:11cc2b7889af 186 def _callback_verify_lwm2m_post_result(self, key, value, timestamp):
maygup01 0:11cc2b7889af 187
maygup01 0:11cc2b7889af 188 # Called from callback function on device, POST function working as expected.
maygup01 0:11cc2b7889af 189 # If post_timeout is not none, the request took longer than 30 seconds, which is
maygup01 0:11cc2b7889af 190 # a failure. Don't send this value.
maygup01 0:11cc2b7889af 191 if not self.post_timeout:
maygup01 0:11cc2b7889af 192 self.send_safe("post_test_executed", 0)
maygup01 0:11cc2b7889af 193
maygup01 0:11cc2b7889af 194 """
maygup01 0:11cc2b7889af 195 Device Firmware update routines
maygup01 0:11cc2b7889af 196 """
maygup01 0:11cc2b7889af 197 def firmware_campaign_cleanup(self):
maygup01 0:11cc2b7889af 198 if self.firmware_proc:
maygup01 0:11cc2b7889af 199 if os.name == 'nt':
maygup01 0:11cc2b7889af 200 os.kill(self.firmware_proc.pid, signal.CTRL_C_EVENT)
maygup01 0:11cc2b7889af 201 os.kill(self.firmware_proc.pid, signal.CTRL_BREAK_EVENT)
maygup01 0:11cc2b7889af 202 self.firmware_proc.terminate()
maygup01 0:11cc2b7889af 203 outs, errs = self.firmware_proc.communicate()
maygup01 0:11cc2b7889af 204 self.logger.prn_inf('Firmware campaign process killed: PID %s' % self.firmware_proc.pid)
maygup01 0:11cc2b7889af 205 self.firmware_proc = None
maygup01 0:11cc2b7889af 206
maygup01 0:11cc2b7889af 207 try:
maygup01 0:11cc2b7889af 208 time.sleep(1) # let the manifest-tool sub-process die gracefully
maygup01 0:11cc2b7889af 209 if self.firmware_file:
maygup01 0:11cc2b7889af 210 os.remove(self.firmware_file)
maygup01 0:11cc2b7889af 211 self.firmware_file = None
maygup01 0:11cc2b7889af 212 except Exception, e:
maygup01 0:11cc2b7889af 213 pass
maygup01 0:11cc2b7889af 214
maygup01 0:11cc2b7889af 215 def _callback_firmware_ready(self, key, value, timestamp):
maygup01 0:11cc2b7889af 216 if self.firmware_sent:
maygup01 0:11cc2b7889af 217 # Firmware was sent, but wasn't applied if this callback is called
maygup01 0:11cc2b7889af 218 self.firmware_campaign_cleanup()
maygup01 0:11cc2b7889af 219 self.notify_complete(False)
maygup01 0:11cc2b7889af 220 else:
maygup01 0:11cc2b7889af 221 # Send device iteration number after a reset
maygup01 0:11cc2b7889af 222 self.send_safe('iteration', self.iteration)
maygup01 0:11cc2b7889af 223
maygup01 0:11cc2b7889af 224 def _callback_firmware_prepare(self, key, value, timestamp):
maygup01 0:11cc2b7889af 225 if not self.deviceID:
maygup01 0:11cc2b7889af 226 self.logger.prn_err("ERROR: No DeviceID")
maygup01 0:11cc2b7889af 227 self.notify_complete(False)
maygup01 0:11cc2b7889af 228 return -1
maygup01 0:11cc2b7889af 229
maygup01 0:11cc2b7889af 230 target = self.get_config_item('platform_name')
maygup01 0:11cc2b7889af 231 image = self.get_config_item('image_path')
maygup01 0:11cc2b7889af 232 update_image = re.sub(r'(.+)\.([a-z0-9]+)$', r'\1_update.bin', image if image else "")
maygup01 0:11cc2b7889af 233 if not image or not os.path.exists(update_image):
maygup01 0:11cc2b7889af 234 self.logger.prn_err("ERROR: No main or update image")
maygup01 0:11cc2b7889af 235 self.notify_complete(False)
maygup01 0:11cc2b7889af 236 return -1
maygup01 0:11cc2b7889af 237 self.logger.prn_inf('Found FW update image: "%s"' % update_image)
maygup01 0:11cc2b7889af 238
maygup01 0:11cc2b7889af 239 try:
maygup01 0:11cc2b7889af 240 # Open the firmware update image as provided by the build system
maygup01 0:11cc2b7889af 241 with open(update_image, 'rb') as f:
maygup01 0:11cc2b7889af 242 raw = f.read()
maygup01 0:11cc2b7889af 243 # Modify the initial "spdmc_ready_chk" sequence into "firmware_update"
maygup01 0:11cc2b7889af 244 # (matching the string length) as an indication that the firmware was changed/updated
maygup01 0:11cc2b7889af 245 raw = re.sub(r'spdmc_ready_chk', r'firmware_update', raw)
maygup01 0:11cc2b7889af 246
maygup01 0:11cc2b7889af 247 # Save the firmware into a temp place. Manifest tool has issues handling very long paths even if -n is specified
maygup01 0:11cc2b7889af 248 update_mod_image = ".%s.%s.%s" % (target, re.sub(r'.*[\\/](.+)\.([a-z0-9]+)$', r'\1_update_mod.\2', image), time.time())
maygup01 0:11cc2b7889af 249 with open(update_mod_image, 'wb') as f:
maygup01 0:11cc2b7889af 250 f.write(raw)
maygup01 0:11cc2b7889af 251 except Exception, e:
maygup01 0:11cc2b7889af 252 self.logger.prn_err("ERROR: While preparing modified image")
maygup01 0:11cc2b7889af 253 self.notify_complete(False)
maygup01 0:11cc2b7889af 254 return -1
maygup01 0:11cc2b7889af 255 self.logger.prn_inf('Modified FW update image: "%s"' % update_mod_image)
maygup01 0:11cc2b7889af 256
maygup01 0:11cc2b7889af 257 # Use non-blocking call, but remember the process, so we can kill it later
maygup01 0:11cc2b7889af 258 try:
maygup01 0:11cc2b7889af 259 spargs = dict()
maygup01 0:11cc2b7889af 260 if os.name == 'posix':
maygup01 0:11cc2b7889af 261 spargs['preexec_fn'] = os.setpgrp
maygup01 0:11cc2b7889af 262 elif os.name == 'nt':
maygup01 0:11cc2b7889af 263 spargs['creationflags'] = subprocess.CREATE_NEW_PROCESS_GROUP
maygup01 0:11cc2b7889af 264 self.firmware_proc = subprocess.Popen(["mbed", "dm", "update", "device", "-p", update_mod_image, "-D", self.deviceID], stderr=subprocess.STDOUT, **spargs)
maygup01 0:11cc2b7889af 265 self.firmware_file = update_mod_image
maygup01 0:11cc2b7889af 266 except Exception, e:
maygup01 0:11cc2b7889af 267 self.logger.prn_err("ERROR: Unable to execute 'mbed dm' sub-command")
maygup01 0:11cc2b7889af 268 self.firmware_campaign_cleanup()
maygup01 0:11cc2b7889af 269 self.notify_complete(False)
maygup01 0:11cc2b7889af 270 return -1
maygup01 0:11cc2b7889af 271
maygup01 0:11cc2b7889af 272 # At this point the firmware should be on it's way to the device
maygup01 0:11cc2b7889af 273 self.firmware_sent = True
maygup01 0:11cc2b7889af 274 self.send_safe('firmware_sent', 1)
maygup01 0:11cc2b7889af 275 self.logger.prn_inf("Firmware sent and update campaign started. Check for download progress.")
maygup01 0:11cc2b7889af 276
maygup01 0:11cc2b7889af 277 def _callback_firmware_update(self, key, value, timestamp):
maygup01 0:11cc2b7889af 278 self.logger.prn_inf("Firmware successfully updated!")
maygup01 0:11cc2b7889af 279 self.firmware_campaign_cleanup()
maygup01 0:11cc2b7889af 280 self.iteration = self.iteration + 1
maygup01 0:11cc2b7889af 281 self.send_safe('iteration', self.iteration)
maygup01 0:11cc2b7889af 282
maygup01 0:11cc2b7889af 283
maygup01 0:11cc2b7889af 284 """
maygup01 0:11cc2b7889af 285 Host setup routines
maygup01 0:11cc2b7889af 286 """
maygup01 0:11cc2b7889af 287 def setup(self):
maygup01 0:11cc2b7889af 288 # Generic test routines
maygup01 0:11cc2b7889af 289 self.register_callback('device_booted', self._callback_device_booted)
maygup01 0:11cc2b7889af 290 self.register_callback('device_ready', self._callback_device_ready)
maygup01 0:11cc2b7889af 291 self.register_callback('test_advance', self._callback_test_advance)
maygup01 0:11cc2b7889af 292 self.register_callback('test_failed', self._callback_test_failed)
maygup01 0:11cc2b7889af 293
maygup01 0:11cc2b7889af 294 # Callbacks from device registration tests
maygup01 0:11cc2b7889af 295 self.register_callback('verify_registration', self._callback_verify_registration)
maygup01 0:11cc2b7889af 296 self.register_callback('verify_identity', self._callback_verify_identity)
maygup01 0:11cc2b7889af 297
maygup01 0:11cc2b7889af 298 # Callbacks from LWM2M tests
maygup01 0:11cc2b7889af 299 self.register_callback('verify_lwm2m_get_test', self._callback_verify_lwm2m_get)
maygup01 0:11cc2b7889af 300 self.register_callback('verify_lwm2m_set_test', self._callback_verify_lwm2m_set)
maygup01 0:11cc2b7889af 301 self.register_callback('verify_lwm2m_put_test', self._callback_verify_lwm2m_put)
maygup01 0:11cc2b7889af 302 self.register_callback('verify_lwm2m_post_test', self._callback_verify_lwm2m_post)
maygup01 0:11cc2b7889af 303 self.register_callback('verify_lwm2m_post_test_result', self._callback_verify_lwm2m_post_result)
maygup01 0:11cc2b7889af 304
maygup01 0:11cc2b7889af 305 # Callbacks from FW update tests
maygup01 0:11cc2b7889af 306 self.register_callback('spdmc_ready_chk', self._callback_firmware_ready)
maygup01 0:11cc2b7889af 307 self.register_callback('firmware_prepare', self._callback_firmware_prepare)
maygup01 0:11cc2b7889af 308 self.register_callback('firmware_update', self._callback_firmware_update)
maygup01 0:11cc2b7889af 309
maygup01 0:11cc2b7889af 310 # Setup API config
maygup01 0:11cc2b7889af 311 try:
maygup01 0:11cc2b7889af 312 result = subprocess.check_output(["mbed", "config", "--list"], stderr=subprocess.STDOUT)
maygup01 0:11cc2b7889af 313 except Exception, e:
maygup01 0:11cc2b7889af 314 self.logger.prn_err("ERROR: CLOUD_SDK_API_KEY global config is not set: " + str(e))
maygup01 0:11cc2b7889af 315 return -1
maygup01 0:11cc2b7889af 316
maygup01 0:11cc2b7889af 317 match = re.search(r'CLOUD_SDK_API_KEY=(.*)\n', result)
maygup01 0:11cc2b7889af 318 if match == None:
maygup01 0:11cc2b7889af 319 self.logger.prn_err("ERROR: CLOUD_SDK_API_KEY global config is not set.")
maygup01 0:11cc2b7889af 320 return -1
maygup01 0:11cc2b7889af 321
maygup01 0:11cc2b7889af 322 api_key_val = match.group(1).strip()
maygup01 0:11cc2b7889af 323
maygup01 0:11cc2b7889af 324 # Get API KEY and remove LF char if included
maygup01 0:11cc2b7889af 325 self.logger.prn_inf("CLOUD_SDK_API_KEY: " + api_key_val)
maygup01 0:11cc2b7889af 326
maygup01 0:11cc2b7889af 327 api_config = {"api_key" : api_key_val, "host" : "https://api.us-east-1.mbedcloud.com"}
maygup01 0:11cc2b7889af 328
maygup01 0:11cc2b7889af 329 self.iteration = 0
maygup01 0:11cc2b7889af 330 self.boot_cycles = 0
maygup01 0:11cc2b7889af 331
maygup01 0:11cc2b7889af 332 # Instantiate Device and Connect API
maygup01 0:11cc2b7889af 333 self.deviceApi = DeviceDirectoryAPI(api_config)
maygup01 0:11cc2b7889af 334 self.connectApi = ConnectAPI(api_config)
maygup01 0:11cc2b7889af 335
maygup01 0:11cc2b7889af 336 def result(self):
maygup01 0:11cc2b7889af 337 return self.__result
maygup01 0:11cc2b7889af 338
maygup01 0:11cc2b7889af 339 def teardown(self):
maygup01 0:11cc2b7889af 340 # Delete device from directory so as not to hit device allocation quota.
maygup01 0:11cc2b7889af 341 if self.deviceID:
maygup01 0:11cc2b7889af 342 self.deviceApi.delete_device(self.deviceID)
maygup01 0:11cc2b7889af 343 self.firmware_campaign_cleanup()
maygup01 0:11cc2b7889af 344
maygup01 0:11cc2b7889af 345 pass
maygup01 0:11cc2b7889af 346
maygup01 0:11cc2b7889af 347 def __init__(self):
maygup01 0:11cc2b7889af 348 super(SDKTests, self).__init__()
maygup01 0:11cc2b7889af 349 self.logger = HtrunLogger('TEST')