| // Copyright 2021 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package nearbyshare |
| |
| import ( |
| "context" |
| "strconv" |
| "time" |
| |
| "chromiumos/tast/common/android/adb" |
| localadb "chromiumos/tast/local/android/adb" |
| "chromiumos/tast/local/chrome/nearbyshare/nearbysnippet" |
| "chromiumos/tast/testing" |
| ) |
| |
| func init() { |
| testing.AddTest(&testing.Test{ |
| Func: SmokeSnippetLibrary, |
| Desc: "Checks that we can successfully run the Nearby Snippet on the Android device", |
| Contacts: []string{ |
| "chromeos-sw-engprod@google.com", |
| }, |
| Attr: []string{"group:nearby-share"}, |
| // TODO(crbug/1127165) Move to fixture when data is available. |
| // nearbysnippet.AccountUtilZip is required for the transfer tests to work right now. |
| // They all use fixtures, which cannot load data files. The fixture tries to use the account util in its setup, |
| // but is unable to find the data file because the fixture setup runs before the tests can download their data files. |
| // This test always runs first, though, so we can include it here so it will be available for the fixture setup. |
| Data: []string{nearbysnippet.ZipName, nearbysnippet.AccountUtilZip}, |
| // This var can be used when running locally on non-rooted devices which |
| // have already overridden the GMS Core flags by other means. |
| Vars: []string{"rooted"}, |
| }) |
| } |
| |
| // SmokeSnippetLibrary tests that we can successfully start and interact with the Nearby Snippet on the Android device. |
| func SmokeSnippetLibrary(ctx context.Context, s *testing.State) { |
| // This loads the ARC adb vendor key, which must be pre-loaded on the Android device to allow adb over usb without requiring UI interaction. |
| if err := localadb.LaunchServer(ctx); err != nil { |
| s.Fatal("Failed to launch adb server: ", err) |
| } |
| |
| // Wait for the first available device, since we are assuming only a single device is connected. |
| testDevice, err := adb.WaitForDevice(ctx, func(device *adb.Device) bool { return true }, 10*time.Second) |
| if err != nil { |
| s.Fatal("Failed to list adb devices: ", err) |
| } |
| |
| // Launch and start the Snippet. Don't override GMS Core flags on a non-rooted device. |
| override := true |
| if val, ok := s.Var("rooted"); ok { |
| b, err := strconv.ParseBool(val) |
| if err != nil { |
| s.Fatal("Unable to convert rooted var to bool: ", err) |
| } |
| override = b |
| } |
| |
| androidNearby, err := nearbysnippet.New(ctx, testDevice, s.DataPath(nearbysnippet.ZipName), override) |
| if err != nil { |
| s.Fatal("Failed to set up the snippet server: ", err) |
| } |
| defer androidNearby.Cleanup(ctx) |
| |
| if err := androidNearby.Initialize(ctx); err != nil { |
| s.Fatal("Failed to initialize snippet server: ", err) |
| } |
| |
| version, err := androidNearby.GetNearbySharingVersion(ctx) |
| if err != nil { |
| s.Fatal("Failed to get Android's Nearby Share version: ", err) |
| } |
| s.Log("Successfully got Android Nearby Share version: ", version) |
| } |