zoombot: zoombot service initial commit

Include readme file and sample configuration file

BUG=b:190150780
TEST=not testable for README and sample configure file

Change-Id: I1b19b3c2fcc8c3cdff95707d1223301f159263b4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crostestutils/+/2939934
Reviewed-by: Vinayak Suley <vsuley@chromium.org>
Tested-by: Xibin Liu <xibin@google.com>
Tested-by: Vinayak Suley <vsuley@chromium.org>
Commit-Queue: Vinayak Suley <vsuley@chromium.org>
diff --git a/provingground/zoombot/README.md b/provingground/zoombot/README.md
new file mode 100644
index 0000000..471e1b8
--- /dev/null
+++ b/provingground/zoombot/README.md
@@ -0,0 +1,89 @@
+# Boombot Service
+
+Zoombot is a test service that can create a conference rooms with the given
+number of participants in the room upon the request from the clients (usually
+test cases). A test case can obtain the conference room URL and join from its
+own test scrips to test the conference room features.
+
+Currently only Zoom conference room is supported.
+
+The zoombot service will be running as a HTTP server and listen on the
+configured IP address and port.
+
+## Build and Run
+
+To build the service, just run "make".
+
+```shell
+> make
+```
+
+A bin directory will be created with an executable "meet-server-headless".
+
+Run the command with "--help" flag to see the help information:
+
+```shell
+bin/meet-server-headless --help
+Usage of bin/meet-server-headless:
+  -conf string
+        meet target browser config file. See examples under conf/ dir.
+  -http-svc-addr string
+        http service listening address (default ":22223")
+```
+
+## API Definition
+
+The test clients can issue test room request with the following HTTP message:
+
+### 1. Request a meeting room
+
+#### Request
+
+```shell
+GET http://<zoombot ip address>:<port>/api/room/zoom/createio?count=<count>&max_duration=<minutes>
+```
+
+Parameters
+
+- count: participant number
+- max_duration: maximum meeting duration in minutes
+
+#### Response Body
+
+```json
+{
+    url: <meeting url>
+    room_id: <room idenfifier>
+    err: <optional error message>
+}
+```
+
+### 2. Request to close the meeting room
+
+#### Request
+
+```shell
+GET http://<zoombot ip address>:<port>/api/room/zoom/endaio?room_id=<room id>
+```
+
+Parameters:
+
+- room_id: The room_id returned from room meeting request.
+
+#### Response Body
+
+```json
+{
+    err: <optional error message>
+}
+```
+
+## HTTP Request Authentication
+
+The HTTP request must include a "Authorization" header with a valid
+authentication token. Authentication tokens are configured in configuration
+file.
+
+```shell
+    Authorization: Bearer <token>
+```
diff --git a/provingground/zoombot/conf/stg-proxy-config.yaml b/provingground/zoombot/conf/stg-proxy-config.yaml
new file mode 100644
index 0000000..be3f76f
--- /dev/null
+++ b/provingground/zoombot/conf/stg-proxy-config.yaml
@@ -0,0 +1,39 @@
+# This is the sample configuration file for meetbot proxy.
+# meetbot proxy accept test request to create meet conference rooms.
+
+# accounts provides a list of accounts used to do meet service login and
+# create / join meeting rooms as participants.
+# There are two login types as indicated by "loginType" tag for each account:
+#   oauth - use google account to do sigle sign-on.
+#   password - zoom account used for zoom direct login.
+accounts:
+  - name: account2@example.com
+    password: pass4account2
+    loginType: oauth
+  - name: account1@example.com
+    password: pass4account1
+    loginType: password
+# instances provides a list of bot servers that host the Chrome browser from
+# which the participants can create / join the meeting.
+# Chrome browser should be running in debugging mode with debugging port
+# provided with the "port" tag
+instances:
+  TINY: # Instances that can run one-to-one conference (2 participants)
+    - ipaddr: 192.168.0.1
+      port: 9222
+    - ipaddr: 192.168.0.2
+      port: 9222
+  SMALL: # Instances that can run small size conference (5 participants)
+    - ipaddr: 192.168.0.3
+      port: 9222
+  LARGE: # Instances that can run large size conference (17 participants)
+    - ipaddr: 192.168.0.4
+      port: 9222
+  CLASS: # Instances that can run class size conference (> 37 participants)
+    - ipaddr: 192.168.0.5
+      port: 9222
+# tokens provide a list of tokens that can be used to authenticate the request.
+# true: token is enabled; false: token is disabled.
+tokens:
+  stg-6d9b28a3-bc10-4389-8ef3-040262b34b04: true
+  stg-39278ce5-cc13-4bce-b054-0177c665a088: false