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 
32 [storage]
33 path = "{tmp_dir}"
34 type = "sqlite"
35 sqldb_path = "{db}"
36 '''
37 
38 
39 def provision(tmp_dir, build_dir, creds):
40  db = tmp_dir / 'sql.db'
41  conf = tmp_dir / '20-shared-cred-prov.toml'
42  with conf.open('w') as f:
43  f.write(CONFIG_TEMPLATE.format(creds=creds, tmp_dir=tmp_dir, db=db))
44  akt = build_dir / 'src/aktualizr_primary/aktualizr'
45  akt_info = build_dir / 'src/aktualizr_info/aktualizr-info'
46 
47  run_subprocess([str(akt), '--config', str(conf), '--run-mode', 'once'])
48  return verify_provisioned(akt_info, conf)
49 
50 
51 if __name__ == '__main__':
52  sys.exit(main())