blob: 999dc0f1763e6205f3115ed7564372492c0f39ae [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import dbus
import json
import logging
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros.tendo import buffet_config
BUFFET_SERVICE_NAME = 'org.chromium.Buffet'
BUFFET_MANAGER_INTERFACE = 'org.chromium.Buffet.Manager'
BUFFET_MANAGER_OBJECT_PATH = '/org/chromium/Buffet/Manager'
class buffet_BasicDBusAPI(test.test):
"""Check that basic buffet daemon DBus APIs are functional."""
version = 1
def run_once(self):
"""Test entry point."""
buffet_config.BuffetConfig().restart_with_config()
bus = dbus.SystemBus()
manager_proxy = dbus.Interface(
bus.get_object(BUFFET_SERVICE_NAME, BUFFET_MANAGER_OBJECT_PATH),
dbus_interface=BUFFET_MANAGER_INTERFACE)
# The test method better work.
test_message = 'Hello world!'
echoed_message = manager_proxy.TestMethod(test_message)
if test_message != echoed_message:
raise error.TestFail('Expected Manager.TestMethod to return %s '
'but got %s instead.' % (test_message,
echoed_message))
# We should get the firmware version right.
expected_version = None
with open('/etc/lsb-release') as f:
for line in f.readlines():
pieces = line.split('=', 1)
if len(pieces) != 2:
continue
key = pieces[0].strip()
if key == 'CHROMEOS_RELEASE_VERSION':
expected_version = pieces[1].strip()
if expected_version is None:
raise error.TestError('Failed to read version from lsb-release')
raw_state = manager_proxy.GetState()
parsed_state = json.loads(raw_state)
logging.debug('%r', parsed_state)
actual_version = parsed_state['base']['firmwareVersion']
if actual_version != expected_version:
raise error.TestFail('Expected firmwareVersion "%s", but got "%s"' %
(expected_version, actual_version))