blob: 2b5ff779f601b38893ec1e34a8cef9ae17ddcecd [file] [log] [blame]
# RUN: python %s
import unittest
import logging
import sys
import copy
import tempfile
import io
from lnt.testing.profile.profilev1impl import ProfileV1
from lnt.testing.profile.profile import Profile
logging.basicConfig(level=logging.DEBUG)
class ProfileV1Test(unittest.TestCase):
def setUp(self):
self.test_data = {
'counters': {'cycles': 12345.0, 'branch-misses': 200.0},
'disassembly-format': 'raw',
'functions': {
'fn1': {
'counters': {'cycles': 45.0, 'branch-misses': 10.0},
'data': [
[{}, 0x100000, 'add r0, r0, r0'],
[{'cycles': 100.0}, 0x100004, 'sub r1, r0, r0']
]
}
}
}
def test_serialize(self):
p = ProfileV1(copy.deepcopy(self.test_data))
with tempfile.NamedTemporaryFile() as f:
p.serialize(f.name)
self.assertTrue(ProfileV1.checkFile(f.name))
def test_deserialize(self):
p = ProfileV1(copy.deepcopy(self.test_data))
s = p.serialize()
fobj = io.BytesIO(s)
p2 = ProfileV1.deserialize(fobj)
self.assertEqual(p2.data, self.test_data)
def test_getFunctions(self):
p = ProfileV1(copy.deepcopy(self.test_data))
self.assertEqual(p.getFunctions(),
{'fn1': {'counters': {'cycles': 45.0, 'branch-misses': 10.0},
'length': 2}})
def test_saveFromRendered(self):
p = ProfileV1(copy.deepcopy(self.test_data))
s = Profile(p).render()
with tempfile.NamedTemporaryFile() as f:
Profile.saveFromRendered(s, filename=f.name)
with open(f.name, 'rb') as f2:
p2 = ProfileV1.deserialize(f2)
self.assertEqual(p2.data, self.test_data)
if __name__ == '__main__':
unittest.main(argv=[sys.argv[0], ])