buildframework/helium/sf/python/pythoncore/lib/ats3/testconfigurator.py
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
permissions -rw-r--r--
helium_11.0.0-e00f171ca185
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
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    24
587
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.bld_parser = parser.BldFileParser()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    49
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    50
        self.data_dirs = config.data_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    51
        self.flash_images = [path(p) for p in config.flash_images]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    52
        self.tsrc_dir = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    53
        self.build_drive = config.build_drive
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    54
        self.target_platform = config.target_platform
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    55
        self.sis_files = config.sis_files
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    56
        self.cfg_harness = config.harness
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    57
        self.test_timeout = config.test_timeout
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
        self.trace_enabled = config.trace_enabled
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    59
        self.excludable_dlls = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
        self.custom_dir = None
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
    61
        self.specific_pkg = config.specific_pkg
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    63
    def insert_testset_stif(self, src_dst, pkg_paths):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    64
        """Inserts test set data to test plan for stif"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    65
        if not pkg_paths:    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    66
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    67
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    68
                tsrc_testdata_files = self.tsrc_data_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    69
                for data_file in tsrc_testdata_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    70
                    if "\\mmc\\" in data_file.lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    71
                        src_dst.append((data_file, path(r"e:\testing\data").joinpath(data_file.name), "data"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    72
                    elif "\\c\\" in data_file.lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    73
                        src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    74
                    else:
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
            except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    77
                _logger.warning("No testdata folder" )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    78
                tsrc_testdata_files = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    79
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    80
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    81
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    82
                src_dst = pkg_paths
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    83
            except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    84
                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    85
                src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    86
            except IndexError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    87
                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    88
                src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    89
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    90
        return src_dst
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    91
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    92
    def insert_test_set(self, test_plan, tsrc_dir, _paths_dict_):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    93
        """Parse tsrc directory, storing data into the test plan."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    94
        self.tsrc_dir = path(tsrc_dir)  # Store current test source dir.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    95
        tsrc_testdata_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    96
        tsrc_config_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    97
        self.custom_dir = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    98
        engine_ini_file = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    99
        test_harness = self.cfg_harness
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   100
        src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   101
        pmd_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   102
        trace_activation_files = []
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   103
        dll_files = {}
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   104
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   105
        if not os.path.exists( self.tsrc_dir ):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   106
            _logger.error("Missing test source directory: %s", self.tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   107
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   108
            self.custom_dir = self.tsrc_dir.joinpath("custom")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   109
            _logger.debug("using customized testing from %s" % self.custom_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   110
            if os.path.exists(self.tsrc_bld_dir.joinpath("group","bld.inf")):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   111
                bldinf = self.tsrc_bld_dir.joinpath("group","bld.inf")
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   112
            else:
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   113
                bldinf = self.tsrc_bld_dir.joinpath("bld.inf")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   114
            mmp_files = self.bld_parser.get_test_mmp_files(bldinf)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   115
            mmp_parser = parser.MmpFileParser(bldinf)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   116
            test_harness = mmp_parser.get_harness(mmp_files)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   117
            pkg_parser = parser.PkgFileParser(bldinf, self.target_platform.replace(" ", "_")+".pkg", self.specific_pkg)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   118
            pkg_paths = pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
587
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:
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   138
                    src_dst  = pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   139
                    #collecting dll files and their harness for the test component, it will be
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   140
                    # compared while writing 'execute' step in the test.xml generation                    
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   141
                    for sub_component in _paths_dict_[tsrc_dir]['content'].keys():                        
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   142
                        dll_files.update(_paths_dict_[tsrc_dir]['content'][sub_component]['dll_files'])  
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   143
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   144
                except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   145
                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   146
                    src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   147
                except IndexError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   148
                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   149
                    src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   150
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   151
                testmodule_files = self.tsrc_dll_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   152
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   153
                for dll_file in testmodule_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   154
                    if not self.check_dll_duplication(dll_file.name, src_dst):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   155
                        _dll_type_ = mmp_parser.get_dll_type(self.tsrc_bld_dir)
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   156
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   157
                        if dll_file.name in self.excludable_dlls:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   158
                            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
   159
                        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   160
                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "testmodule"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   161
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   162
            except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   163
                _logger.warning("No dll files in dll folders" )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   164
                tsrc_testdata_files = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   165
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   166
            if test_plan['multiset_enabled'] == 'True':
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   167
                backup = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   168
                temp_src_dst = {}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   169
                for x_temp in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   170
                    if len(x_temp) < 4:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   171
                        backup.append(x_temp)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   172
                for x_temp in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   173
                    if len(x_temp) > 3:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   174
                        if temp_src_dst.has_key(x_temp[3]):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   175
                            temp_src_dst[x_temp[3]].append(x_temp)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   176
                        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   177
                            temp_src_dst[x_temp[3]] = [x_temp] + backup
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   178
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   179
                for pkg in temp_src_dst.keys():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   180
                    src_dst = temp_src_dst[pkg]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   181
                    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   182
                    if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   183
                        test_plan.insert_set(data_files=tsrc_testdata_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   184
                                             config_files=tsrc_config_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   185
                                             engine_ini_file=engine_ini_file,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   186
                                             image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   187
                                             sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   188
                                             #testmodule_files=self.tsrc_dll_files(),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   189
                                             test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   190
                                             test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   191
                                             src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   192
                                             pmd_files=pmd_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   193
                                             trace_activation_files=trace_activation_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   194
                                             custom_dir=self.custom_dir,
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   195
                                             dll_files=dll_files,
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   196
                                             component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   197
                    else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   198
                        test_plan.insert_set(image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   199
                                             sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   200
                                             test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   201
                                             test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   202
                                             src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   203
                                             custom_dir=self.custom_dir,
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   204
                                             dll_files = dll_files,
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   205
                                             component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   206
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   207
                if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   208
                    test_plan.insert_set(data_files=tsrc_testdata_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   209
                                         config_files=tsrc_config_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   210
                                         engine_ini_file=engine_ini_file,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   211
                                         image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   212
                                         sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   213
                                         #testmodule_files=self.tsrc_dll_files(),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   214
                                         test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   215
                                         test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   216
                                         src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   217
                                         pmd_files=pmd_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   218
                                         trace_activation_files=trace_activation_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   219
                                         custom_dir=self.custom_dir,
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   220
                                         dll_files = dll_files,
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   221
                                         component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   222
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   223
                    test_plan.insert_set(image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   224
                                         sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   225
                                         test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   226
                                         test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   227
                                         src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   228
                                         custom_dir=self.custom_dir,
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   229
                                         dll_files = dll_files,
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   230
                                         component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   231
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   232
    def check_dll_duplication(self, _dll_file_, _src_dst_ ):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   233
        """Checks if the dll is already in the dictionary, created by pkg file"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   234
        for item in _src_dst_:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   235
            first = item[0]
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   236
            if _dll_file_.lower() in first.lower():
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   237
                return True
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   238
        return False
587
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_bld_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   242
        """Component's build directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   243
        return self.tsrc_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   244
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   245
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   246
    def tsrc_conf_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   247
        """Component's configuration file directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   248
        return self.tsrc_dir.joinpath("conf")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   249
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   250
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   251
    def tsrc_custom_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   252
        """Component's test customization directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   253
        return self.tsrc_dir.joinpath("custom")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   254
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_data_dirs(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   258
        """Component's data directories."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   259
        return [self.tsrc_dir.joinpath(d) for d in self.data_dirs]
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_init_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   263
        """Component's initialization file directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   264
        return self.tsrc_dir.joinpath("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_pkg_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   268
        """Component's .pkg -file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   269
        return self.tsrc_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   270
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   271
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   272
    def tsrc_trace_activation_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   273
        """Component's trace activation file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   274
        return self.tsrc_dir.joinpath("trace_init")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   275
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   276
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   277
    def tsrc_pmd_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   278
        """Component's pmd file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   279
        pmd_dir = self.build_drive + os.sep
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   280
        return pmd_dir.joinpath("output", "pmd")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   281
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   282
    def tsrc_pmd_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   283
        """Component's trace pmd files from the {build_drive}\output directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   284
        return list(self.tsrc_pmd_dir.walkfiles("*.pmd"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   285
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   286
    def tsrc_trace_activation_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   287
        """Component's trace activation files, from the rtace_init directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   288
        return list(self.tsrc_trace_activation_dir.walkfiles("*.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   289
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   290
    def tsrc_config_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   291
        """Component's configuration files, from the conf directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   292
        return list(self.tsrc_conf_dir.walkfiles("*.cfg"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   293
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   294
    def tsrc_ini_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   295
        """Component's initialiation files, from the ini directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   296
        return list(self.tsrc_init_dir.walkfiles("*.ini"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   297
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   298
    def tsrc_data_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   299
        """Component's data files, from data directories."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   300
        files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   301
        files2 = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   302
        for data_dir in self.tsrc_data_dirs:            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   303
            if data_dir.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   304
                files.extend(list(data_dir.walkfiles()))        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   305
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   306
        #Remove dist policy files
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   307
        for data_file in files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   308
            if data_file.name.lower() != "distribution.policy.s60":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   309
                files2.append(data_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   310
        return files2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   311
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   312
    def tsrc_dll_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   313
        """Component's DLL files, reported by ABLD BUILD."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   314
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   315
        dlls = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   316
        orig_dir = os.getcwd()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   317
        try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   318
            os.chdir(self.tsrc_bld_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   319
            #os.system("abld test build %s" % self.target_platform)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   320
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   321
            if os.sep == '\\': 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   322
                raptor_cmd = fileutils.which("sbs.bat")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   323
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   324
                raptor_cmd = fileutils.which("sbs")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   325
            if raptor_cmd:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   326
                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
   327
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   328
                os.system("bldmake bldfiles")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   329
                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
   330
            pipe = process.communicate()[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   331
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   332
            for line in pipe.split('\n'):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   333
                _logger.debug(line.strip())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   334
                target = path(line.strip())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   335
                if target.ext == ".dll":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   336
                    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   337
                    build_target = self.build_drive.joinpath(target).normpath()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   338
                    if not build_target.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   339
                        _logger.warning("not found: %s" % build_target)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   340
                    else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   341
                        dlls.append(build_target)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   342
        finally:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   343
            os.chdir(orig_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   344
        return dlls
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   345
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   346
    def tsrc_pkg_files(self, _dict_):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   347
        """Component's package files, from the group directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   348
        pkg_dirs = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   349
        for sub_component in _dict_[self.tsrc_pkg_dir]['content'].keys():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   350
            pkg_dirs.append(sub_component)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   351
        return pkg_dirs