diff options
Diffstat (limited to 'meta/lib/oeqa/runtime')
-rw-r--r-- | meta/lib/oeqa/runtime/case.py | 8 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/context.py | 69 | ||||
-rw-r--r-- | meta/lib/oeqa/runtime/loader.py | 16 |
3 files changed, 93 insertions, 0 deletions
diff --git a/meta/lib/oeqa/runtime/case.py b/meta/lib/oeqa/runtime/case.py new file mode 100644 index 0000000000..43f1b2f425 --- /dev/null +++ b/meta/lib/oeqa/runtime/case.py | |||
@@ -0,0 +1,8 @@ | |||
1 | # Copyright (C) 2016 Intel Corporation | ||
2 | # Released under the MIT license (see COPYING.MIT) | ||
3 | |||
4 | from oeqa.core.case import OETestCase | ||
5 | |||
6 | class OERuntimeTestCase(OETestCase): | ||
7 | # target instance set by OERuntimeTestLoader. | ||
8 | target = None | ||
diff --git a/meta/lib/oeqa/runtime/context.py b/meta/lib/oeqa/runtime/context.py new file mode 100644 index 0000000000..496730ddbe --- /dev/null +++ b/meta/lib/oeqa/runtime/context.py | |||
@@ -0,0 +1,69 @@ | |||
1 | # Copyright (C) 2016 Intel Corporation | ||
2 | # Released under the MIT license (see COPYING.MIT) | ||
3 | |||
4 | import os | ||
5 | |||
6 | from oeqa.core.context import OETestContext, OETestContextExecutor | ||
7 | from oeqa.core.target.ssh import OESSHTarget | ||
8 | from oeqa.runtime.loader import OERuntimeTestLoader | ||
9 | |||
10 | class OERuntimeTestContext(OETestContext): | ||
11 | loaderClass = OERuntimeTestLoader | ||
12 | |||
13 | def __init__(self, td, logger, target, packages_manifest): | ||
14 | super(OERuntimeTestContext, self).__init__(td, logger) | ||
15 | self.target = target | ||
16 | self.image_packages = self.readPackagesManifest(packages_manifest) | ||
17 | self._set_target_cmds() | ||
18 | |||
19 | def _set_target_cmds(self): | ||
20 | self.target_cmds = {} | ||
21 | |||
22 | self.target_cmds['ps'] = 'ps' | ||
23 | if 'procps' in self.image_packages: | ||
24 | self.target_cmds['ps'] = self.target_cmds['ps'] + ' -ef' | ||
25 | |||
26 | def readPackagesManifest(self, manifest): | ||
27 | if not os.path.exists(manifest): | ||
28 | raise OSError("Couldn't find manifest file: %s" % manifest) | ||
29 | |||
30 | image_packages = set() | ||
31 | with open(manifest, 'r') as f: | ||
32 | for line in f.readlines(): | ||
33 | line = line.strip() | ||
34 | if line and not line.startswith("#"): | ||
35 | image_packages.add(line.split()[0]) | ||
36 | |||
37 | return image_packages | ||
38 | |||
39 | class OERuntimeTestContextExecutor(OETestContextExecutor): | ||
40 | _context_class = OERuntimeTestContext | ||
41 | |||
42 | name = 'runtime' | ||
43 | help = 'runtime test component' | ||
44 | description = 'executes runtime tests over targets' | ||
45 | default_cases = os.path.join(os.path.abspath(os.path.dirname(__file__)), | ||
46 | 'cases') | ||
47 | default_target_ip = '192.168.7.2' | ||
48 | |||
49 | def register_commands(self, logger, subparsers): | ||
50 | super(OERuntimeTestContextExecutor, self).register_commands(logger, subparsers) | ||
51 | self.parser.add_argument('--target-ip', action='store', | ||
52 | default=self.default_target_ip, | ||
53 | help="IP address of device under test, default: %s" \ | ||
54 | % self.default_target_ip) | ||
55 | self.parser.add_argument('--packages-manifest', action='store', | ||
56 | help="Package manifest of the image under test") | ||
57 | |||
58 | def _process_args(self, logger, args): | ||
59 | if not args.packages_manifest: | ||
60 | raise TypeError('Manifest file not provided') | ||
61 | |||
62 | super(OERuntimeTestContextExecutor, self)._process_args(logger, args) | ||
63 | target = OESSHTarget(args.target_ip) | ||
64 | self.tc_kwargs['init']['target'] = target | ||
65 | |||
66 | packages_manifest = os.path.join(os.getcwd(), args.packages_manifest) | ||
67 | self.tc_kwargs['init']['packages_manifest'] = packages_manifest | ||
68 | |||
69 | _executor_class = OERuntimeTestContextExecutor | ||
diff --git a/meta/lib/oeqa/runtime/loader.py b/meta/lib/oeqa/runtime/loader.py new file mode 100644 index 0000000000..041ef976eb --- /dev/null +++ b/meta/lib/oeqa/runtime/loader.py | |||
@@ -0,0 +1,16 @@ | |||
1 | # Copyright (C) 2016 Intel Corporation | ||
2 | # Released under the MIT license (see COPYING.MIT) | ||
3 | |||
4 | from oeqa.core.loader import OETestLoader | ||
5 | from oeqa.runtime.case import OERuntimeTestCase | ||
6 | |||
7 | class OERuntimeTestLoader(OETestLoader): | ||
8 | caseClass = OERuntimeTestCase | ||
9 | |||
10 | def _getTestCase(self, testCaseClass, tcName): | ||
11 | case = super(OERuntimeTestLoader, self)._getTestCase(testCaseClass, tcName) | ||
12 | |||
13 | # Adds custom attributes to the OERuntimeTestCase | ||
14 | setattr(case, 'target', self.tc.target) | ||
15 | |||
16 | return case | ||