Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
prov_test_common.py
1 import platform
2 import re
3 import subprocess
4 
5 
6 def verify_provisioned(akt_info, conf):
7  # Verify that device HAS provisioned.
8  stdout, stderr, retcode = run_subprocess([str(akt_info), '--config', str(conf), '--wait-until-provisioned'])
9  machine = platform.node()
10  if (b'Device ID: ' not in stdout or
11  b'Primary ECU hardware ID: ' + machine.encode() not in stdout or
12  b'Fetched metadata: yes' not in stdout):
13  print('Provisioning failed: ' + stderr.decode() + stdout.decode())
14  return 1
15  p = re.compile(r'Device ID: ([a-z0-9-]*)\n')
16  m = p.search(stdout.decode())
17  if not m or m.lastindex <= 0:
18  print('Device ID could not be read: ' + stderr.decode() + stdout.decode())
19  return 1
20  print('Device successfully provisioned with ID: ' + m.group(1))
21  return 0
22 
23 
24 def run_subprocess(command, **kwargs):
25  print('> Running {}'.format(' '.join(command)))
26  proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kwargs)
27  try:
28  stdout, stderr = proc.communicate(timeout=60)
29  except subprocess.TimeoutExpired:
30  proc.kill()
31  stdout, stderr = proc.communicate()
32  return stdout, stderr, proc.returncode