[smoke_test] Updated to support commands used in fuchsia.dev guides

Change-Id: I6ddd08998d929c9bb16c87f726c5bcc65ecaeba3
Reviewed-on: https://fuchsia-review.googlesource.com/c/sdk-samples/drivers/+/738544
Reviewed-by: Renato Mangini Dias <mangini@google.com>
Commit-Queue: Wayne Piekarski <waynepie@google.com>
diff --git a/scripts/smoke_test.sh b/scripts/smoke_test.sh
index 4ccbbb9..283a58d 100755
--- a/scripts/smoke_test.sh
+++ b/scripts/smoke_test.sh
@@ -6,7 +6,7 @@
 
 
 # Run this from the root of the repo with `scripts/smoke_test.sh`
-set -e
+set -e -o pipefail
 
 emu_name=_smoke_test
 
@@ -69,10 +69,13 @@
 
   # build all samples in this repository
   print_and_run tools/bazel build src:samples_repository
+  # other build commands in https://fuchsia.dev/fuchsia-src/get-started/sdk/get-started-with-driver
+  print_and_run tools/bazel build --config=fuchsia_x64 //src/qemu_edu/drivers:qemu_edu
 
   bootstrap_ssh
 
   print_and_run tools/ffx doctor --restart-daemon
+  print_and_run tools/ffx sdk version
 
   current_target="$(tools/ffx target default get)"
 
@@ -94,6 +97,9 @@
 
   wait_for_emu_rcs
 
+  # CQ actually uses mawk and not awk or gawk, so does not support symbols in search string
+  check_output() { awk -v SEARCH="$@" '$0 ~ SEARCH{rc=1; print "Found match: "$0}{print $0}; END{exit !rc}' || { echo "Failed to find expected string: $@"; exit 1; } }
+
   # start the package server
   print_and_run tools/ffx repository server start
 
@@ -103,14 +109,15 @@
   print_and_run tools/ffx target default set $emu_name
 
   # register the package repository with on-demand prebuilt packages
-  print_and_run tools/ffx target repository register -r $repo_name --alias fuchsia.com
+  print_and_run tools/ffx target repository register -r $repo_name --alias fuchsia.com --alias chromium.org
+  print_and_run tools/ffx repository list
 
   # register a driver and verify that it registered succesfully
-  print_and_run tools/bazel run src/qemu_edu/drivers:pkg.component
+  print_and_run tools/bazel run src/qemu_edu/drivers:pkg.component | check_output "Node 'root.sys.platform.platform-passthrough.PCI0.bus.00_06_0_.pci-00_06.0-fidl'"
 
   # wait for driver to load
   sleep 1
-  print_and_run tools/ffx driver list --loaded | grep qemu_edu
+  print_and_run tools/ffx driver list --loaded | check_output "qemu_edu"
 
   # interact with driver
   print_and_run tools/bazel run src/qemu_edu/tools:pkg.eductl_tool -- fact 12
@@ -118,6 +125,23 @@
   # run tests on the emulator
   print_and_run tools/bazel test src/qemu_edu/tests:pkg
 
+  # other run commands in https://fuchsia.dev/fuchsia-src/get-started/sdk/get-started-with-driver
+  print_and_run tools/bazel run --config=fuchsia_x64 //src/qemu_edu/drivers:pkg.component | check_output "No new nodes were bound"
+  print_and_run tools/bazel run --config=fuchsia_x64 //src/qemu_edu/tools:pkg.eductl_tool -- live
+  # TODO: fxb/113254     | check_output "Liveness check passed"
+  print_and_run tools/bazel run --config=fuchsia_x64 //src/qemu_edu/tools:pkg.eductl_tool -- fact 12
+  # TODO: fxb/113254     | check_output "479001600"
+  print_and_run tools/ffx component show qemu_edu.cm | check_output "Moniker:  /bootstrap/universe-pkg-drivers:root.sys.platform.platform-passthrough.PCI0.bus.00_06_0_.pci-00_06.0-fidl"
+  print_and_run tools/ffx driver list-devices | check_output "root.sys.platform.platform-passthrough.PCI0.bus.00_06_0"
+  print_and_run tools/ffx driver list-devices root.sys.platform.platform-passthrough.PCI0.bus.00_06_0_ --verbose | check_output "Name     : 00_06_0_"
+  print_and_run tools/ffx driver list-hosts | check_output "fuchsia-pkg://bazel.pkg.component/qemu_edu#meta/qemu_edu.cm"
+  print_and_run tools/ffx driver lspci | check_output "Host bridge:"
+  # check debugging tools work
+  test_zxdb() { echo quit | tools/ffx debug connect; }
+  print_and_run test_zxdb | check_output "Connected successfully"
+  test_fidlcat() { timeout 10s tools/ffx debug fidl --remote-name qemu_edu.cm --fidl-ir-path bazel-out/ || if [ "$?" != "124" ]; then /bin/false; fi; }
+  print_and_run test_fidlcat
+
   echo "Success!"
 }