Add expect_match function to simplify tests

Change-Id: I1bbf9546ac09a46972a176f3a2f8efb420283a69
diff --git a/setup.sh b/setup.sh
index a8e58f3..08c3fd1 100644
--- a/setup.sh
+++ b/setup.sh
@@ -326,6 +326,32 @@
     fi
 fi
 
+## Watch a file for a pattern and exit when matched or timed out
+function expect_match
+{
+    local log_path="$(realpath $1)"
+    local match_string="$2"
+    local timeout="$3"
+
+    local usage="Usage: expect_match <file path> <pattern> [timeout]
+    filepath: Path to file to search
+    pattern: grep regexp pattern
+    timeout: optional timeout, defaults to 30s"
+
+    if [[ -z "${log_path}" ]]; then
+        echo usage
+        return 1
+    fi
+
+    if [[ -z "${timeout}" ]]; then
+        timeout="30s"
+    fi
+
+    echo "Watching for ${match_string} in ${log_path}"
+    timeout "${timeout}" bash -c "until grep -q -e \"${match_string}\" \"${log_path}\"; do sleep 1; done"
+}
+
+
 # Explicitly set the variables to run the venv python interpreter.
 export PATH="${PYTHON_SHODAN_ENV}/bin:${PATH}"
 export VIRTUAL_ENV="${PYTHON_SHODAN_ENV}"