[openqa-tests] Merge openqa tests from gnome-build-meta
- From: Sam Thursfield <sthursfield src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [openqa-tests] Merge openqa tests from gnome-build-meta
- Date: Tue, 9 Nov 2021 10:56:34 +0000 (UTC)
commit 848af07947f2473a3d71cb2538872024eb51de2c
Author: Sam Thursfield <sam thursfield codethink co uk>
Date: Tue Nov 9 11:48:24 2021 +0100
Merge openqa tests from gnome-build-meta
This have been moved into separate repo, see:
https://gitlab.gnome.org/GNOME/gnome-build-meta/-/issues/453
README.md | 6 ++++++
main.pm | 9 +++++++++
tests/gnome_desktop.pm | 15 +++++++++++++++
tests/gnome_install.pm | 20 ++++++++++++++++++++
tests/gnome_welcome.pm | 30 ++++++++++++++++++++++++++++++
utils/setup_worker.sh | 35 +++++++++++++++++++++++++++++++++++
utils/start_job.sh | 22 ++++++++++++++++++++++
utils/teardown_worker.sh | 10 ++++++++++
utils/wait_for_job.sh | 29 +++++++++++++++++++++++++++++
9 files changed, 176 insertions(+)
---
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a8a6ae7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+# OpenQA testing for GNOME
+
+GNOME has an OpenQA instance here: <https://openqa.gnome.org/>
+
+Documentation can be found here:
+<https://gitlab.gnome.org/GNOME/gnome-build-meta/-/wikis/openqa/OpenQA-for-GNOME-developers>
diff --git a/main.pm b/main.pm
new file mode 100644
index 0000000..b6fbf25
--- /dev/null
+++ b/main.pm
@@ -0,0 +1,9 @@
+use strict;
+use testapi;
+use autotest;
+use needle;
+
+autotest::loadtest "tests/gnome_install.pm";
+autotest::loadtest "tests/gnome_welcome.pm";
+autotest::loadtest "tests/gnome_desktop.pm";
+1;
diff --git a/tests/gnome_desktop.pm b/tests/gnome_desktop.pm
new file mode 100644
index 0000000..16f459b
--- /dev/null
+++ b/tests/gnome_desktop.pm
@@ -0,0 +1,15 @@
+use base 'basetest';
+use strict;
+use testapi;
+
+sub run {
+ my $self = shift;
+ assert_and_click('gnome_desktop_tour', timeout => 60, 'left');
+ assert_screen('gnome_desktop_desktop', 60);
+}
+
+sub test_flags {
+ return { fatal => 1 };
+}
+
+1;
diff --git a/tests/gnome_install.pm b/tests/gnome_install.pm
new file mode 100644
index 0000000..d6c3547
--- /dev/null
+++ b/tests/gnome_install.pm
@@ -0,0 +1,20 @@
+use base 'basetest';
+use strict;
+use testapi;
+
+sub run {
+ my $self = shift;
+ assert_and_click('gnome_install_1', timeout => 120, 'left');
+ assert_and_click('gnome_install_disk', 'left', 10);
+ assert_and_click('gnome_install_disk2', 'left', 10);
+ assert_screen('gnome_install_reformatting1', 120);
+ assert_screen('gnome_install_complete', 120);
+ eject_cd;
+ power('reset');
+}
+
+sub test_flags {
+ return { fatal => 1 };
+}
+
+1;
diff --git a/tests/gnome_welcome.pm b/tests/gnome_welcome.pm
new file mode 100644
index 0000000..d4d7ce6
--- /dev/null
+++ b/tests/gnome_welcome.pm
@@ -0,0 +1,30 @@
+use base 'basetest';
+use strict;
+use testapi;
+
+sub run {
+ my $self = shift;
+ assert_and_click('gnome_firstboot_welcome', timeout => 600, 'left');
+ assert_and_click('gnome_firstboot_language', timeout => 10, 'left');
+ assert_and_click('gnome_firstboot_privacy', timeout => 10, 'left');
+ assert_screen('gnome_firstboot_timezone_1', 30);
+ type_string('London, East');
+ assert_and_click('gnome_firstboot_timezone_2', timeout => 20, 'left');
+ assert_and_click('gnome_firstboot_timezone_3', timeout => 20, 'left');
+ assert_and_click('gnome_firstboot_accounts', timeout => 10, 'left');
+ assert_screen('gnome_firstboot_aboutyou_1', 10);
+ type_string('testuser');
+ assert_and_click('gnome_firstboot_aboutyou_2', timeout => 10, 'left');
+ assert_screen('gnome_firstboot_password_1', 10);
+ type_string('testingtesting123');
+ send_key('tab');
+ type_string('testingtesting123');
+ assert_and_click('gnome_firstboot_password_2', timeout => 10, 'left');
+ assert_and_click('gnome_firstboot_complete', timeout => 10, 'left');
+}
+
+sub test_flags {
+ return { fatal => 1 };
+}
+
+1;
diff --git a/utils/setup_worker.sh b/utils/setup_worker.sh
new file mode 100755
index 0000000..1678c66
--- /dev/null
+++ b/utils/setup_worker.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# Prepare a local OpenQA worker and register it with $OPENQA_HOST.
+#
+# On success, write the machine ID returned by server to stdout.
+
+set -eu
+
+# Unique identifier for this machine, so we can tell the server to schedule
+# tests here.
+worker_class=$1
+
+# Config for local OpenQA worker instance.
+cat >/etc/openqa/workers.ini <<EOF
+[global]
+WORKER_CLASS=$worker_class
+BACKEND = qemu
+HOST = $OPENQA_HOST
+EOF
+
+# Register local worker as a new machine on OpenQA server.
+openqa-cli api --apikey $OPENQA_API_KEY --apisecret $OPENQA_API_SECRET \
+ --host $OPENQA_HOST \
+ -X POST machines/ \
+ name=gitlab-runner-$worker_class \
+ backend=qemu \
+ settings[ARCH]=x86_64 \
+ settings[PART_TABLE_TYPE]=gpt \
+ settings[QEMUCPU]=host \
+ settings[QEMUCPUS]=2 \
+ settings[QEMURAM]=2560 \
+ settings[QEMUVGA]=virtio \
+ settings[UEFI]=1 \
+ settings[UEFI_PFLASH_CODE]=/usr/share/qemu/ovmf-x86_64-code.bin \
+ settings[WORKER_CLASS]=$worker_class | tee --append openqa.log | jq -e .id > /tmp/machine_id
diff --git a/utils/start_job.sh b/utils/start_job.sh
new file mode 100755
index 0000000..05c7229
--- /dev/null
+++ b/utils/start_job.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+# Start job on $OPENQA_HOST.
+#
+# On success, write the job ID returned by server to stdout.
+
+set -eu
+
+worker_class=$1
+version=$2
+
+openqa-cli api --apikey $OPENQA_API_KEY --apisecret $OPENQA_API_SECRET \
+ --host $OPENQA_HOST \
+ -X POST isos \
+ ISO=installer.iso \
+ DISTRI=gnomeos \
+ VERSION=$version \
+ FLAVOR=iso \
+ ARCH=x86_64 \
+ WORKER_CLASS=$worker_class \
+ CASEDIR=$(pwd)/openqa \
+ NEEDLES_DIR=$OPENQA_NEEDLES_GIT#$OPENQA_NEEDLES_SHA | tee --append openqa.log | jq -e .ids[0]
diff --git a/utils/teardown_worker.sh b/utils/teardown_worker.sh
new file mode 100755
index 0000000..9300332
--- /dev/null
+++ b/utils/teardown_worker.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# Delete machine on $OPENQA_HOST.
+
+set -eu
+
+machine_id=$1
+
+openqa-cli api --apikey $OPENQA_API_KEY --apisecret $OPENQA_API_SECRET \
+ --host $OPENQA_HOST -X DELETE machines/${machine_id} | tee --append openqa.log
diff --git a/utils/wait_for_job.sh b/utils/wait_for_job.sh
new file mode 100755
index 0000000..476096b
--- /dev/null
+++ b/utils/wait_for_job.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Block until a job on $OPENQA_HOST completes.
+#
+# Write a status to stdout on completion: 1 if job fails, 0 if job passes.
+
+set -eu
+
+job_id=$1
+
+job_check() {
+ openqa-cli api --apikey $OPENQA_API_KEY \
+ --apisecret $OPENQA_API_KEY \
+ --host $OPENQA_HOST \
+ jobs/${job_id}
+}
+
+state=$(job_check | jq .job.state)
+while [ "$state" != "\"done\"" ]; do sleep 10 && state=$(job_check | jq .job.state); done
+echo >&2 "Tests finished"
+
+result=$(job_check | tee --append openqa.log | jq .job.result)
+if [ "$result" != "\"passed\"" ]; then
+ echo >&2 "Test job ${job_id} *FAILED*"
+ echo 1
+else
+ echo >&2 "Test job ${job_id} *PASSED*"
+ echo 0
+fi
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]