Enable itt sanity test that validate itt library enable
code tracing.

Signed-off-by: Yeoh Ee Peng <[email protected]>
---
 lib/oeqa/runtime/cases/itt.py              | 28 ++++++++++++++++++++++++++
 lib/oeqa/runtime/files/itt/itt-sample.c    | 24 ++++++++++++++++++++++
 lib/oeqa/runtime/miutils/tests/itt_test.py | 32 ++++++++++++++++++++++++++++++
 3 files changed, 84 insertions(+)
 create mode 100644 lib/oeqa/runtime/cases/itt.py
 create mode 100644 lib/oeqa/runtime/files/itt/itt-sample.c
 create mode 100644 lib/oeqa/runtime/miutils/tests/itt_test.py

diff --git a/lib/oeqa/runtime/cases/itt.py b/lib/oeqa/runtime/cases/itt.py
new file mode 100644
index 0000000..c630c31
--- /dev/null
+++ b/lib/oeqa/runtime/cases/itt.py
@@ -0,0 +1,28 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.runtime.decorator.package import OEHasPackage
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.miutils.targets.oeqatarget import OEQATarget
+from oeqa.runtime.miutils.tests.itt_test import IttTest
+
+class ITT(OERuntimeTestCase):
+    
+    @classmethod
+    def setUpClass(cls):
+        cls.itt = IttTest(OEQATarget(cls.tc.target))
+        cls.itt.setup()
+
+    @classmethod
+    def tearDownClass(cls):
+        cls.itt.tear_down()
+
+    @OEHasPackage(['itt-staticdev'])
+    @OEHasPackage(['itt-dev'])
+    def test_itt_can_compile_sample(self):
+        (status, output) = self.itt.test_itt_can_compile_sample()
+        self.assertEqual(status, 0, msg='status and output: %s and %s' % 
(status, output))
+
+    @OETestDepends(['itt.ITT.test_itt_can_compile_sample'])
+    def test_itt_can_enable_tracing(self):
+        (status, output) = self.itt.test_itt_can_execute_sample()
+        self.assertEqual(status, 0, msg='status and output: %s and %s' % 
(status, output))
diff --git a/lib/oeqa/runtime/files/itt/itt-sample.c 
b/lib/oeqa/runtime/files/itt/itt-sample.c
new file mode 100644
index 0000000..bda25e9
--- /dev/null
+++ b/lib/oeqa/runtime/files/itt/itt-sample.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <ittnotify.h>
+
+void MyFn(int a)
+{    
+    for (size_t i = 0; i < a; ++i)
+    {        
+        printf("Loop");
+    }
+}
+
+int main()
+{
+    // Create a domain that is visible globally: we will use it in our example.
+    __itt_domain* domain = __itt_domain_create("Example.Domain.Global");
+    // Create string handles which associates with the "main" task.
+    __itt_string_handle* handle_main = __itt_string_handle_create("main");
+    
+    // Build the graph
+    __itt_task_begin(domain, __itt_null, __itt_null, handle_main);
+    MyFn(5);
+    __itt_task_end(domain);
+    return 0;
+}
\ No newline at end of file
diff --git a/lib/oeqa/runtime/miutils/tests/itt_test.py 
b/lib/oeqa/runtime/miutils/tests/itt_test.py
new file mode 100644
index 0000000..8b18e47
--- /dev/null
+++ b/lib/oeqa/runtime/miutils/tests/itt_test.py
@@ -0,0 +1,32 @@
+import os
+script_path = os.path.dirname(os.path.realpath(__file__))
+files_path = os.path.join(script_path, '../../files/')
+
+class IttTest(object):
+    itt_input_files = 'itt-sample.c'
+    itt_files_dir = '/tmp/'
+    itt_target_sample = 'itt-sample'
+
+    def __init__(self, target):
+        self.target = target
+
+    def setup(self):
+        self.target.copy_to(os.path.join(files_path, 'itt', 
self.itt_input_files), self.itt_files_dir)
+
+    def tear_down(self):
+        files = '%s%s %s%s' % (self.itt_files_dir, 
+                               self.itt_input_files, 
+                               self.itt_files_dir, 
+                               self.itt_target_sample) 
+        self.target.run('rm %s' % files)
+
+    def test_itt_can_compile_sample(self):
+        return self.target.run('gcc %s%s -o %s%s -littnotify64 -lpthread -ldl 
%s' % 
+                                (self.itt_files_dir,
+                                self.itt_input_files,
+                                self.itt_files_dir,
+                                self.itt_target_sample,
+                                '-I /usr/include/ittnotify'))
+
+    def test_itt_can_execute_sample(self):
+        return self.target.run('%s%s' % (self.itt_files_dir, 
self.itt_target_sample))
-- 
2.7.4

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#6420): 
https://lists.yoctoproject.org/g/meta-intel/message/6420
Mute This Topic: https://lists.yoctoproject.org/mt/72045571/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-intel/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to