blob: 5bd26af32fa9d7f588feec31f60108511fbfd5b8 [file] [log] [blame]
'''Module that contains the test TestReadGlobal.'''
from harness.test_base_remote import TestBaseRemote
class TestReadGlobal(TestBaseRemote):
'''Tests inspecting global variables of all types.'''
def get_bundle_target(self):
'''Return string with name of bundle executable to run.
Returns:
A string containing the name of the binary that this test can be run
with.
'''
return "KernelVariables"
def _try_inspecting_global(self, global_name, expected_output,
expected_regex=None):
'''Inspect a global and check for the output.
Run the "expr" and "target variable" commands on a given global and
with a given output. (The commands should be equivalent.)
Args:
global_name: String which is the name of the global to inspect.
expected_output: List of strings that should be found in the output.
expected_regex: List of regular expressions that should match lldb's
output.
Raises:
TestFail: One of the lldb commands did not provide the expected
output.
'''
self.try_command('expr ' + global_name,
expected_output,
expected_regex)
self.try_command('target variable ' + global_name,
expected_output,
expected_regex)
def test_case(self, wimpy):
'''Run the lldb commands that are being tested.
Args:
wimpy: Boolean to specify whether only a subset of the commands in
this test should be executed.
Raises:
TestFail: One of the lldb commands did not provide the expected
output.
'''
# pylint: disable=line-too-long
# pylint: disable=too-many-statements
self.try_command('language renderscript status',
['Runtime Library discovered',
'Runtime Driver discovered'])
self.try_command('b -f simple.rs -l 129', [])
self.try_command('process continue',
['resuming',
'stopped',
'stop reason = breakpoint'])
self.try_command('target variable',
['Global variables for',
'librs.simple.so',
"(uchar) uchar_global = '\\xea'",
'(short) short_global = -321',
'(ushort) ushort_global = 432',
'(int) int_global = 1234',
'(uint) uint_global = 2345',
'(float) float_global = 4.5',
'(ulong) ulong_global = 8888',
'(double) double_global = -456.5',
'(char2) char2_global = (11, -22)',
'(uchar2) uchar2_global = (0x21, 0x2c)',
'(short2) short2_global = (-555, 666)',
'(ushort2) ushort2_global = (777, 888)',
'(int2) int2_global = (999, -1111)',
'(uint2) uint2_global = (2222, 3333)',
'(float2) float2_global = (4.5, -5)',
'(long2) long2_global = (-4444, 5555)',
'(ulong2) ulong2_global = (6666, 7777)',
'(double2) double2_global = (88.5, -99)',
'(char3) char3_global = (11, -22, -33,',
'(uchar3) uchar3_global = (0x21, 0x2c, 0x37,',
'(short3) short3_global = (-555, 666, 777,',
'(ushort3) ushort3_global = (777, 888, 999,',
'(int3) int3_global = (999, -1111, 2222,',
'(uint3) uint3_global = (2222, 3333, 4444,',
'(float3) float3_global = (4.5, -5, -6.5,',
'(long3) long3_global = (-4444, 5555, 6666,',
'(ulong3) ulong3_global = (6666, 7777, 8888,',
'(double3) double3_global = (88.5, -99, 111.5,',
'(char4) char4_global = (55, 11, -22, -33)',
'(uchar4) uchar4_global = (0xde, 0x21, 0x2c, 0x37)',
'(short4) short4_global = (-444, -555, 666, 777)',
'(ushort4) ushort4_global = (666, 777, 888, 999)',
'(int4) int4_global = (888, 999, -1111, 2222)',
'(uint4) uint4_global = (1111, 2222, 3333, 4444)',
'(float4) float4_global = (3, 4.5, -5, -6.5)',
'(long4) long4_global = (-3333, -4444, 5555, 6666)',
'(ulong4) ulong4_global = (5555, 6666, 7777, 8888)',
'(double4) double4_global = (-77, 88.5, -99, 111.5)',
'(rs_matrix2x2) matrix2x2_global = (m = (1, 2.5, 3, 4.5))',
'(rs_matrix3x3) matrix3x3_global = {\n'
' m = ([0] = 5, [1] = 6.5, [2] = 7, [3] = 8.5, [4] = 9, [5] = 1.5, [6] = 2, [7] = 3.5, [8] = 4)',
'(rs_matrix4x4) matrix4x4_global = {\n'
' m = {\n'
' [0] = 5.5\n'
' [1] = 6\n'
' [2] = 7.5\n'
' [3] = 8\n'
' [4] = 9\n'
' [5] = 1.5\n'
' [6] = 2\n'
' [7] = 3.5\n'
' [8] = 4.5\n'
' [9] = 5.5\n'
' [10] = 6.5\n'
' [11] = 7\n'
' [12] = 8\n'
' [13] = 9.5\n'
' [14] = 1.5\n'
' [15] = 2.5\n'
' }\n',
'(rs_quaternion) quaternion_global = (4.5, 5.5, 6, 3)'],
[r"\((signed )?char\) char_global = '\\f'",
r'\((long )?long\) long_global = -77777'])
# Use expr to inspect locals
self._try_inspecting_global('char_global',
["'\\f'"],
[r'\((signed )?char\)'])
if not wimpy:
self._try_inspecting_global('uchar_global',
['(uchar)', "'\\xea'"])
self._try_inspecting_global('short_global',
['(short)', '-321'])
self._try_inspecting_global('ushort_global',
['(ushort)', '432'])
self._try_inspecting_global('int_global',
['(int)', '1234'])
self._try_inspecting_global('uint_global',
['(uint)', '2345'])
self._try_inspecting_global('float_global',
['(float)', '4.5'])
self._try_inspecting_global('long_global',
['-77777'],
[r'\((long )?long\)'])
self._try_inspecting_global('ulong_global',
['(ulong)', '8888'])
self._try_inspecting_global('double_global',
['(double)', '-456.5'])
self._try_inspecting_global('char2_global',
['(char2)', '(11, -22)'])
self._try_inspecting_global('uchar2_global',
['(uchar2)', '(0x21, 0x2c)'])
if not wimpy:
self._try_inspecting_global('short2_global',
['(short2)', '(-555, 666)'])
self._try_inspecting_global('ushort2_global',
['(ushort2)', '(777, 888)'])
self._try_inspecting_global('int2_global',
['(int2)', '(999, -1111)'])
self._try_inspecting_global('uint2_global',
['(uint2)', '(2222, 3333)'])
self._try_inspecting_global('float2_global',
['(float2)', '(4.5, -5)'])
self._try_inspecting_global('long2_global',
['(long2)', '(-4444, 5555)'])
self._try_inspecting_global('ulong2_global',
['(ulong2)', '(6666, 7777)'])
self._try_inspecting_global('double2_global',
['(double2)', '(88.5, -99)'])
self._try_inspecting_global('char3_global',
['(char3)',
'(11, -22, -33,'])
self._try_inspecting_global('uchar3_global',
['(uchar3)',
'(0x21, 0x2c, 0x37,'])
self._try_inspecting_global('short3_global',
['(short3)',
'(-555, 666, 777,'])
if not wimpy:
self._try_inspecting_global('ushort3_global',
['(ushort3)',
'(777, 888, 999,'])
self._try_inspecting_global('int3_global',
['(int3)',
'(999, -1111, 2222,'])
self._try_inspecting_global('uint3_global',
['(uint3)',
'(2222, 3333, 4444,'])
self._try_inspecting_global('float3_global',
['(float3)',
'(4.5, -5, -6.5,'])
self._try_inspecting_global('long3_global',
['(long3)',
'(-4444, 5555, 6666,'])
self._try_inspecting_global('ulong3_global',
['(ulong3)',
'(6666, 7777, 8888,'])
self._try_inspecting_global('double3_global',
['(double3)',
'(88.5, -99, 111.5,'])
self._try_inspecting_global('char4_global',
['(char4)',
'(55, 11, -22, -33)'])
self._try_inspecting_global('uchar4_global',
['(uchar4)',
'(0xde, 0x21, 0x2c, 0x37)'])
self._try_inspecting_global('short4_global',
['(short4)',
'(-444, -555, 666, 777)'])
self._try_inspecting_global('ushort4_global',
['(ushort4)',
'(666, 777, 888, 999)'])
if not wimpy:
self._try_inspecting_global('int4_global',
['(int4)',
'(888, 999, -1111, 2222)'])
self._try_inspecting_global('uint4_global',
['(uint4)',
'(1111, 2222, 3333, 4444)'])
self._try_inspecting_global('float4_global',
['(float4)',
'(3, 4.5, -5, -6.5)'])
self._try_inspecting_global('long4_global',
['(long4)',
'(-3333, -4444, 5555, 6666)'])
self._try_inspecting_global('ulong4_global',
['(ulong4)',
'(5555, 6666, 7777, 8888)'])
self._try_inspecting_global('double4_global',
['(double4)',
'(-77, 88.5, -99, 111.5)'])
self._try_inspecting_global('matrix2x2_global',
['(rs_matrix2x2)',
'= (m = (1, 2.5, 3, 4.5))'])
self._try_inspecting_global('matrix3x3_global',
['(rs_matrix3x3)',
'= {\n'
' m = ([0] = 5, [1] = 6.5, [2] = 7, [3] = 8.5, [4] = 9, [5] = 1.5, [6] = 2, [7] = 3.5, [8] = 4)'])
self._try_inspecting_global('matrix4x4_global',
['(rs_matrix4x4)',
'= {\n'
' m = {\n'
' [0] = 5.5\n'
' [1] = 6\n'
' [2] = 7.5\n'
' [3] = 8\n'
' [4] = 9\n'
' [5] = 1.5\n'
' [6] = 2\n'
' [7] = 3.5\n'
' [8] = 4.5\n'
' [9] = 5.5\n'
' [10] = 6.5\n'
' [11] = 7\n'
' [12] = 8\n'
' [13] = 9.5\n'
' [14] = 1.5\n'
' [15] = 2.5\n'
' }\n'])
self._try_inspecting_global('quaternion_global',
['(rs_quaternion)',
'(4.5, 5.5, 6, 3)'])