diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/oeqa/selftest/cases/updater.py | 73 |
1 files changed, 59 insertions, 14 deletions
diff --git a/lib/oeqa/selftest/cases/updater.py b/lib/oeqa/selftest/cases/updater.py index 0253a84..e620491 100644 --- a/lib/oeqa/selftest/cases/updater.py +++ b/lib/oeqa/selftest/cases/updater.py | |||
| @@ -115,8 +115,8 @@ class AktualizrToolsTests(OESelftestTestCase): | |||
| 115 | bb_vars = get_bb_vars(['SOTA_PACKED_CREDENTIALS', 'T'], 'aktualizr-native') | 115 | bb_vars = get_bb_vars(['SOTA_PACKED_CREDENTIALS', 'T'], 'aktualizr-native') |
| 116 | creds = bb_vars['SOTA_PACKED_CREDENTIALS'] | 116 | creds = bb_vars['SOTA_PACKED_CREDENTIALS'] |
| 117 | temp_dir = bb_vars['T'] | 117 | temp_dir = bb_vars['T'] |
| 118 | bb_vars_prov = get_bb_vars(['STAGING_DIR_NATIVE', 'libdir'], 'aktualizr-implicit-prov') | 118 | bb_vars_prov = get_bb_vars(['STAGING_DIR_HOST', 'libdir'], 'aktualizr-implicit-prov') |
| 119 | config = bb_vars_prov['STAGING_DIR_NATIVE'] + bb_vars_prov['libdir'] + '/sota/sota_implicit_prov.toml' | 119 | config = bb_vars_prov['STAGING_DIR_HOST'] + bb_vars_prov['libdir'] + '/sota/sota_implicit_prov.toml' |
| 120 | 120 | ||
| 121 | akt_native_run(self, 'aktualizr_cert_provider -c {creds} -r -l {temp} -g {config}' | 121 | akt_native_run(self, 'aktualizr_cert_provider -c {creds} -r -l {temp} -g {config}' |
| 122 | .format(creds=creds, temp=temp_dir, config=config)) | 122 | .format(creds=creds, temp=temp_dir, config=config)) |
| @@ -141,7 +141,7 @@ class AutoProvTests(OESelftestTestCase): | |||
| 141 | if re.search(layer, result.output) is None: | 141 | if re.search(layer, result.output) is None: |
| 142 | # Assume the directory layout for finding other layers. We could also | 142 | # Assume the directory layout for finding other layers. We could also |
| 143 | # make assumptions by using 'show-layers', but either way, if the | 143 | # make assumptions by using 'show-layers', but either way, if the |
| 144 | # layers we need aren't where we expect them, we are out of like. | 144 | # layers we need aren't where we expect them, we are out of luck. |
| 145 | path = os.path.abspath(os.path.dirname(__file__)) | 145 | path = os.path.abspath(os.path.dirname(__file__)) |
| 146 | metadir = path + "/../../../../../" | 146 | metadir = path + "/../../../../../" |
| 147 | self.meta_qemu = metadir + layer | 147 | self.meta_qemu = metadir + layer |
| @@ -193,6 +193,49 @@ class AutoProvTests(OESelftestTestCase): | |||
| 193 | 'Legacy secondary initialization failed: ' + stderr.decode() + stdout.decode()) | 193 | 'Legacy secondary initialization failed: ' + stderr.decode() + stdout.decode()) |
| 194 | 194 | ||
| 195 | 195 | ||
| 196 | class ManualControlTests(OESelftestTestCase): | ||
| 197 | |||
| 198 | def setUpLocal(self): | ||
| 199 | layer = "meta-updater-qemux86-64" | ||
| 200 | result = runCmd('bitbake-layers show-layers') | ||
| 201 | if re.search(layer, result.output) is None: | ||
| 202 | # Assume the directory layout for finding other layers. We could also | ||
| 203 | # make assumptions by using 'show-layers', but either way, if the | ||
| 204 | # layers we need aren't where we expect them, we are out of like. | ||
| 205 | path = os.path.abspath(os.path.dirname(__file__)) | ||
| 206 | metadir = path + "/../../../../../" | ||
| 207 | self.meta_qemu = metadir + layer | ||
| 208 | runCmd('bitbake-layers add-layer "%s"' % self.meta_qemu) | ||
| 209 | else: | ||
| 210 | self.meta_qemu = None | ||
| 211 | self.append_config('MACHINE = "qemux86-64"') | ||
| 212 | self.append_config('SOTA_CLIENT_PROV = " aktualizr-auto-prov "') | ||
| 213 | self.append_config('SYSTEMD_AUTO_ENABLE_aktualizr = "disable"') | ||
| 214 | self.qemu, self.s = qemu_launch(machine='qemux86-64') | ||
| 215 | |||
| 216 | def tearDownLocal(self): | ||
| 217 | qemu_terminate(self.s) | ||
| 218 | if self.meta_qemu: | ||
| 219 | runCmd('bitbake-layers remove-layer "%s"' % self.meta_qemu, ignore_status=True) | ||
| 220 | |||
| 221 | def qemu_command(self, command): | ||
| 222 | return qemu_send_command(self.qemu.ssh_port, command) | ||
| 223 | |||
| 224 | def test_manual_running_mode_once(self): | ||
| 225 | """ | ||
| 226 | Disable the systemd service then run aktualizr manually | ||
| 227 | """ | ||
| 228 | sleep(20) | ||
| 229 | stdout, stderr, retcode = self.qemu_command('aktualizr-info') | ||
| 230 | self.assertIn(b'Fetched metadata: no', stdout, | ||
| 231 | 'Aktualizr should not have run yet' + stderr.decode() + stdout.decode()) | ||
| 232 | |||
| 233 | stdout, stderr, retcode = self.qemu_command('aktualizr --running-mode=once') | ||
| 234 | |||
| 235 | stdout, stderr, retcode = self.qemu_command('aktualizr-info') | ||
| 236 | self.assertIn(b'Fetched metadata: yes', stdout, | ||
| 237 | 'Aktualizr should have run' + stderr.decode() + stdout.decode()) | ||
| 238 | |||
| 196 | class RpiTests(OESelftestTestCase): | 239 | class RpiTests(OESelftestTestCase): |
| 197 | 240 | ||
| 198 | def setUpLocal(self): | 241 | def setUpLocal(self): |
| @@ -204,7 +247,7 @@ class RpiTests(OESelftestTestCase): | |||
| 204 | result = runCmd('bitbake-layers show-layers') | 247 | result = runCmd('bitbake-layers show-layers') |
| 205 | # Assume the directory layout for finding other layers. We could also | 248 | # Assume the directory layout for finding other layers. We could also |
| 206 | # make assumptions by using 'show-layers', but either way, if the | 249 | # make assumptions by using 'show-layers', but either way, if the |
| 207 | # layers we need aren't where we expect them, we are out of like. | 250 | # layers we need aren't where we expect them, we are out of luck. |
| 208 | path = os.path.abspath(os.path.dirname(__file__)) | 251 | path = os.path.abspath(os.path.dirname(__file__)) |
| 209 | metadir = path + "/../../../../../" | 252 | metadir = path + "/../../../../../" |
| 210 | if re.search(layer_python, result.output) is None: | 253 | if re.search(layer_python, result.output) is None: |
| @@ -277,7 +320,7 @@ class GrubTests(OESelftestTestCase): | |||
| 277 | result = runCmd('bitbake-layers show-layers') | 320 | result = runCmd('bitbake-layers show-layers') |
| 278 | # Assume the directory layout for finding other layers. We could also | 321 | # Assume the directory layout for finding other layers. We could also |
| 279 | # make assumptions by using 'show-layers', but either way, if the | 322 | # make assumptions by using 'show-layers', but either way, if the |
| 280 | # layers we need aren't where we expect them, we are out of like. | 323 | # layers we need aren't where we expect them, we are out of luck. |
| 281 | path = os.path.abspath(os.path.dirname(__file__)) | 324 | path = os.path.abspath(os.path.dirname(__file__)) |
| 282 | metadir = path + "/../../../../../" | 325 | metadir = path + "/../../../../../" |
| 283 | if re.search(layer_intel, result.output) is None: | 326 | if re.search(layer_intel, result.output) is None: |
| @@ -339,7 +382,7 @@ class ImplProvTests(OESelftestTestCase): | |||
| 339 | if re.search(layer, result.output) is None: | 382 | if re.search(layer, result.output) is None: |
| 340 | # Assume the directory layout for finding other layers. We could also | 383 | # Assume the directory layout for finding other layers. We could also |
| 341 | # make assumptions by using 'show-layers', but either way, if the | 384 | # make assumptions by using 'show-layers', but either way, if the |
| 342 | # layers we need aren't where we expect them, we are out of like. | 385 | # layers we need aren't where we expect them, we are out of luck. |
| 343 | path = os.path.abspath(os.path.dirname(__file__)) | 386 | path = os.path.abspath(os.path.dirname(__file__)) |
| 344 | metadir = path + "/../../../../../" | 387 | metadir = path + "/../../../../../" |
| 345 | self.meta_qemu = metadir + layer | 388 | self.meta_qemu = metadir + layer |
| @@ -348,6 +391,7 @@ class ImplProvTests(OESelftestTestCase): | |||
| 348 | self.meta_qemu = None | 391 | self.meta_qemu = None |
| 349 | self.append_config('MACHINE = "qemux86-64"') | 392 | self.append_config('MACHINE = "qemux86-64"') |
| 350 | self.append_config('SOTA_CLIENT_PROV = " aktualizr-implicit-prov "') | 393 | self.append_config('SOTA_CLIENT_PROV = " aktualizr-implicit-prov "') |
| 394 | runCmd('bitbake -c cleanall aktualizr aktualizr-implicit-prov') | ||
| 351 | self.qemu, self.s = qemu_launch(machine='qemux86-64') | 395 | self.qemu, self.s = qemu_launch(machine='qemux86-64') |
| 352 | 396 | ||
| 353 | def tearDownLocal(self): | 397 | def tearDownLocal(self): |
| @@ -392,8 +436,8 @@ class ImplProvTests(OESelftestTestCase): | |||
| 392 | # Run cert_provider. | 436 | # Run cert_provider. |
| 393 | bb_vars = get_bb_vars(['SOTA_PACKED_CREDENTIALS'], 'aktualizr-native') | 437 | bb_vars = get_bb_vars(['SOTA_PACKED_CREDENTIALS'], 'aktualizr-native') |
| 394 | creds = bb_vars['SOTA_PACKED_CREDENTIALS'] | 438 | creds = bb_vars['SOTA_PACKED_CREDENTIALS'] |
| 395 | bb_vars_prov = get_bb_vars(['STAGING_DIR_NATIVE', 'libdir'], 'aktualizr-implicit-prov') | 439 | bb_vars_prov = get_bb_vars(['STAGING_DIR_HOST', 'libdir'], 'aktualizr-implicit-prov') |
| 396 | config = bb_vars_prov['STAGING_DIR_NATIVE'] + bb_vars_prov['libdir'] + '/sota/sota_implicit_prov.toml' | 440 | config = bb_vars_prov['STAGING_DIR_HOST'] + bb_vars_prov['libdir'] + '/sota/sota_implicit_prov.toml' |
| 397 | 441 | ||
| 398 | akt_native_run(self, 'aktualizr_cert_provider -c {creds} -t root@localhost -p {port} -s -g {config}' | 442 | akt_native_run(self, 'aktualizr_cert_provider -c {creds} -t root@localhost -p {port} -s -g {config}' |
| 399 | .format(creds=creds, port=self.qemu.ssh_port, config=config)) | 443 | .format(creds=creds, port=self.qemu.ssh_port, config=config)) |
| @@ -409,7 +453,7 @@ class HsmTests(OESelftestTestCase): | |||
| 409 | if re.search(layer, result.output) is None: | 453 | if re.search(layer, result.output) is None: |
| 410 | # Assume the directory layout for finding other layers. We could also | 454 | # Assume the directory layout for finding other layers. We could also |
| 411 | # make assumptions by using 'show-layers', but either way, if the | 455 | # make assumptions by using 'show-layers', but either way, if the |
| 412 | # layers we need aren't where we expect them, we are out of like. | 456 | # layers we need aren't where we expect them, we are out of luck. |
| 413 | path = os.path.abspath(os.path.dirname(__file__)) | 457 | path = os.path.abspath(os.path.dirname(__file__)) |
| 414 | metadir = path + "/../../../../../" | 458 | metadir = path + "/../../../../../" |
| 415 | self.meta_qemu = metadir + layer | 459 | self.meta_qemu = metadir + layer |
| @@ -419,6 +463,7 @@ class HsmTests(OESelftestTestCase): | |||
| 419 | self.append_config('MACHINE = "qemux86-64"') | 463 | self.append_config('MACHINE = "qemux86-64"') |
| 420 | self.append_config('SOTA_CLIENT_PROV = "aktualizr-hsm-prov"') | 464 | self.append_config('SOTA_CLIENT_PROV = "aktualizr-hsm-prov"') |
| 421 | self.append_config('SOTA_CLIENT_FEATURES = "hsm"') | 465 | self.append_config('SOTA_CLIENT_FEATURES = "hsm"') |
| 466 | runCmd('bitbake -c cleanall aktualizr aktualizr-hsm-prov') | ||
| 422 | self.qemu, self.s = qemu_launch(machine='qemux86-64') | 467 | self.qemu, self.s = qemu_launch(machine='qemux86-64') |
| 423 | 468 | ||
| 424 | def tearDownLocal(self): | 469 | def tearDownLocal(self): |
| @@ -473,8 +518,8 @@ class HsmTests(OESelftestTestCase): | |||
| 473 | # Run cert_provider. | 518 | # Run cert_provider. |
| 474 | bb_vars = get_bb_vars(['SOTA_PACKED_CREDENTIALS'], 'aktualizr-native') | 519 | bb_vars = get_bb_vars(['SOTA_PACKED_CREDENTIALS'], 'aktualizr-native') |
| 475 | creds = bb_vars['SOTA_PACKED_CREDENTIALS'] | 520 | creds = bb_vars['SOTA_PACKED_CREDENTIALS'] |
| 476 | bb_vars_prov = get_bb_vars(['STAGING_DIR_NATIVE', 'libdir'], 'aktualizr-hsm-prov') | 521 | bb_vars_prov = get_bb_vars(['STAGING_DIR_HOST', 'libdir'], 'aktualizr-hsm-prov') |
| 477 | config = bb_vars_prov['STAGING_DIR_NATIVE'] + bb_vars_prov['libdir'] + '/sota/sota_hsm_prov.toml' | 522 | config = bb_vars_prov['STAGING_DIR_HOST'] + bb_vars_prov['libdir'] + '/sota/sota_hsm_prov.toml' |
| 478 | 523 | ||
| 479 | akt_native_run(self, 'aktualizr_cert_provider -c {creds} -t root@localhost -p {port} -r -s -g {config}' | 524 | akt_native_run(self, 'aktualizr_cert_provider -c {creds} -t root@localhost -p {port} -r -s -g {config}' |
| 480 | .format(creds=creds, port=self.qemu.ssh_port, config=config)) | 525 | .format(creds=creds, port=self.qemu.ssh_port, config=config)) |
| @@ -527,7 +572,7 @@ class SecondaryTests(OESelftestTestCase): | |||
| 527 | if re.search(layer, result.output) is None: | 572 | if re.search(layer, result.output) is None: |
| 528 | # Assume the directory layout for finding other layers. We could also | 573 | # Assume the directory layout for finding other layers. We could also |
| 529 | # make assumptions by using 'show-layers', but either way, if the | 574 | # make assumptions by using 'show-layers', but either way, if the |
| 530 | # layers we need aren't where we expect them, we are out of like. | 575 | # layers we need aren't where we expect them, we are out of luck. |
| 531 | path = os.path.abspath(os.path.dirname(__file__)) | 576 | path = os.path.abspath(os.path.dirname(__file__)) |
| 532 | metadir = path + "/../../../../../" | 577 | metadir = path + "/../../../../../" |
| 533 | self.meta_qemu = metadir + layer | 578 | self.meta_qemu = metadir + layer |
| @@ -554,7 +599,7 @@ class SecondaryTests(OESelftestTestCase): | |||
| 554 | 599 | ||
| 555 | def test_secondary_listening(self): | 600 | def test_secondary_listening(self): |
| 556 | print('Checking aktualizr-secondary service is listening') | 601 | print('Checking aktualizr-secondary service is listening') |
| 557 | stdout, stderr, retcode = self.qemu_command('echo test | nc localhost 9030') | 602 | stdout, stderr, retcode = self.qemu_command('aktualizr-check-discovery') |
| 558 | self.assertEqual(retcode, 0, "Unable to connect to secondary") | 603 | self.assertEqual(retcode, 0, "Unable to connect to secondary") |
| 559 | 604 | ||
| 560 | 605 | ||
| @@ -572,7 +617,7 @@ class PrimaryTests(OESelftestTestCase): | |||
| 572 | if re.search(layer, result.output) is None: | 617 | if re.search(layer, result.output) is None: |
| 573 | # Assume the directory layout for finding other layers. We could also | 618 | # Assume the directory layout for finding other layers. We could also |
| 574 | # make assumptions by using 'show-layers', but either way, if the | 619 | # make assumptions by using 'show-layers', but either way, if the |
| 575 | # layers we need aren't where we expect them, we are out of like. | 620 | # layers we need aren't where we expect them, we are out of luck. |
| 576 | path = os.path.abspath(os.path.dirname(__file__)) | 621 | path = os.path.abspath(os.path.dirname(__file__)) |
| 577 | metadir = path + "/../../../../../" | 622 | metadir = path + "/../../../../../" |
| 578 | self.meta_qemu = metadir + layer | 623 | self.meta_qemu = metadir + layer |
