Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
shared_cred_prov_test.py
1 #!/usr/bin/env python3
2 
3 import argparse
4 import subprocess
5 import sys
6 import tempfile
7 
8 from pathlib import Path
9 
10 from prov_test_common import run_subprocess, verify_provisioned
11 
12 
13 def main():
14  parser = argparse.ArgumentParser(description='Run a local shared device provisioning test with aktualizr')
15  parser.add_argument('--build-dir', '-b', type=Path, default=Path('../build'), help='build directory')
16  parser.add_argument('--credentials', '-c', type=Path, default=Path('.'), help='path to credentials archive')
17  args = parser.parse_args()
18 
19  retval = 1
20  with tempfile.TemporaryDirectory() as tmp_dir:
21  retval = provision(Path(tmp_dir), args.build_dir, args.credentials)
22  return retval
23 
24 
25 CONFIG_TEMPLATE = '''
26 [pacman]
27 type = "none"
28 
29 [provision]
30 provision_path = "{creds}"
31 mode = "SharedCredReuse"
32 
33 [storage]
34 path = "{tmp_dir}"
35 type = "sqlite"
36 sqldb_path = "{db}"
37 '''
38 
39 
40 def provision(tmp_dir, build_dir, creds):
41  db = tmp_dir / 'sql.db'
42  conf = tmp_dir / '20-shared-cred-prov.toml'
43  with conf.open('w') as f:
44  f.write(CONFIG_TEMPLATE.format(creds=creds, tmp_dir=tmp_dir, db=db))
45  akt = build_dir / 'src/aktualizr_primary/aktualizr'
46  akt_info = build_dir / 'src/aktualizr_info/aktualizr-info'
47 
48  run_subprocess([str(akt), '--config', str(conf), '--run-mode', 'once'])
49  return verify_provisioned(akt_info, conf)
50 
51 
52 if __name__ == '__main__':
53  sys.exit(main())