buildframework/helium/sf/python/pythoncore/lib/ats3/testconfigurator.py
author wbernard
Thu, 22 Jul 2010 17:08:43 +0300
branchhelium-9.0
changeset 618 df88fead2976
parent 587 85df38eb4012
child 588 c7c26511138f
permissions -rw-r--r--
helium_9.0.5-4399343f4f50
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     1
# -*- encoding: latin-1 -*-
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     3
#============================================================================ 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     4
#Name        : testconfigurator.py 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     5
#Part of     : Helium 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     6
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     7
#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     8
#All rights reserved.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     9
#This component and the accompanying materials are made available
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    10
#under the terms of the License "Eclipse Public License v1.0"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    11
#which accompanies this distribution, and is available
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    12
#at the URL "http://www.eclipse.org/legal/epl-v10.html".
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    13
#
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    14
#Initial Contributors:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    15
#Nokia Corporation - initial contribution.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    16
#
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    17
#Contributors:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    18
#
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    19
#Description:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    20
#===============================================================================
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    21
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    22
"""Parse Symbian SW component for ATS3 testing related information"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    23
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    24
# pylint: disable-msg=R0902,R0912,R0901,R0915,R0201
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    25
#R* remove during refactoring
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    26
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    27
from path import path # pylint: disable-msg=F0401
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    28
import ats3.parsers as parser
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    29
import logging
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    30
import os
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    31
import subprocess
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    32
import fileutils
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    33
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    34
_logger = logging.getLogger('ats')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    35
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    36
class Ats3ComponentParser(object):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    37
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    38
    Parse Symbian SW component for ATS3 testing related information.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    39
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    40
    Parses a component's source directories for testing related settings and
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    41
    files, and generates a TestPlan out of the findings.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    42
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    43
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    44
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    45
    def __init__(self, config):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    46
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    47
        self.target_platform = config.target_platform
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    48
        self.pkg_parser = parser.PkgFileParser(self.target_platform.replace(" ", "_")+".pkg", config.specific_pkg)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    49
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    50
        self.bld_parser = parser.BldFileParser()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    51
        self.mmp_parser = parser.MmpFileParser()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    52
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    53
        self.data_dirs = config.data_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    54
        self.flash_images = [path(p) for p in config.flash_images]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    55
        self.tsrc_dir = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    56
        self.build_drive = config.build_drive
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    57
        self.target_platform = config.target_platform
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
        self.sis_files = config.sis_files
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    59
        self.cfg_harness = config.harness
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
        self.test_timeout = config.test_timeout
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    61
        self.trace_enabled = config.trace_enabled
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
        self.excludable_dlls = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    63
        self.custom_dir = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    64
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    65
    def insert_testset_stif(self, src_dst, pkg_paths):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    66
        """Inserts test set data to test plan for stif"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    67
        if not pkg_paths:    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    68
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    69
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    70
                tsrc_testdata_files = self.tsrc_data_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    71
                for data_file in tsrc_testdata_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    72
                    if "\\mmc\\" in data_file.lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    73
                        src_dst.append((data_file, path(r"e:\testing\data").joinpath(data_file.name), "data"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    74
                    elif "\\c\\" in data_file.lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    75
                        src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    76
                    else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    77
                        src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    78
            except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    79
                _logger.warning("No testdata folder" )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    80
                tsrc_testdata_files = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    81
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    82
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    83
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    84
                src_dst = pkg_paths
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    85
            except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    86
                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    87
                src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    88
            except IndexError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    89
                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    90
                src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    91
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    92
        return src_dst
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    93
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    94
    def insert_test_set(self, test_plan, tsrc_dir, _paths_dict_):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    95
        """Parse tsrc directory, storing data into the test plan."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    96
        self.tsrc_dir = path(tsrc_dir)  # Store current test source dir.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    97
        tsrc_testdata_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    98
        tsrc_config_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    99
        self.custom_dir = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   100
        engine_ini_file = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   101
        test_harness = self.cfg_harness
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   102
        src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   103
        pmd_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   104
        trace_activation_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   105
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   106
        if not os.path.exists( self.tsrc_dir ):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   107
            _logger.error("Missing test source directory: %s", self.tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   108
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   109
            self.custom_dir = self.tsrc_dir.joinpath("custom")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   110
            _logger.debug("using customized testing from %s" % self.custom_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   111
            if os.path.exists(self.tsrc_bld_dir.joinpath("group","bld.inf")):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   112
                mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("group","bld.inf"))                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   113
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   114
                mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("bld.inf"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   115
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   116
            test_harness = self.mmp_parser.get_harness(mmp_files)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   117
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   118
            pkg_paths = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   119
            if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   120
                try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   121
                    pmd_files = self.tsrc_pmd_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   122
                except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   123
                    _logger.warning("No pmd file in output-folder.")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   124
                try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   125
                    trace_activation_files = self.tsrc_trace_activation_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   126
                except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   127
                    _logger.warning("No trace activation files in trace init folder")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   128
                if trace_activation_files and not pmd_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   129
                    _logger.warning("Trace activation files available but NOT pmd file.")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   130
                elif pmd_files and not trace_activation_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   131
                    _logger.warning("Pmd file available but NO trace activation files.")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   132
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   133
            if test_harness == "STIF" or test_harness == "STIFUNIT" or test_harness == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   134
                src_dst = self.insert_testset_stif(src_dst, pkg_paths)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   135
                        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   136
            elif test_harness == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   137
                try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   138
                    src_dst  = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   139
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   140
                except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   141
                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   142
                    src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   143
                except IndexError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   144
                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   145
                    src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   146
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   147
                testmodule_files = self.tsrc_dll_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   148
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   149
                for dll_file in testmodule_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   150
                    if not self.check_dll_duplication(dll_file.name, src_dst):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   151
                        _dll_type_ = self.mmp_parser.get_dll_type(self.tsrc_bld_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   152
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   153
                        if dll_file.name in self.excludable_dlls:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   154
                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "data:%s" % _dll_type_))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   155
                        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   156
                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "testmodule"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   157
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   158
            except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   159
                _logger.warning("No dll files in dll folders" )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   160
                tsrc_testdata_files = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   161
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   162
            if test_plan['multiset_enabled'] == 'True':
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   163
                backup = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   164
                temp_src_dst = {}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   165
                for x_temp in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   166
                    if len(x_temp) < 4:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   167
                        backup.append(x_temp)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   168
                for x_temp in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   169
                    if len(x_temp) > 3:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   170
                        if temp_src_dst.has_key(x_temp[3]):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   171
                            temp_src_dst[x_temp[3]].append(x_temp)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   172
                        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   173
                            temp_src_dst[x_temp[3]] = [x_temp] + backup
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   174
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   175
                for pkg in temp_src_dst.keys():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   176
                    src_dst = temp_src_dst[pkg]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   177
                    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   178
                    if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   179
                        test_plan.insert_set(data_files=tsrc_testdata_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   180
                                             config_files=tsrc_config_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   181
                                             engine_ini_file=engine_ini_file,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   182
                                             image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   183
                                             sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   184
                                             #testmodule_files=self.tsrc_dll_files(),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   185
                                             test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   186
                                             test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   187
                                             src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   188
                                             pmd_files=pmd_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   189
                                             trace_activation_files=trace_activation_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   190
                                             custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   191
                                             component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   192
                    else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   193
                        test_plan.insert_set(image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   194
                                             sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   195
                                             test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   196
                                             test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   197
                                             src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   198
                                             custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   199
                                             component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   200
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   201
                if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   202
                    test_plan.insert_set(data_files=tsrc_testdata_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   203
                                         config_files=tsrc_config_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   204
                                         engine_ini_file=engine_ini_file,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   205
                                         image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   206
                                         sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   207
                                         #testmodule_files=self.tsrc_dll_files(),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   208
                                         test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   209
                                         test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   210
                                         src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   211
                                         pmd_files=pmd_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   212
                                         trace_activation_files=trace_activation_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   213
                                         custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   214
                                         component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   215
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   216
                    test_plan.insert_set(image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   217
                                         sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   218
                                         test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   219
                                         test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   220
                                         src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   221
                                         custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   222
                                         component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   223
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   224
    def check_dll_duplication(self, _dll_file_, _src_dst_ ):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   225
        """Checks if the dll is already in the dictionary, created by pkg file"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   226
        for item in _src_dst_:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   227
            first = item[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   228
            return _dll_file_.lower() in first.lower()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   229
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   230
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   231
    def tsrc_bld_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   232
        """Component's build directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   233
        return self.tsrc_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   234
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   235
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   236
    def tsrc_conf_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   237
        """Component's configuration file directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   238
        return self.tsrc_dir.joinpath("conf")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   239
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   240
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   241
    def tsrc_custom_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   242
        """Component's test customization directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   243
        return self.tsrc_dir.joinpath("custom")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   244
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   245
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   246
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   247
    def tsrc_data_dirs(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   248
        """Component's data directories."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   249
        return [self.tsrc_dir.joinpath(d) for d in self.data_dirs]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   250
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   251
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   252
    def tsrc_init_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   253
        """Component's initialization file directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   254
        return self.tsrc_dir.joinpath("init")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   255
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   256
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   257
    def tsrc_pkg_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   258
        """Component's .pkg -file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   259
        return self.tsrc_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   260
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   261
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   262
    def tsrc_trace_activation_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   263
        """Component's trace activation file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   264
        return self.tsrc_dir.joinpath("trace_init")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   265
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   266
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   267
    def tsrc_pmd_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   268
        """Component's pmd file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   269
        pmd_dir = self.build_drive + os.sep
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   270
        return pmd_dir.joinpath("output", "pmd")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   271
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   272
    def tsrc_pmd_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   273
        """Component's trace pmd files from the {build_drive}\output directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   274
        return list(self.tsrc_pmd_dir.walkfiles("*.pmd"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   275
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   276
    def tsrc_trace_activation_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   277
        """Component's trace activation files, from the rtace_init directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   278
        return list(self.tsrc_trace_activation_dir.walkfiles("*.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   279
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   280
    def tsrc_config_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   281
        """Component's configuration files, from the conf directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   282
        return list(self.tsrc_conf_dir.walkfiles("*.cfg"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   283
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   284
    def tsrc_ini_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   285
        """Component's initialiation files, from the ini directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   286
        return list(self.tsrc_init_dir.walkfiles("*.ini"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   287
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   288
    def tsrc_data_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   289
        """Component's data files, from data directories."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   290
        files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   291
        files2 = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   292
        for data_dir in self.tsrc_data_dirs:            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   293
            if data_dir.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   294
                files.extend(list(data_dir.walkfiles()))        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   295
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   296
        #Remove dist policy files
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   297
        for data_file in files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   298
            if data_file.name.lower() != "distribution.policy.s60":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   299
                files2.append(data_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   300
        return files2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   301
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   302
    def tsrc_dll_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   303
        """Component's DLL files, reported by ABLD BUILD."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   304
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   305
        dlls = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   306
        orig_dir = os.getcwd()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   307
        try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   308
            os.chdir(self.tsrc_bld_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   309
            #os.system("abld test build %s" % self.target_platform)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   310
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   311
            if os.sep == '\\': 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   312
                raptor_cmd = fileutils.which("sbs.bat")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   313
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   314
                raptor_cmd = fileutils.which("sbs")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   315
            if raptor_cmd:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   316
                process = subprocess.Popen("sbs --what -c %s.test" % self.target_platform.replace(' ', '_'), shell=True, stdout=subprocess.PIPE)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   317
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   318
                os.system("bldmake bldfiles")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   319
                process = subprocess.Popen("abld -w test build %s" % self.target_platform, shell=True, stdout=subprocess.PIPE)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   320
            pipe = process.communicate()[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   321
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   322
            for line in pipe.split('\n'):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   323
                _logger.debug(line.strip())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   324
                target = path(line.strip())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   325
                if target.ext == ".dll":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   326
                    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   327
                    build_target = self.build_drive.joinpath(target).normpath()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   328
                    if not build_target.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   329
                        _logger.warning("not found: %s" % build_target)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   330
                    else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   331
                        dlls.append(build_target)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   332
        finally:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   333
            os.chdir(orig_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   334
        return dlls
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   335
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   336
    def tsrc_pkg_files(self, _dict_):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   337
        """Component's package files, from the group directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   338
        pkg_dirs = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   339
        for sub_component in _dict_[self.tsrc_pkg_dir]['content'].keys():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   340
            pkg_dirs.append(sub_component)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   341
        return pkg_dirs