test_dynamic.py revision fb8fa1aab48d9731010f1d46a2c426582b1bd0a8
1fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# $Copyright:
2fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# ----------------------------------------------------------------
3fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# This confidential and proprietary software may be used only as
4fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# authorised by a licensing agreement from ARM Limited
5fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh#  (C) COPYRIGHT 2015 ARM Limited
6fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh#       ALL RIGHTS RESERVED
7fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# The entire notice above must be reproduced on all authorised
8fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# copies and copies may only be made to the extent permitted
9fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# by a licensing agreement from ARM Limited.
10fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# ----------------------------------------------------------------
11fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# File:        tests_dynamic.py
12fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# ----------------------------------------------------------------
13fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh# $
14fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh#
15fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
16fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singhimport unittest
17fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singhimport matplotlib
18fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singhfrom test_sched import BaseTestSched
19fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singhfrom cr2.base import Base
20fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singhimport cr2
21fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
22fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
23fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singhclass DynamicEvent(Base):
24fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
25fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    """Test the ability to register
26fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh       specific classes to cr2"""
27fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
28fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    unique_word = "dynamic_test_key"
29fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    name = "dynamic_event"
30fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
31fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    def __init__(self, path=None):
32fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        super(DynamicEvent, self).__init__(
33fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh            basepath=path,
34fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh            unique_word=self.unique_word,
35fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        )
36fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
37fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
38fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singhclass TestDynamicEvents(BaseTestSched):
39fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
40fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    def __init__(self, *args, **kwargs):
41fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        super(TestDynamicEvents, self).__init__(*args, **kwargs)
42fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
43fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    def test_dynamic_data_frame(self):
44fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        """
45fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh           Test if the dynamic events are populated
46fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh           in the data frame
47fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        """
48fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        cr2.register_dynamic("DynamicEvent", "dynamic_test_key")
49fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        r = cr2.Run(name="first")
50fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        self.assertTrue(len(r.dynamic_event.data_frame) == 1)
51fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
52fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    def test_dynamic_class_attr(self):
53fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        """
54fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh           Test the attibutes of the dynamically
55fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh           generated class
56fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        """
57fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        cls = cr2.register_dynamic("DynamicEvent", "dynamic_test_key")
58fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        self.assertEquals(cls.__name__, "DynamicEvent")
59fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        self.assertEquals(cls.name, "dynamic_event")
60fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        self.assertEquals(cls.unique_word, "dynamic_test_key")
61fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
62fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    def test_dynamic_event_plot(self):
63fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        """Test if plotter can accept a dynamic class
64fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh            for a template argument"""
65fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
66fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        cls = cr2.register_dynamic("DynamicEvent", "dynamic_test_key")
67fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        r = cr2.Run(name="first")
68fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        l = cr2.LinePlot(r, cls, column="load")
69fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        l.view()
70fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        matplotlib.pyplot.close('all')
71fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
72fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    def test_dynamic_event_scope(self):
73fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh	"""Test the case when an "all" scope class is
74fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh	registered. it should appear in both thermal and sched
75fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh	run class definitions when scoped run objects are created
76fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh	"""
77fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        cls = cr2.register_dynamic("DynamicEvent", "dynamic_test_key")
78fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        r1 = cr2.Run(name="first")
79fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh	print r1.class_definitions
80fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh	self.assertTrue(r1.class_definitions.has_key(cls.name))
81fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh
82fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh    def test_register_class(self):
83fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        cr2.register_class(DynamicEvent)
84fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        r = cr2.Run(name="first")
85fb8fa1aab48d9731010f1d46a2c426582b1bd0a8Kapileshwar Singh        self.assertTrue(len(r.dynamic_event.data_frame) == 1)
86