aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Williams <neil.williams@linaro.org>2018-07-25 15:02:17 +0100
committerRĂ©mi Duraffort <remi.duraffort@linaro.org>2018-09-18 17:15:06 +0000
commit0cc3653f99693bf4221e984b8b19393fda09e89e (patch)
tree93f9689031e353c52d9fdb9a27a11939229f7319
parentc6a0bb0e6edd1e70a9542fca0ef9d1e6dbb4cf4c (diff)
Allow LXC for FRDM-K64F IoT device
Provide support for admin operations in an LXC to fix problems when running a lot of IoT jobs. Signed-off-by: Neil Williams <neil.williams@linaro.org>
-rw-r--r--lava_dispatcher/test/pipeline_refs/frdm-k64f-lxc.yaml62
-rw-r--r--lava_dispatcher/test/sample_jobs/frdm-k64f-lxc.yaml97
-rw-r--r--lava_dispatcher/test/test_lxc.py9
-rw-r--r--lava_scheduler_app/tests/device-types/frdm-k64f.jinja22
4 files changed, 170 insertions, 0 deletions
diff --git a/lava_dispatcher/test/pipeline_refs/frdm-k64f-lxc.yaml b/lava_dispatcher/test/pipeline_refs/frdm-k64f-lxc.yaml
new file mode 100644
index 000000000..2174daa1b
--- /dev/null
+++ b/lava_dispatcher/test/pipeline_refs/frdm-k64f-lxc.yaml
@@ -0,0 +1,62 @@
+- class: actions.deploy.lxc.LxcAction
+ name: lxc-deploy
+ pipeline:
+ - {class: actions.deploy.lxc.LxcCreateAction, name: lxc-create-action}
+ - {class: actions.deploy.lxc.LxcCreateUdevRuleAction, name: lxc-create-udev-rule-action}
+ - {class: actions.boot.lxc.LxcStartAction, name: boot-lxc}
+ - {class: actions.deploy.lxc.LxcAptUpdateAction, name: lxc-apt-update}
+ - {class: actions.deploy.lxc.LxcAptInstallAction, name: lxc-apt-install}
+ - {class: actions.boot.lxc.LxcStopAction, name: lxc-stop}
+ - {class: actions.deploy.environment.DeployDeviceEnvironment, name: deploy-device-env}
+ - class: actions.deploy.overlay.OverlayAction
+ name: lava-overlay
+ pipeline:
+ - {class: actions.deploy.overlay.VlandOverlayAction, name: lava-vland-overlay}
+ - {class: actions.deploy.overlay.MultinodeOverlayAction, name: lava-multinode-overlay}
+ - class: actions.deploy.testdef.TestDefinitionAction
+ name: test-definition
+ pipeline:
+ - {class: actions.deploy.testdef.InlineRepoAction, name: inline-repo-action}
+ - {class: actions.deploy.testdef.TestOverlayAction, name: test-overlay}
+ - {class: actions.deploy.testdef.TestInstallAction, name: test-install-overlay}
+ - {class: actions.deploy.testdef.TestRunnerAction, name: test-runscript-overlay}
+ - {class: actions.deploy.overlay.CompressOverlay, name: compress-overlay}
+ - {class: actions.deploy.overlay.PersistentNFSOverlay, name: persistent-nfs-overlay}
+ - {class: actions.deploy.apply_overlay.ApplyLxcOverlay, name: apply-lxc-overlay}
+- class: actions.boot.lxc.BootLxcAction
+ name: lxc-boot
+ pipeline:
+ - {class: actions.boot.lxc.LxcStartAction, name: boot-lxc}
+ - {class: actions.boot.lxc.LxcAddStaticDevices, name: lxc-add-static}
+ - {class: connections.lxc.ConnectLxc, name: connect-lxc}
+ - {class: shell.ExpectShellSession, name: expect-shell-connection}
+ - {class: actions.boot.environment.ExportDeviceEnvironment, name: export-device-env}
+- class: actions.test.shell.TestShellRetry
+ name: lava-test-retry
+ pipeline:
+ - {class: actions.test.shell.TestShellAction, name: lava-test-shell}
+- class: actions.deploy.image.DeployImagesAction
+ name: deployimages
+ pipeline:
+ - class: actions.deploy.download.DownloaderAction
+ name: download-retry
+ pipeline:
+ - {class: actions.deploy.download.HttpDownloadAction, name: http-download}
+- class: actions.boot.cmsis_dap.BootCMSIS
+ name: boot-cmsis
+ pipeline:
+ - class: actions.boot.cmsis_dap.BootCMSISRetry
+ name: boot-cmsis-retry
+ pipeline:
+ - {class: actions.boot.cmsis_dap.FlashCMSISAction, name: flash-cmsis}
+ - {class: utils.udev.WaitUSBSerialDeviceAction, name: wait-usb-serial}
+ - {class: connections.serial.ConnectDevice, name: connect-device}
+- class: actions.test.monitor.TestMonitorRetry
+ name: lava-test-monitor-retry
+ pipeline:
+ - {class: actions.test.monitor.TestMonitorAction, name: lava-test-monitor}
+- class: power.FinalizeAction
+ name: finalize
+ pipeline:
+ - {class: power.PowerOff, name: power-off}
+ - {class: power.ReadFeedback, name: read-feedback}
diff --git a/lava_dispatcher/test/sample_jobs/frdm-k64f-lxc.yaml b/lava_dispatcher/test/sample_jobs/frdm-k64f-lxc.yaml
new file mode 100644
index 000000000..c486e5bc4
--- /dev/null
+++ b/lava_dispatcher/test/sample_jobs/frdm-k64f-lxc.yaml
@@ -0,0 +1,97 @@
+# Zephyr JOB definition for QEMU
+device_type: frdm-k64f
+job_name: frdm-k64f-zephyr-latency-benchmark
+
+timeouts:
+ job:
+ minutes: 6
+ action:
+ minutes: 3
+ actions:
+ wait-usb-device:
+ seconds: 40
+
+priority: medium
+visibility: public
+
+metadata:
+ source: https://git.linaro.org/lava/lava-lab.git
+ path: shared/health-checks/frdm-k64f.yaml
+
+protocols:
+ lava-lxc:
+ name: lxc-frdm-k64f-test
+ template: debian
+ distribution: debian
+ release: stretch
+ mirror: http://mirror.bytemark.co.uk/debian
+
+actions:
+
+- deploy:
+ namespace: tlxc
+ timeout:
+ minutes: 5
+ to: lxc
+ packages:
+ - git
+ - python3
+ - python3-pexpect
+ - telnet
+ os: debian
+
+- boot:
+ namespace: tlxc
+ prompts:
+ - 'root@(.*):'
+ timeout:
+ minutes: 5
+ method: lxc
+
+- test:
+ namespace: tlxc
+ timeout:
+ minutes: 5
+ definitions:
+ - repository:
+ metadata:
+ format: Lava-Test Test Definition 1.0
+ name: apache-server
+ description: "server installation"
+ os:
+ - debian
+ scope:
+ - functional
+ run:
+ steps:
+ - git clone git://git.linaro.org/lava/lava-lab.git
+ - ls -d /lava-*
+ from: inline
+ name: apache-server
+ path: inline/apache-server.yaml
+
+- deploy:
+ namespace: monitor
+ timeout:
+ minutes: 3
+ to: tmpfs
+ images:
+ zephyr:
+ url: http://images.validation.linaro.org/functional-test-images/frdm-k64f/latency_measure/zephyr.bin
+
+- boot:
+ namespace: monitor
+ method: cmsis-dap
+ timeout:
+ minutes: 10
+
+- test:
+ namespace: monitor
+ monitors:
+ - name: tests
+ start: Nanokernel Latency Benchmark
+ end: PROJECT EXECUTION SUCCESSFUL
+ pattern: '(?P<test_case_id>\d+ *- [^-]+) (?P<measurement>\d+) tcs = [0-9]+ nsec'
+ fixupdict:
+ PASS: pass
+ FAIL: fail
diff --git a/lava_dispatcher/test/test_lxc.py b/lava_dispatcher/test/test_lxc.py
index fba6e1230..68867a6b4 100644
--- a/lava_dispatcher/test/test_lxc.py
+++ b/lava_dispatcher/test/test_lxc.py
@@ -250,3 +250,12 @@ class TestLxcWithDevices(StdoutTestCase):
job = self.factory.create_adb_nuc_job('sample_jobs/adb-nuc.yaml')
description_ref = self.pipeline_reference('adb-nuc.yaml', job=job)
self.assertEqual(description_ref, job.pipeline.describe(False))
+
+ def test_iot_lxc(self):
+ self.factory = Factory()
+ job = self.factory.create_job('frdm-k64f-01.jinja2', 'sample_jobs/frdm-k64f-lxc.yaml')
+ job.validate()
+ self.assertIsNotNone([action for action in job.pipeline.actions if action.name == 'lxc-deploy'])
+ self.assertIsNotNone([action for action in job.pipeline.actions if action.name == 'lxc-boot'])
+ description_ref = self.pipeline_reference('frdm-k64f-lxc.yaml', job=job)
+ self.assertEqual(description_ref, job.pipeline.describe(False))
diff --git a/lava_scheduler_app/tests/device-types/frdm-k64f.jinja2 b/lava_scheduler_app/tests/device-types/frdm-k64f.jinja2
index b0dbf4d32..0f304b8ae 100644
--- a/lava_scheduler_app/tests/device-types/frdm-k64f.jinja2
+++ b/lava_scheduler_app/tests/device-types/frdm-k64f.jinja2
@@ -8,6 +8,7 @@ usb_product_id: '0204'
actions:
deploy:
methods:
+ lxc:
image:
parameters:
@@ -16,6 +17,7 @@ actions:
serial:
ssh:
methods:
+ lxc:
pyocd:
parameters:
command: