blob: b94d46d924b90e8a573d88b2ca3d7cdbd214166e [file]
// 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 ui
import (
"context"
"strconv"
"time"
"chromiumos/tast/common/media/caps"
"chromiumos/tast/ctxutil"
"chromiumos/tast/remote/bundles/cros/ui/conference"
"chromiumos/tast/rpc"
pb "chromiumos/tast/services/cros/ui"
"chromiumos/tast/testing"
)
func init() {
testing.AddTest(&testing.Test{
Func: ZoomConfCUJ,
LacrosStatus: testing.LacrosVariantExists,
Desc: "Host a Zoom video conference and do presentation to participants",
Contacts: []string{"jane.yang@cienet.com", "cienet-development@googlegroups.com"},
SoftwareDeps: []string{"chrome", caps.BuiltinOrVividCamera},
ServiceDeps: []string{
"tast.cros.ui.ConferenceService",
},
Data: []string{conference.CameraVideo},
Vars: []string{"ui.use_real_camera"},
Params: []testing.Param{
{
Name: "basic_two",
Timeout: time.Minute * 15,
Val: conference.TestParameters{
Tier: "basic",
Size: conference.TwoRoomSize,
},
}, {
Name: "basic_lacros_two",
Timeout: time.Minute * 15,
ExtraSoftwareDeps: []string{"lacros"},
Val: conference.TestParameters{
Tier: "basic",
Size: conference.TwoRoomSize,
IsLacros: true,
},
}, {
Name: "basic_small",
Timeout: time.Minute * 15,
Val: conference.TestParameters{
Tier: "basic",
Size: conference.SmallRoomSize,
},
}, {
Name: "basic_lacros_small",
Timeout: time.Minute * 15,
ExtraSoftwareDeps: []string{"lacros"},
Val: conference.TestParameters{
Tier: "basic",
Size: conference.SmallRoomSize,
IsLacros: true,
},
}, {
Name: "basic_large",
Timeout: time.Minute * 20,
Val: conference.TestParameters{
Tier: "basic",
Size: conference.LargeRoomSize,
},
}, {
Name: "basic_lacros_large",
Timeout: time.Minute * 20,
ExtraSoftwareDeps: []string{"lacros"},
Val: conference.TestParameters{
Tier: "basic",
Size: conference.LargeRoomSize,
IsLacros: true,
},
}, {
Name: "basic_class",
Timeout: time.Minute * 20,
Val: conference.TestParameters{
Tier: "basic",
Size: conference.ClassRoomSize,
},
}, {
Name: "basic_lacros_class",
Timeout: time.Minute * 20,
ExtraSoftwareDeps: []string{"lacros"},
Val: conference.TestParameters{
Tier: "basic",
Size: conference.ClassRoomSize,
IsLacros: true,
},
}, {
Name: "plus_large",
Timeout: time.Minute * 20,
Val: conference.TestParameters{
Tier: "plus",
Size: conference.LargeRoomSize,
},
}, {
Name: "plus_lacros_large",
Timeout: time.Minute * 20,
ExtraSoftwareDeps: []string{"lacros"},
Val: conference.TestParameters{
Tier: "plus",
Size: conference.LargeRoomSize,
IsLacros: true,
},
}, {
Name: "plus_class",
Timeout: time.Minute * 20,
Val: conference.TestParameters{
Tier: "plus",
Size: conference.ClassRoomSize,
},
}, {
Name: "plus_lacros_class",
Timeout: time.Minute * 20,
ExtraSoftwareDeps: []string{"lacros"},
Val: conference.TestParameters{
Tier: "plus",
Size: conference.ClassRoomSize,
IsLacros: true,
},
}, {
Name: "premium_large",
Timeout: time.Minute * 20,
Val: conference.TestParameters{
Tier: "premium",
Size: conference.LargeRoomSize,
},
}, {
Name: "premium_lacros_large",
Timeout: time.Minute * 20,
ExtraSoftwareDeps: []string{"lacros"},
Val: conference.TestParameters{
Tier: "premium",
Size: conference.LargeRoomSize,
IsLacros: true,
},
},
},
})
}
func ZoomConfCUJ(ctx context.Context, s *testing.State) {
param := s.Param().(conference.TestParameters)
// Shorten ctx to leave time for cleanup.
cleanupCtx := ctx
ctx, cancel := ctxutil.Shorten(ctx, 5*time.Second)
defer cancel()
dut := s.DUT()
c, err := rpc.Dial(ctx, dut, s.RPCHint())
if err != nil {
s.Fatal("Failed to dial to remote dut: ", err)
}
defer c.Close(cleanupCtx)
var remoteCameraVideoPath string
var useRealCamera bool // Default is false.
if val, ok := s.Var("ui.use_real_camera"); ok {
useRealCamera, err = strconv.ParseBool(val)
if err != nil {
s.Fatal("Unable to convert ui.use_real_camera var to bool: ", err)
}
}
// Use fake camera by default.
if !useRealCamera {
remoteCameraVideoPath, err = conference.PushFileToTmpDir(ctx, s, dut, conference.CameraVideo)
if err != nil {
s.Fatal("Failed to push file to DUT's tmp directory: ", err)
}
defer dut.Conn().CommandContext(ctx, "rm", remoteCameraVideoPath).Run()
}
client := pb.NewConferenceServiceClient(c.Conn)
if _, err := client.RunZoomScenario(ctx, &pb.MeetScenarioRequest{
Tier: param.Tier,
RoomSize: int64(param.Size),
ExtendedDisplay: false,
CameraVideoPath: remoteCameraVideoPath,
IsLacros: param.IsLacros,
}); err != nil {
s.Fatal("Failed to run Zoom Scenario: ", err)
}
}