buildframework/helium/sf/python/pythoncore/lib/ats3/testconfigurator.py
author wbernard
Wed, 16 Jun 2010 16:51:40 +0300
changeset 588 c7c26511138f
parent 587 85df38eb4012
child 628 7c4a911dc066
permissions -rw-r--r--
helium-10.0.0-bc45d50958fe
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.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 = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   103
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   104
        if not os.path.exists( self.tsrc_dir ):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   105
            _logger.error("Missing test source directory: %s", self.tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   106
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   107
            self.custom_dir = self.tsrc_dir.joinpath("custom")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   108
            _logger.debug("using customized testing from %s" % self.custom_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   109
            if os.path.exists(self.tsrc_bld_dir.joinpath("group","bld.inf")):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   110
                bldinf = self.tsrc_bld_dir.joinpath("group","bld.inf")
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   111
            else:
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   112
                bldinf = self.tsrc_bld_dir.joinpath("bld.inf")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   113
            mmp_files = self.bld_parser.get_test_mmp_files(bldinf)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   114
            mmp_parser = parser.MmpFileParser(bldinf)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   115
            test_harness = mmp_parser.get_harness(mmp_files)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   116
            pkg_parser = parser.PkgFileParser(bldinf, self.target_platform.replace(" ", "_")+".pkg", self.specific_pkg)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   117
            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
   118
            if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   119
                try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   120
                    pmd_files = self.tsrc_pmd_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   121
                except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   122
                    _logger.warning("No pmd file in output-folder.")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   123
                try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   124
                    trace_activation_files = self.tsrc_trace_activation_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   125
                except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   126
                    _logger.warning("No trace activation files in trace init folder")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   127
                if trace_activation_files and not pmd_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   128
                    _logger.warning("Trace activation files available but NOT pmd file.")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   129
                elif pmd_files and not trace_activation_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   130
                    _logger.warning("Pmd file available but NO trace activation files.")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   131
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   132
            if test_harness == "STIF" or test_harness == "STIFUNIT" or test_harness == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   133
                src_dst = self.insert_testset_stif(src_dst, pkg_paths)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   134
                        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   135
            elif test_harness == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   136
                try:
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   137
                    src_dst  = pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   138
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   139
                except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   140
                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   141
                    src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   142
                except IndexError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   143
                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   144
                    src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   145
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   146
                testmodule_files = self.tsrc_dll_files()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   147
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   148
                for dll_file in testmodule_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   149
                    if not self.check_dll_duplication(dll_file.name, src_dst):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   150
                        _dll_type_ = mmp_parser.get_dll_type(self.tsrc_bld_dir)
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   151
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   152
                        if dll_file.name in self.excludable_dlls:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   153
                            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
   154
                        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   155
                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "testmodule"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   156
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   157
            except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   158
                _logger.warning("No dll files in dll folders" )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   159
                tsrc_testdata_files = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   160
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   161
            if test_plan['multiset_enabled'] == 'True':
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   162
                backup = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   163
                temp_src_dst = {}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   164
                for x_temp in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   165
                    if len(x_temp) < 4:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   166
                        backup.append(x_temp)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   167
                for x_temp in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   168
                    if len(x_temp) > 3:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   169
                        if temp_src_dst.has_key(x_temp[3]):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   170
                            temp_src_dst[x_temp[3]].append(x_temp)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   171
                        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   172
                            temp_src_dst[x_temp[3]] = [x_temp] + backup
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   173
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   174
                for pkg in temp_src_dst.keys():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   175
                    src_dst = temp_src_dst[pkg]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   176
                    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   177
                    if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   178
                        test_plan.insert_set(data_files=tsrc_testdata_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   179
                                             config_files=tsrc_config_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   180
                                             engine_ini_file=engine_ini_file,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   181
                                             image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   182
                                             sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   183
                                             #testmodule_files=self.tsrc_dll_files(),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   184
                                             test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   185
                                             test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   186
                                             src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   187
                                             pmd_files=pmd_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   188
                                             trace_activation_files=trace_activation_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   189
                                             custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   190
                                             component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   191
                    else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   192
                        test_plan.insert_set(image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   193
                                             sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   194
                                             test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   195
                                             test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   196
                                             src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   197
                                             custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   198
                                             component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   199
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   200
                if self.trace_enabled == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   201
                    test_plan.insert_set(data_files=tsrc_testdata_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   202
                                         config_files=tsrc_config_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   203
                                         engine_ini_file=engine_ini_file,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   204
                                         image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   205
                                         sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   206
                                         #testmodule_files=self.tsrc_dll_files(),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   207
                                         test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   208
                                         test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   209
                                         src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   210
                                         pmd_files=pmd_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   211
                                         trace_activation_files=trace_activation_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   212
                                         custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   213
                                         component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   214
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   215
                    test_plan.insert_set(image_files=self.flash_images,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   216
                                         sis_files=self.sis_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   217
                                         test_timeout=list(self.test_timeout),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   218
                                         test_harness=test_harness,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   219
                                         src_dst=src_dst,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   220
                                         custom_dir=self.custom_dir,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   221
                                         component_path=tsrc_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   222
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   223
    def check_dll_duplication(self, _dll_file_, _src_dst_ ):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   224
        """Checks if the dll is already in the dictionary, created by pkg file"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   225
        for item in _src_dst_:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   226
            first = item[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   227
            return _dll_file_.lower() in first.lower()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   228
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   229
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   230
    def tsrc_bld_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   231
        """Component's build directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   232
        return self.tsrc_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   233
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   234
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   235
    def tsrc_conf_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   236
        """Component's configuration file directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   237
        return self.tsrc_dir.joinpath("conf")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   238
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   239
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   240
    def tsrc_custom_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   241
        """Component's test customization directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   242
        return self.tsrc_dir.joinpath("custom")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   243
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_data_dirs(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   247
        """Component's data directories."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   248
        return [self.tsrc_dir.joinpath(d) for d in self.data_dirs]
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_init_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   252
        """Component's initialization file directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   253
        return self.tsrc_dir.joinpath("init")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   254
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   255
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   256
    def tsrc_pkg_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   257
        """Component's .pkg -file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   258
        return self.tsrc_dir
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   259
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   260
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   261
    def tsrc_trace_activation_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   262
        """Component's trace activation file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   263
        return self.tsrc_dir.joinpath("trace_init")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   264
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   265
    @property
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   266
    def tsrc_pmd_dir(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   267
        """Component's pmd file directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   268
        pmd_dir = self.build_drive + os.sep
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   269
        return pmd_dir.joinpath("output", "pmd")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   270
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   271
    def tsrc_pmd_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   272
        """Component's trace pmd files from the {build_drive}\output directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   273
        return list(self.tsrc_pmd_dir.walkfiles("*.pmd"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   274
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   275
    def tsrc_trace_activation_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   276
        """Component's trace activation files, from the rtace_init directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   277
        return list(self.tsrc_trace_activation_dir.walkfiles("*.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   278
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   279
    def tsrc_config_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   280
        """Component's configuration files, from the conf directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   281
        return list(self.tsrc_conf_dir.walkfiles("*.cfg"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   282
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   283
    def tsrc_ini_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   284
        """Component's initialiation files, from the ini directory."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   285
        return list(self.tsrc_init_dir.walkfiles("*.ini"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   286
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   287
    def tsrc_data_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   288
        """Component's data files, from data directories."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   289
        files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   290
        files2 = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   291
        for data_dir in self.tsrc_data_dirs:            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   292
            if data_dir.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   293
                files.extend(list(data_dir.walkfiles()))        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   294
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   295
        #Remove dist policy files
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   296
        for data_file in files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   297
            if data_file.name.lower() != "distribution.policy.s60":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   298
                files2.append(data_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   299
        return files2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   300
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   301
    def tsrc_dll_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   302
        """Component's DLL files, reported by ABLD BUILD."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   303
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   304
        dlls = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   305
        orig_dir = os.getcwd()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   306
        try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   307
            os.chdir(self.tsrc_bld_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   308
            #os.system("abld test build %s" % self.target_platform)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   309
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   310
            if os.sep == '\\': 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   311
                raptor_cmd = fileutils.which("sbs.bat")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   312
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   313
                raptor_cmd = fileutils.which("sbs")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   314
            if raptor_cmd:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   315
                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
   316
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   317
                os.system("bldmake bldfiles")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   318
                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
   319
            pipe = process.communicate()[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   320
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   321
            for line in pipe.split('\n'):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   322
                _logger.debug(line.strip())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   323
                target = path(line.strip())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   324
                if target.ext == ".dll":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   325
                    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   326
                    build_target = self.build_drive.joinpath(target).normpath()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   327
                    if not build_target.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   328
                        _logger.warning("not found: %s" % build_target)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   329
                    else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   330
                        dlls.append(build_target)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   331
        finally:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   332
            os.chdir(orig_dir)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   333
        return dlls
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   334
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   335
    def tsrc_pkg_files(self, _dict_):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   336
        """Component's package files, from the group directory"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   337
        pkg_dirs = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   338
        for sub_component in _dict_[self.tsrc_pkg_dir]['content'].keys():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   339
            pkg_dirs.append(sub_component)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   340
        return pkg_dirs