• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2021 The ChromiumOS Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5syntax = "proto3";
6
7package chromiumos.test.lab.api;
8
9option go_package = "go.chromium.org/chromiumos/config/go/test/lab/api";
10
11import "google/protobuf/timestamp.proto";
12
13// Recognized hardware and software features of WiFi router peripherals in
14// our testbeds.
15//
16// This is not an exhaustive list of features supported by these test WiFi
17// routers. The intent is to only track features that may differ between the
18// different types of WiFi router devices in our labs.
19enum WifiRouterFeature {
20  // Features are not known.
21  WIFI_ROUTER_FEATURE_UNKNOWN = 0;
22
23  // Feature was parsed from device, but it did not match any known features.
24  WIFI_ROUTER_FEATURE_INVALID = 1;
25
26  // WiFi 1 (IEEE 802.11a) support.
27  WIFI_ROUTER_FEATURE_IEEE_802_11_A = 2;
28
29  // WiFi 2 (IEEE 802.11b) support.
30  WIFI_ROUTER_FEATURE_IEEE_802_11_B = 3;
31
32  // WiFi 3 (IEEE 802.11g) support.
33  WIFI_ROUTER_FEATURE_IEEE_802_11_G = 4;
34
35  // WiFi 4 (IEEE 802.11n) support.
36  WIFI_ROUTER_FEATURE_IEEE_802_11_N = 5;
37
38  // WiFi 5 (IEEE 802.11ac) support.
39  WIFI_ROUTER_FEATURE_IEEE_802_11_AC = 6;
40
41  // WiFi 6 (IEEE 802.11ax, 2.4GHz, 5GHz) support.
42  WIFI_ROUTER_FEATURE_IEEE_802_11_AX = 7;
43
44  // WiFi 6E (IEEE 802.11ax, 6GHz) support.
45  WIFI_ROUTER_FEATURE_IEEE_802_11_AX_E = 8;
46
47  // WiFi 7 (IEEE 802.11be) support.
48  WIFI_ROUTER_FEATURE_IEEE_802_11_BE = 9;
49
50  // The CPU is fast enough to support a double bridge over veth.
51  WIFI_ROUTER_FEATURE_DOUBLE_BRIDGE_OVER_VETH = 10;
52
53  // GCMP and GCMP-256 pairwise and group cipher support.
54  WIFI_ROUTER_FEATURE_GCMP = 11;
55
56  // SAE-EXT-KEY support for AKM-24/25.
57  WIFI_ROUTER_FEATURE_SAE_EXT_KEY = 12;
58}
59
60// The type of Wifi AP device a WiFi AP peripheral is, functionally speaking.
61enum WifiRouterDeviceType {
62  // Default. Type not yet determined.
63  WIFI_ROUTER_DEVICE_TYPE_UNKNOWN = 0;
64
65  // Attempted to identify device, but automatic identification failed.
66  WIFI_ROUTER_DEVICE_TYPE_INVALID = 1;
67
68  // Google Gale router with a customized ChromeOS image specifically for WiFi
69  // testing with Gales.
70  WIFI_ROUTER_DEVICE_TYPE_CHROMEOS_GALE = 2;
71
72  // WiFi router using an OpenWrt OS image that has been customized for
73  // ChromeOS testing.
74  WIFI_ROUTER_DEVICE_TYPE_OPENWRT = 3;
75
76  // Retail ASUS WiFi router with the ASUSWRT interface.
77  WIFI_ROUTER_DEVICE_TYPE_ASUSWRT = 4;
78
79  // Ubuntu-based device configured to be used as WiFi router (e.g. Intel NUC).
80  WIFI_ROUTER_DEVICE_TYPE_UBUNTU = 5;
81}
82
83// WifiRouterConfig is the format of the Wifi router config JSON file stored in
84// GCS that contains configuration information for all router device types.
85message WifiRouterConfig {
86  // OpenWrt device configs by their device names.
87  map<string, OpenWrtWifiRouterDeviceConfig> openwrt = 1;
88}
89
90// OpenWrtWifiRouterConfig defines which OpenWrt OS image should be used for a
91// given OpenWrt device and DUT ChromeOS release version.
92//
93// Each device has its own set of versions and a pool of DUTs that are always on
94// the next version to assist in its verification.
95message OpenWrtWifiRouterDeviceConfig {
96  // OpenWrtOSImage describes an available OpenWrt OS image.
97  message OpenWrtOSImage {
98    // The unique ID of the image.
99    string image_uuid = 1;
100
101    // The path to the image archive file, relative to the config file this
102    // data was parsed from.
103    string archive_path = 2;
104
105    // The minimum DUT CHROMEOS_RELEASE_VERSION this image should be used with.
106    string min_dut_release_version = 3;
107  }
108
109  // The image that should be used by default.
110  //
111  // If the testbed's DUT does not meet the version requirement of the image,
112  // the image with the highest minimum DUT version requirement that the DUT
113  // meets should be used instead. If the testbed's DUT does not meet any of the
114  // available images' version requirements, the image with the lowest version
115  // requirement should be used.
116  string current_image_uuid = 1;
117
118  // The image that should be used by routers in testbeds whose primary DUT is
119  // in the next_image_verification_dut_pool, irregardless of the image's DUT
120  // version requirement and overriding current_image_uuid for these routers.
121  string next_image_uuid = 2;
122
123  // Wifi routers that are in testbeds with these primary DUT hostnames should
124  // use the next_image_uuid instead of the current_image_uuid for image
125  // selection.
126  repeated string next_image_verification_dut_pool = 3;
127
128  // All available OpenWrt OS images for this build profile.
129  repeated OpenWrtOSImage images = 4;
130}
131
132// OpenWrtImageBuildInfo is the format of the build info JSON file included in
133// in all OpenWrt OS images built for ChromeOS test WiFi routers by the
134// cros_openwrt_image_builder tool.
135//
136// These fields identify the image and describe the deviations made from the
137// official OpenWrt image build profile so that it may be used for test WiFi
138// routers in ChromeOS testbeds.
139message CrosOpenWrtImageBuildInfo {
140  // Build information as returned by the OpenWrt image builder used by
141  // cros_openwrt_image_builder to package the image.
142  message StandardBuildConfig {
143    // The openwrt repository revision used to compile builder.
144    string openwrt_revision = 1;
145
146    // The builders' board build target.
147    string openwrt_build_target = 2;
148
149    // The name of the build profile used to build the image.
150    string build_profile = 3;
151
152    // Human-readable device name, as specified by OpenWrt.
153    //
154    // Expected to be unique by manufacturer, model, and version.
155    string device_name = 4;
156
157    // Default OpenWrt packages included for this build target.
158    repeated string build_target_packages = 5;
159
160    // Package customizations made by the build profile used to build the image.
161    repeated string profile_packages = 6;
162
163    // Devices supported by the build profile used to build the image.
164    repeated string supported_devices = 7;
165  }
166
167  // Useful information describing the image, as parsed from the os-release
168  // file included in the image.
169  message OSRelease {
170    string version = 1;
171    string build_id = 2;
172    string openwrt_board = 3;
173    string openwrt_arch = 4;
174    string openwrt_release = 5;
175  }
176
177  // Unique ID generated for this image.
178  string image_uuid = 1;
179
180  // The custom extra part of the final image name added to the image name
181  // created by the OpenWrt image builder.
182  string custom_image_name = 2;
183
184  OSRelease os_release = 3;
185
186  StandardBuildConfig standard_build_config = 4;
187
188  // The features that devices with this image can support for testing.
189  repeated WifiRouterFeature router_features = 5;
190
191  // The time the image was built.
192  google.protobuf.Timestamp build_time = 6;
193
194  // The version of cros_openwrt_image_builder used to build this image.
195  string cros_openwrt_image_builder_version = 7;
196
197  // Custom files included in the image.
198  //
199  // The key is the path of the file on the device when the image is installed
200  // and the value is a hash of the file contents.
201  map<string, string> custom_included_files = 8;
202
203  // Custom packages included in the image.
204  //
205  // The key is the name of the custom package IPK file and the value is a
206  // hash of the file contents.
207  map<string, string> custom_packages = 9;
208
209  // Names of the official OpenWrt packages included in the image that
210  // supplement the packages included in the official build profile.
211  repeated string extra_included_packages = 10;
212
213  // Names of the official OpenWrt packages that are excluded in the image
214  // that would otherwise be included in the official build profile.
215  repeated string excluded_packages = 11;
216
217  // Names of the services that are disabled by default upon image install.
218  repeated string disabled_services = 12;
219
220  // Names of networking interfaces that are not expected to be removed or
221  // changed by users.
222  repeated string reserved_interfaces = 13;
223}
224