server test using servod have error starting servod
Reported by
chasing....@gmail.com,
Nov 27
|
|||
Issue description
What I did:
1. add servo_host and servo_port attribute to DUT, the description of DUT looks like this:
4k_video_h264, 4k_video_vp8, 4k_video_vp9, accel:cros-ec, arc, bluetooth, board:nocturne, cr50:prepvt, cros-version:nocturne-release/R72-11256.0.0, cts_abi_arm, cts_abi_x86, detachablebase, ec:cros, hw_jpeg_acc_dec, hw_jpeg_acc_enc, hw_video_acc_enc_h264, hw_video_acc_enc_vp8, hw_video_acc_h264, hw_video_acc_vp8, hw_video_acc_vp9, hw_video_acc_vp9_2, internal_display, lightsensor, model:nocturne, nocturne, os:cros, pool:suites, power:battery, servo, sparse_coverage_2, sparse_coverage_3, storage:mmc, ATTR:(HWID=NOCTURNE TEST 3421), ATTR:(job_repo_url=http://192.168.231.1:8080/static/nocturne-release/R72-11256.0.0/autotest/packages), ATTR:(servo_host=localhost), ATTR:(servo_port=9999)
2. use autotest web frontend UI to start the test. Select "server side ssp".
The control file after args injection looks like this:
# INJECT_BEGIN - DO NOT DELETE THIS LINE
test='power_Dummy'
args_dict={'test': 'power_Dummy'}
# INJECT_END - DO NOT DELETE LINE
def step_init():
step0()
def step0():
# Copyright 2018 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.
from autotest_lib.server import utils
AUTHOR = "Chrome OS Team"
NAME = "power_ServoV4ChargeWrapper"
PURPOSE = "Use Servo v4 to control charging / discharging the DUT"
CRITERIA = ""
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "power"
TEST_TYPE = "server"
DEPENDENCIES = "servo"
DOC = """
DUT is connected to Servo v4 via USB type-C, and Servo v4 is connected to AC
power.
Sample usage:
test_that <ip address of DUT> power_ServoV4ChargeWrapper \
--args 'servo_host=localhost servo_port=9999 test=power_Dummy'
What are the parameters:
test: the client test to run in wrapper test; required.
servo_host: host of servod instance; required.
servo_port: port that the servod instance is on; required.
"""
args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
def run(machine):
host = hosts.create_host(machine, servo_args=servo_args)
job.run_test("power_ServoV4ChargeWrapper", host=host, config=args_dict)
parallel_simple(run, machines)
step_init()
3. The physical setup is:
moblab -> ethernet -> access point -> wifi -> DUT
and
moblab -> USB -> servo v4 -> USB-C -> DUT
and
AC power -> USB-C -> servo v4 (same one as above) -> USB-C (same one as above) -> DUT (same one as above)
What I expect:
Both autoserv stage and test stage should work.
What I get:
Autoserv fails.
Logs attached.
,
Nov 27
re: Since moblab checks for AC before every test Can this be configurable as well? IMO, it should be.
,
Nov 27
It looks like it is trying to do a repair on 192.168.231.1. Possibly some configuration is wrong. Can you try to do that sample usage from the control file? test_that <ip address of DUT> power_ServoV4ChargeWrapper \ --args 'servo_host=localhost servo_port=9999 test=power_Dummy'
,
Nov 27
I want to double check that all the servo related setting are ok in my moblab configurations. Here are my current settings (mostly default, don't remember changing anything): servo_board: beaglebone_servo enable_ssh_tunnel_for_servo: False auto_start_servod: True Particularly, I wonder if servo_board should be beaglebone_servo, because beaglebone_servo (servo v3) has its own beaglebone, which hosts the servod. I wonder if this makes moblab try to ssh into 192.168.231.1 (localhost).
,
Nov 27
I don't know what the values should be, but I wouldn't assume those are correct just because they are the default. We don't really use servos on moblab that often, so it's possible the defaults are out of date. faft was the main use case but they switched to workstations.
,
Nov 27
What do you mean by "they switched to workstations"?
,
Nov 27
Firmware dev team uses linux workstations to run faft tests now instead of moblab.
,
Nov 27
Any particular reason? I would love to know what configuration they use to have. Anyone I can talk to about? I really need to have servod on moblab, so I would definitely want to see this working.
,
Nov 27
Servod is only fully supported ToT, but moblab ships with stable version code, so it is perpetually ~2 releases behind. I don't have any names for you, but I would assume whoever wrote the servo_host code would be a good start. Keith will be back from vacation Thursday, he may know.
,
Nov 28
Can't we just install ToT on our moblab device? gsutil ls -al gs://chromeos-releases/dev-channel/guado-moblab/11302.0.0
,
Nov 28
Re #10, servod exists, just not the newest.
,
Nov 28
Sure you can run a dev build of moblab, but we only support the current stable. It's not guaranteed that everything will work. Partners are required to run on stable channel. This is why Keith is working to get servod to run inside a container, so we can decouple servod updates from moblab updates.
,
Nov 28
I ran test again with the following setup:
1. No attribute on the DUT
2. Injected control file looks like this:
# INJECT_BEGIN - DO NOT DELETE THIS LINE
test='power_Dummy'
servo_port='9999'
servo_host='localhost'
args_dict={'test': 'power_Dummy', 'servo_port': '9999', 'servo_host': 'localhost'}
# INJECT_END - DO NOT DELETE LINE
def step_init():
step0()
def step0():
# Copyright 2018 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.
from autotest_lib.server import utils
AUTHOR = "Chrome OS Team"
NAME = "power_ServoV4ChargeWrapper"
PURPOSE = "Use Servo v4 to control charging / discharging the DUT"
CRITERIA = ""
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "power"
TEST_TYPE = "server"
DEPENDENCIES = "servo"
DOC = """
DUT is connected to Servo v4 via USB type-C, and Servo v4 is connected to AC
power.
Sample usage:
test_that <ip address of DUT> power_ServoV4ChargeWrapper \
--args 'servo_host=localhost servo_port=9999 test=power_Dummy'
What are the parameters:
test: the client test to run in wrapper test; required.
servo_host: host of servod instance; required.
servo_port: port that the servod instance is on; required.
"""
args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
def run(machine):
host = hosts.create_host(machine, servo_args=servo_args)
job.run_test("power_ServoV4ChargeWrapper", host=host, config=args_dict)
parallel_simple(run, machines)
step_init()
3. no ssp
And the error I got is power_ServoV4ChargeWrapper: test does not exist
,
Dec 8
,
Jan 11
This issue has an owner, a component and a priority, but is still listed as untriaged or unconfirmed. By definition, this bug is triaged. Changing status to "assigned". Please reach out to me if you disagree with how I've done this. |
|||
►
Sign in to add a comment |
|||
Comment 1 by mqg@chromium.org
, Nov 27Labels: -Pri-3 Pri-1
Owner: haddowk@chromium.org