buildframework/helium/sf/python/pythoncore/lib/ats3/dropgenerator.py
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
child 645 b8d81fa19e7d
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        : dropgenerator.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
""" Generate test drop zip file for ATS3"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    23
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    24
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    25
#W0142 => * and ** were used
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    26
#C0302 => Too many lines
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    27
#R* removed when refactored
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    28
#W => use of global statement
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    29
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    30
import codecs
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    31
from xml.parsers.expat import ExpatError
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    32
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    33
from xml.etree import ElementTree as et
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    34
import pkg_resources
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    35
from path import path # pylint: disable=F0401
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    36
import logging
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    37
import os
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    38
import re
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    39
import zipfile
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    40
import amara
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    41
import ats3.atsconfigparser
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    42
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    43
from ntpath import sep as atssep
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    44
import ntpath as atspath
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    45
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    46
import jinja2 # pylint: disable=F0401
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    47
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    48
_logger = logging.getLogger('ats')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    49
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    50
# Shortcuts
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    51
E = et.Element
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    52
SE = et.SubElement
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    53
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    54
CTC_PATHS_LIST = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    55
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    56
class Ats3TestDropGenerator(object):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    57
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
    Generate test drop zip file for ATS3.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    59
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
    Generates drom zip files file from a TestPlan instance. The main
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    61
    responsibility of this class is to serialize the plan into a valid XML
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
    file and build a zip file for the drop.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    63
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    64
    Creates one <set> for each component's tests.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    65
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    66
    Stif harness, normal operation
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    67
    ------------------------------
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    68
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    69
    - create logging dir for stif             makedir (to C:\logs\TestFramework)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    70
    - install data files                      install (to E:\testing\data)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    71
    - install configuration (.cfg) files      "       (to E:\testing\conf)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    72
    - install testmodule (.dll) files         "       (to C:\sys\bin)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    73
    - install engine ini (testframework.ini)  "       (to C:\testframework)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    74
    - execute cases from the engine ini       run-cases
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    75
    - fetch logs                              fetch-log
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    76
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    77
    Stif harness, SIS package installation
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    78
    --------------------------------------
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    79
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    80
    - like above but with data and config files replaced by sis files
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    81
    - install sis to the device               install-software
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    82
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    83
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    84
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    85
    STIF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testframework"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    86
    TEF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testexecute"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    87
    MTF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testresults"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    88
    STIFUNIT_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testframework"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    89
    EUNIT_LOG_DIR = r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    90
    #QT_LOG_DIR = r"c:" + os.sep + "private" + os.sep + "Qt" + os.sep + "logs"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    91
    QT_LOG_DIR = r"c:" + os.sep + "shared" + os.sep + "EUnit" + os.sep + "logs"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    92
    CTC_LOG_DIR = r"c:" + os.sep + "data" + os.sep + "ctc"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    93
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    94
    def __init__(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    95
        self.drop_path_root = path("ATS3Drop")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    96
        self.drop_path = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    97
        self.defaults = {}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    98
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    99
    def generate(self, test_plan, output_file, config_file=None):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   100
        """Generate a test drop file."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   101
        xml = self.generate_xml(test_plan)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   102
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   103
        if config_file:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   104
            xmltext = et.tostring(xml.getroot(), "ISO-8859-1")
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   105
            xmltext = ats3.atsconfigparser.converttestxml(config_file, xmltext)
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   106
            xml = et.ElementTree(et.XML(xmltext))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   107
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   108
        return self.generate_drop(test_plan, xml, output_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   109
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   110
    def generate_drop(self, test_plan, xml, output_file):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   111
        """Generate test drop zip file."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   112
        zfile = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   113
        try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   114
            for drop_file, src_file in self.drop_files(test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   115
                if not src_file.startswith('\\\\'):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   116
                    _logger.info("   + Adding: %s" % src_file.strip())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   117
                    try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   118
                        zfile.write(src_file.strip(), drop_file.encode('utf-8'))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   119
                    except OSError, expr:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   120
                        _logger.error(expr)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   121
            doc = amara.parse(et.tostring(xml.getroot(), "ISO-8859-1"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   122
            _logger.debug("XML output: %s\n" % doc.xml(indent=u"yes", encoding="ISO-8859-1"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   123
            zfile.writestr("test.xml", doc.xml(indent="yes", encoding="ISO-8859-1"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   124
        finally:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   125
            zfile.close()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   126
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   127
        return zfile
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   128
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   129
    def generate_xml(self, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   130
        """Generate test drop XML."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   131
        self.defaults = {"enabled": "true", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   132
                         "passrate": "100", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   133
                         "significant": "false"}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   134
        root = E("test")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   135
        root.append(et.XML("<name>%(testrun_name)s</name>" % test_plan))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   136
        if test_plan["diamonds_build_url"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   137
            root.append(
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   138
                et.XML("<buildid>%(diamonds_build_url)s</buildid>" % test_plan))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   139
        generate_target(test_plan, root)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   140
        root.append(self.generate_plan(test_plan))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   141
        for post_action in generate_post_actions(test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   142
            root.append(post_action)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   143
        root.append(self.generate_files(test_plan))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   144
        etree = et.ElementTree(root)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   145
        return etree
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   146
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   147
    def generate_plan(self, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   148
        """Generate the test <plan> with multiple <set>s."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   149
        plan = E("plan", name="%s Plan" % test_plan["testrun_name"],
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   150
                 harness=test_plan["harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   151
        session = SE(plan, "session", name="session", harness=test_plan["harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   152
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   153
        if not test_plan.custom_dir is None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   154
            insert_custom_file(session, test_plan.custom_dir.joinpath("preset_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   155
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   156
        # One set for each component.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   157
        for setd in test_plan.sets:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   158
            self.drop_path = self.drop_path_root.joinpath(setd["name"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   159
            elem = SE(session, "set", name=setd["name"]+"-"+setd["component_path"], harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   160
            SE(SE(elem, "target"), "device", rank="master", alias="DEFAULT_%s" % setd["test_harness"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   161
             
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   162
            if not test_plan.custom_dir is None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   163
                insert_custom_file(elem, test_plan.custom_dir.joinpath("precase_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   164
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   165
            case = SE(elem, "case", name="%s case" % setd["name"],
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   166
                      harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   167
            self.generate_steps(setd, case, test_plan)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   168
            if not test_plan.custom_dir is None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   169
                insert_custom_file(elem, test_plan.custom_dir.joinpath("postcase_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   170
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   171
        if not test_plan.custom_dir is None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   172
            insert_custom_file(session, test_plan.custom_dir.joinpath("postset_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   173
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   174
        return plan
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   175
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   176
    def generate_steps_logdir(self, setd, case):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   177
        """generates STIF log dir."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   178
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   179
        _qt_test_ = self.check_qt_harness(setd)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   180
        if _qt_test_:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   181
            step = SE(case, "step", name="Create QT log dir", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   182
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   183
            step = SE(case, "step", name="Create %s log dir" % setd["test_harness"], harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   184
        SE(step, "command").text = "makedir"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   185
        if setd["test_harness"] == "STIF":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   186
            SE(SE(step, "params"), "param", dir=self.STIF_LOG_DIR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   187
        if setd["test_harness"] == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   188
            if self.check_mtf_harness(setd):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   189
                SE(SE(step, "params"), "param", dir=self.MTF_LOG_DIR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   190
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   191
                SE(SE(step, "params"), "param", dir=self.TEF_LOG_DIR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   192
        elif setd["test_harness"] == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   193
            if _qt_test_:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   194
                SE(SE(step, "params"), "param", dir=self.QT_LOG_DIR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   195
            else: 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   196
                SE(SE(step, "params"), "param", dir=self.EUNIT_LOG_DIR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   197
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   198
        elif setd["test_harness"] == "STIFUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   199
            SE(SE(step, "params"), "param", dir=self.STIFUNIT_LOG_DIR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   200
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   201
        if setd.has_key("sis_files") and setd["sis_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   202
            setd = dict(setd, src_dst=[]) # Added to pass the Sis tests, if removed - gives KeyError
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   203
            for sis_file in setd["sis_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   204
                self.generate_install_step(case, "sis", sis_file.name, "sis", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   205
                                           r"c:" + os.sep + "testframework", setd["test_harness"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   206
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   207
            if setd["src_dst"] != []:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   208
                self.generate_install_step(case, "", "", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   209
                                               "", r"", setd["test_harness"], setd["src_dst"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   210
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   211
                # Data file install.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   212
                for data_file in setd["data_files"]:                                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   213
                    self.generate_install_step(case, "data", data_file.name, "data", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   214
                                               r"e:\testing\data", setd["test_harness"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   215
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   216
                # Configuration file install.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   217
                for conf_file in setd["config_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   218
                    self.generate_install_step(case, "conf", conf_file.name, "conf", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   219
                                               r"e:\testing\conf", setd["test_harness"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   220
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   221
                # Test module install.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   222
                for test_file in setd["testmodule_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   223
                    self.generate_install_step(case, "testmodule", test_file.name, 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   224
                                               "testmodules", r"c:\sys\bin", setd["test_harness"]) 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   225
        return setd
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   226
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   227
    def generate_steps_engineini(self, setd, case):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   228
        """Engine ini install ( if one exists )"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   229
        if setd.has_key("sis_files") and setd["sis_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   230
            self.generate_install_step(case, "engine_ini",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   231
                                       setd["engine_ini_file"].name,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   232
                                       "init",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   233
                                       r"c:" + os.sep + "testframework", setd["test_harness"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   234
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   235
            if setd["src_dst"] == []:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   236
                self.generate_install_step(case, "engine_ini",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   237
                                       setd["engine_ini_file"].name,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   238
                                       "init",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   239
                                       r"c:" + os.sep + "testframework", setd["test_harness"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   240
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   241
    def generate_steps_sisfiles(self, setd, case, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   242
        """generating steps for sis files"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   243
        for sis_file in setd["sis_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   244
            step = SE(case, "step", name="Install SIS to the device: %s" % \
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   245
                      sis_file.name, harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   246
            SE(step, "command").text = "install-software"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   247
            params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   248
            sis_name = path(r"c:" + os.sep + "testframework").joinpath(sis_file.name)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   249
            for key, value in (("timeout", test_plan["test_timeout"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   250
                               ("overWriteAllowed", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   251
                               ("upgradeData", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   252
                               ("downloadAllowed", "false"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   253
                               ("packageInfoAllowed", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   254
                               ("untrustedAllowed", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   255
                               ("ignoreOCSPWarnings", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   256
                               ("userCapGranted", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   257
                               ("optionalItemsAllowed", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   258
                               ("killApp", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   259
                               ("installDrive", "C"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   260
                               ("upgradeAllowed", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   261
                               ("OCSP_Done", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   262
                               ("sisPackageName", sis_name.normpath())):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   263
                SE(params, "param").set(key, value)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   264
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   265
    def generate_steps_tracestart(self, setd, case, pmds):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   266
        """Tracing steps are added (Trace Start)"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   267
        step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   268
                  name="Start tracing", harness=setd["test_harness"],
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   269
                  **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   270
        SE(step, "command").text = "trace-start"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   271
        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   272
        if setd.has_key("trace_activation_files") and setd["trace_activation_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   273
            #find out the group to activate
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   274
            trace_group = et.parse(setd["trace_activation_files"][0]).getroot().find("Configurations").find("TraceActivation").find("Configuration").get("Name")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   275
            SE(params, "param", ta=self.drop_path.joinpath(r"trace_activation", setd["trace_activation_files"][0].name)) 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   276
            SE(params, "param", tgrp=trace_group )                                            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   277
        if setd.has_key("pmd_files") and setd["pmd_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   278
            SE(params, "param", pmd=pmds.joinpath(setd["pmd_files"][0].name))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   279
        SE(params, "param", log=setd["trace_path"])            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   280
        SE(params, "param", timeout="60")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   281
        elem = SE(params, "param")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   282
        elem.set('date-format', "yyyyMMdd")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   283
        elem = SE(params, "param")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   284
        elem.set('time-format', "HHmmss")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   285
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   286
    def generate_steps_createstep(self, setd, case, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   287
        """generates core steps for a single set"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   288
        if setd["test_harness"] == "STIF" or setd["test_harness"] == "STIFUNIT" or setd["test_harness"] == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   289
            if setd["src_dst"] == []:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   290
                # Test case execution. If ini file exists, use that
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   291
                if setd["engine_ini_file"] != None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   292
                    step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   293
                              name="Execute test: %s" % setd["engine_ini_file"].name, 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   294
                              harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   295
                    SE(step, "command").text = "run-cases"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   296
                    params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   297
                    SE(params, "param", filter="*")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   298
                    SE(params, "param", timeout=test_plan["test_timeout"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   299
                    ini_name = setd["engine_ini_file"].name
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   300
                    SE(params, "param", engineini=path(r"c:" + os.sep + "testframework") / ini_name)            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   301
                    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   302
                # if no inifile, but cfg files defined, use those
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   303
                elif setd["config_files"] != []:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   304
                    for config_file in setd["config_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   305
                        step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   306
                                  name="Execute test: %s" % config_file.name, 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   307
                                  harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   308
                        SE(step, "command").text = "run-cases"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   309
                        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   310
                        SE(params, "param", module="TESTSCRIPTER")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   311
                        elem = SE(params, "param" )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   312
                        elem.set('testcase-file', path(r"e:\testing\conf") / config_file.name )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   313
                        SE(params, "param", filter="*")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   314
                        SE(params, "param", timeout=test_plan["test_timeout"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   315
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   316
                # if no ini or cfg files, use dll directly
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   317
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   318
                    for testmodule_file in setd["testmodule_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   319
                        step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   320
                                  name="Execute test: %s" %  testmodule_file.name, harness=setd["test_harness"], 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   321
                                  **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   322
                        SE(step, "command").text = "run-cases"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   323
                        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   324
                        SE(params, "param", module=testmodule_file.name)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   325
                        SE(params, "param", filter="*")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   326
                        SE(params, "param", timeout=test_plan["test_timeout"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   327
            elif setd["src_dst"] != []:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   328
                self.generate_run_steps(case, setd, test_plan["test_timeout"], test_plan["eunitexerunner_flags"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   329
        elif setd["test_harness"] == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   330
            self.generate_run_steps(case, setd, test_plan["test_timeout"], test_plan["eunitexerunner_flags"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   331
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   332
    def generate_steps_tracestop(self, setd, case, pmds):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   333
        """Tracing steps are added (Trace Stop)"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   334
        step = SE(case, "step", name="Stop tracing",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   335
                  harness=setd["test_harness"], **self.defaults)        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   336
        SE(step, "command").text = "trace-stop"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   337
        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   338
        SE(params, "param", timeout="60")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   339
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   340
        step = SE(case, "step", name="Convert tracing",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   341
                  harness=setd["test_harness"], **self.defaults)        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   342
        SE(step, "command").text = "trace-convert"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   343
        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   344
        if setd.has_key("pmd_files") and setd["pmd_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   345
            SE(params, "param", pmd=pmds.joinpath(setd["pmd_files"][0].name))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   346
        SE(params, "param", log=setd["trace_path"])            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   347
        SE(params, "param", timeout="60")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   348
        elem = SE(params, "param")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   349
        elem.set('date-format', "yyyyMMdd")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   350
        elem = SE(params, "param")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   351
        elem.set('time-format', "HHmmss")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   352
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   353
    def generate_steps_ctcdata(self, setd, case, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   354
        """generates steps for installing CTC data"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   355
        global CTC_PATHS_LIST
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   356
        ctc_helium_path_list = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   357
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   358
        step = SE(case, "step", name="Save CTC data", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   359
        SE(step, "command").text = "execute"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   360
        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   361
        SE(params, "param", parameters="writelocal")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   362
        SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   363
        step = SE(case, "step", name="Save CTC data", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   364
        SE(step, "command").text = "execute"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   365
        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   366
        SE(params, "param", parameters="writefile")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   367
        SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   368
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   369
        if test_plan["ctc_run_process_params"].strip() != "":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   370
            #preparing local-path for CTC step
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   371
            #getting '39865' as diamonds ID out of 'http://diamonds.server.domain.invalid/diamonds/builds/39865/'
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   372
            if not test_plan["diamonds_build_url"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   373
                raise Exception('Diamonds needed for CTC')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   374
            if test_plan["diamonds_build_url"].rfind("/", 0):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   375
                diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 2)[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   376
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   377
                diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 1)[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   378
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   379
            #separating network id and drop number from 10.11.3.2\share#ats\drop2.zip#3
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   380
            #'drop2' from the other part of the string conjuncted with a # sign
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   381
            ats_network = r"\\" + test_plan["ctc_run_process_params"].rsplit("#", 2)[0] #network host
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   382
            temp_drop_id = path(test_plan["ctc_run_process_params"].rsplit("#", 2)[1].rsplit(".", 1)[0]).normpath() #drop ID
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   383
            if atssep in temp_drop_id:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   384
                drop_id = temp_drop_id.rsplit(atssep, 1)[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   385
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   386
                drop_id = temp_drop_id
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   387
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   388
            ats_network_path = atspath.join(ats_network, "ctc_helium" , diamonds_id, drop_id, setd["name"], "ctcdata")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   389
            ctc_helium_path_list.append(ats_network_path)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   390
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   391
            step = SE(case, "step", name="Fetch CTC data for post commands execution", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   392
            SE(step, "command").text = "fetch-log"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   393
            params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   394
            SE(params, "param", delete="false")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   395
            elem = SE(params, "param")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   396
            elem.set('local-path', ats_network_path)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   397
            SE(params, "param", path=path(self.CTC_LOG_DIR).joinpath(r"ctcdata.txt"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   398
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   399
            CTC_PATHS_LIST += ctc_helium_path_list #creating list of ctcdata.txt files for runProcess postaction
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   400
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   401
        step = SE(case, "step", name="Fetch and clean CTC data", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   402
        SE(step, "command").text = "fetch-log"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   403
        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   404
        SE(params, "param", delete="true")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   405
        SE(params, "param", path=path(self.CTC_LOG_DIR).joinpath(r"ctcdata.txt"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   406
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   407
    def generate_steps_logfetching(self, setd, case):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   408
        """generates steps for fetching log file"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   409
        step = SE(case, "step", name="Fetch test module logs", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   410
        SE(step, "command").text = "fetch-log"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   411
        params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   412
        SE(params, "param", type="text")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   413
        SE(params, "param", delete="true")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   414
        if setd["test_harness"] == "STIF":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   415
            SE(params, "param", path=path(self.STIF_LOG_DIR).joinpath(r"*"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   416
        if setd["test_harness"] == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   417
            if self.check_mtf_harness(setd):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   418
                SE(params, "param", path=path(self.MTF_LOG_DIR).joinpath(r"*"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   419
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   420
                SE(params, "param", path=path(self.TEF_LOG_DIR).joinpath(r"*"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   421
        elif setd["test_harness"] == "STIFUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   422
            SE(params, "param", path=path(self.STIFUNIT_LOG_DIR).joinpath(r"*"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   423
        elif setd["test_harness"] == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   424
            if self.check_qt_harness(setd):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   425
                SE(params, "param", path=path(self.QT_LOG_DIR).joinpath(r"*"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   426
            else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   427
                SE(params, "param", path=path(self.EUNIT_LOG_DIR).joinpath(r"*"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   428
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   429
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   430
    def get_sorted_images(self, setd):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   431
        """sort the images """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   432
        sorted_images = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   433
        for image_file in setd["image_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   434
            if 'core' in image_file.name:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   435
                sorted_images.append(image_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   436
        for image_file in setd["image_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   437
            if 'rofs2' in image_file.name:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   438
                sorted_images.append(image_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   439
        for image_file in setd["image_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   440
            if 'rofs3' in image_file.name:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   441
                sorted_images.append(image_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   442
        for image_file in setd["image_files"]:
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   443
            if 'core' not in image_file.name and 'rofs2' not in image_file.name and 'rofs3' not in image_file.name and 'udaerase' not in image_file.name.lower():
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   444
                sorted_images.append(image_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   445
        if len(sorted_images) > 0 and "rofs" in sorted_images[0]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   446
            return setd["image_files"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   447
        return sorted_images
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   448
        
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   449
    def get_udaerase_image(self, setd):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   450
        for image_file in setd["image_files"]:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   451
            if 'udaerase' in image_file.name.lower():
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   452
                return image_file
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   453
        return None
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   454
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   455
    def generate_steps(self, setd, case, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   456
        """Generate the test plan <step>s."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   457
        # Flash images.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   458
        images = self.drop_path_root.joinpath("images")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   459
        pmds = self.drop_path_root.joinpath("pmds")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   460
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   461
        sorted_images = self.get_sorted_images(setd)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   462
        for image_file in sorted_images:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   463
            flash = SE(case, "flash", images=images.joinpath(os.path.basename(image_file)))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   464
            flash.set("target-alias", "DEFAULT_%s" % setd["test_harness"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   465
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   466
        if setd['custom_dir']:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   467
            insert_custom_file(case, os.path.join(setd['custom_dir'], "prestep_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   468
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   469
        if setd["ctc_enabled"] == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   470
            step = SE(case, "step", name="Create CTC log dir", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   471
            SE(step, "command").text = "makedir"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   472
            params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   473
            SE(params, "param", dir=self.CTC_LOG_DIR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   474
            step = SE(case, "step", name="CTC start", harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   475
            SE(step, "command").text = "execute"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   476
            params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   477
            SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   478
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   479
        # STIF log dir.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   480
        setd = self.generate_steps_logdir(setd, case)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   481
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   482
        # Engine ini install ( if one exists )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   483
        if setd["engine_ini_file"] != None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   484
            self.generate_steps_engineini(setd, case)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   485
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   486
        #If sis files
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   487
        if setd.has_key("sis_files") and setd["sis_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   488
            self.generate_steps_sisfiles(setd, case, test_plan)    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   489
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   490
        # If tracing enabled, Start Tracing:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   491
        if setd.has_key("trace_path") and setd["trace_path"] != "":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   492
            self.generate_steps_tracestart(setd, case, pmds)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   493
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   494
        #core steps of a step
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   495
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   496
        if setd['custom_dir']:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   497
            insert_custom_file(case, os.path.join(setd['custom_dir'], "prerun_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   498
        self.generate_steps_createstep(setd, case, test_plan)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   499
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   500
        if setd['custom_dir']:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   501
            insert_custom_file(case, os.path.join(setd['custom_dir'], "postrun_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   502
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   503
        # If tracing enabled, Stop Tracing
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   504
        if setd.has_key("trace_path") and setd["trace_path"] != "":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   505
            self.generate_steps_tracestop(setd, case, pmds)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   506
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   507
        #install CTC data
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   508
        if setd["ctc_enabled"] == "True":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   509
            self.generate_steps_ctcdata(setd, case, test_plan)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   510
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   511
        # Log file fetching.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   512
        self.generate_steps_logfetching(setd, case)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   513
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   514
        if setd['custom_dir']:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   515
            insert_custom_file(case, os.path.join(setd['custom_dir'], "poststep_custom.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   516
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   517
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   518
    def generate_runsteps_tef(self, setd, case, src_dst, time_out):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   519
        """generates runsteps for tef"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   520
        for file1 in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   521
            if 'testscript' in file1[2]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   522
                filename = file1[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   523
                filename = filename[file1[1].rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   524
                harness = "testexecute.exe"
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   525
                if "testscript:mtf" in file1[2]:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   526
                    harness = "testframework.exe"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   527
                step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   528
                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   529
                              **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   530
                SE(step, "command").text = "execute"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   531
                params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   532
                SE(params, "param", file=harness)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   533
                SE(params, "param", parameters=file1[1])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   534
                
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   535
                if "testscript:mtf" in file1[2]:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   536
                    SE(params, "param", {'result-file': self.MTF_LOG_DIR + os.sep + filename.replace('.script', '.htm')})
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   537
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   538
                    SE(params, "param", {'result-file': self.TEF_LOG_DIR + os.sep + filename.replace('.script', '.htm')})
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   539
                SE(params, "param", timeout=time_out)
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   540
                if "testscript:mtf" in file1[2]:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   541
                    SE(params, "param", parser="MTFResultParser")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   542
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   543
                    SE(params, "param", parser="TEFTestResultParser")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   544
            if file1[2] == 'testmodule:rtest':
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   545
                filename = file1[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   546
                filename = filename[file1[1].rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   547
                step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   548
                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   549
                              **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   550
                SE(step, "command").text = "execute"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   551
                params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   552
                SE(params, "param", file=file1[1])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   553
                #SE(params, "param", {'parameters': '-Dtextshell --'})
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   554
                SE(params, "param", {'result-file': self.TEF_LOG_DIR + os.sep + filename.replace(filename.split(".")[-1], 'htm')})
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   555
                SE(params, "param", timeout=time_out)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   556
                SE(params, "param", parser="RTestResultParser")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   557
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   558
    def generate_runsteps_stif(self, setd, case, src_dst, time_out):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   559
        """generates runsteps for stif"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   560
        ini = cfg = dll = has_tf_ini = False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   561
        ini_file = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   562
        cfg_files = dll_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   563
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   564
        for tf_ini in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   565
            if "testframework.ini" in tf_ini[1].lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   566
                has_tf_ini = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   567
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   568
        for file1 in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   569
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   570
            if "testframework.ini" in file1[1].lower() and file1[2] == "engine_ini" and has_tf_ini:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   571
                ini = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   572
                ini_file = file1
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   573
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   574
            elif file1[2] == "engine_ini" and not has_tf_ini:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   575
                pipe_ini = open(file1[0], 'r')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   576
                if "[engine_defaults]" in str(pipe_ini.readlines()).lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   577
                    ini = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   578
                    ini_file = file1
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   579
            elif file1[2] == "conf":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   580
                if not ini:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   581
                    cfg = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   582
                    cfg_files.append(file1)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   583
            elif file1[2] == "testmodule":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   584
                if not cfg and not ini:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   585
                    dll = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   586
                    dll_files.append(file1)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   587
        if ini:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   588
            filename = ini_file[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   589
            filename = filename[ini_file[1].rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   590
            step = SE(case, "step",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   591
                      name="Execute test: %s" % filename, 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   592
                      harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   593
            SE(step, "command").text = "run-cases"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   594
            params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   595
            SE(params, "param", filter="*")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   596
            SE(params, "param", timeout=time_out)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   597
            SE(params, "param", engineini=ini_file[1]) 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   598
        elif cfg:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   599
            for conf_file in cfg_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   600
                if ".dll" in conf_file[1].lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   601
                    continue
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   602
                filename = conf_file[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   603
                filename = filename[conf_file[1].rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   604
                step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   605
                              name="Execute test: %s" % filename, 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   606
                              harness=setd["test_harness"], **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   607
                SE(step, "command").text = "run-cases"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   608
                params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   609
                SE(params, "param", module="TESTSCRIPTER")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   610
                elem = SE(params, "param" )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   611
                elem.set('testcase-file', conf_file[1] )
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   612
                SE(params, "param", filter="*")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   613
                SE(params, "param", timeout=time_out)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   614
        elif dll:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   615
            for dll_file in dll_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   616
                filename = dll_file[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   617
                filename = filename[dll_file[1].rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   618
                step = SE(case, "step", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   619
                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   620
                              **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   621
                SE(step, "command").text = "run-cases"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   622
                params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   623
                SE(params, "param", module=filename)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   624
                SE(params, "param", filter="*")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   625
                SE(params, "param", timeout=time_out)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   626
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   627
    def generate_runsteps_eunit(self, setd, case, src_dst, time_out, eunit_flags):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   628
        """generates runsteps for eunit"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   629
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   630
        for sdst in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   631
            if "." in sdst[1]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   632
                fileextension = sdst[1].rsplit(".")[1].lower()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   633
            filename = sdst[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   634
            filename = filename[filename.rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   635
            if fileextension == "dll" or fileextension == "exe":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   636
                re_dll = re.compile(r'[.]+%s' % fileextension, re.IGNORECASE)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   637
                no_dll = re_dll.sub('', filename)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   638
                no_dll_xml = ''.join([no_dll, u'_log.xml'])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   639
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   640
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   641
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   642
            #for EUnit or other executables
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   643
            if sdst[2] == "testmodule":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   644
                eunit_exe = "EUNITEXERUNNER.EXE"
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   645
                # include dll file only if it has some harness defined, else skip execute step, only install                
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   646
                if filename.lower() in setd['dll_files']:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   647
                    if setd['dll_files'][filename.lower()] == "":
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   648
                        pass 
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   649
                    else:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   650
                        if re_dll.search(filename):                    
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   651
                            step = SE(case, "step", name = "Execute test: %s" % filename, harness=setd["test_harness"],
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   652
                                      **self.defaults)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   653
                            SE(step, "command").text = "execute"
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   654
                            params = SE(step, "params")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   655
                            SE(params, "param", file=path(r"z:" + os.sep + "sys" + os.sep + "bin") / eunit_exe)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   656
                            elem = SE(params, "param")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   657
                            elem.set('result-file', path(self.EUNIT_LOG_DIR) / no_dll_xml)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   658
                            SE(params, "param", parameters="%s /F %s /l xml %s" % (eunit_flags, no_dll, filename))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   659
                            SE(params, "param", timeout=time_out)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   660
                    
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   661
            #for QtTest.lib executables
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   662
            elif sdst[2] == "testmodule:qt":
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   663
                # include dll file only if it has some harness defined, else skip execute step, only install
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   664
                if filename.lower() in setd['dll_files']:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   665
                    if setd['dll_files'][filename.lower()] == "":
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   666
                        pass 
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   667
                    else:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   668
                        step = SE(case, "step", name = "Execute Qt-test: %s" % filename, harness=setd["test_harness"],
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   669
                                  **self.defaults)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   670
                        SE(step, "command").text = "execute"
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   671
                        params = SE(step, "params")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   672
                        SE(params, "param", file=path(sdst[1]))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   673
                        SE(params, "param", parameters=r"-lightxml -o %s\%s" % (path(self.QT_LOG_DIR),  no_dll_xml))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   674
                        elem = SE(params, "param")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   675
                        elem.set('result-file', path(self.QT_LOG_DIR) / no_dll_xml)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   676
                        SE(params, "param", parser="QTestResultParser")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   677
                        elem = SE(params, "param")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   678
                        elem.set('delete-result',"true")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   679
                        SE(params, "param", async="false")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   680
                        SE(params, "param", timeout=time_out)
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   681
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   682
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   683
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   684
    def generate_run_steps(self, case, setd, time_out, eunit_flags):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   685
        """Generates run-steps"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   686
        src_dst = setd["src_dst"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   687
              
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   688
        if setd["test_harness"] == "STIF":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   689
            self.generate_runsteps_stif(setd, case, src_dst, time_out)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   690
        if setd["test_harness"] == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   691
            self.generate_runsteps_tef(setd, case, src_dst, time_out)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   692
        if setd["test_harness"] == "STIFUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   693
            self.generate_runsteps_stif(setd, case, src_dst, time_out)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   694
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   695
        if setd["test_harness"] == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   696
            self.generate_runsteps_eunit(setd, case, src_dst, time_out, eunit_flags)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   697
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   698
    def generate_install_step(self, case, step_type, filename, src_dir, 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   699
                              dst_dir, case_harness, src_dst=None):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   700
        """Generate install <step>."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   701
        if src_dst == None or src_dst == []:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   702
            src_dst = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   703
            step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   704
                      harness=case_harness, **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   705
            SE(step, "command").text = "install"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   706
            params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   707
            SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   708
            SE(params, "param", dst=path(dst_dir).joinpath(filename))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   709
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   710
            for sdst in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   711
                dst = sdst[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   712
                type_ = sdst[2]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   713
                if "testmodule" in type_ or ".dll" in dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   714
                    src_dir = dst.replace(":","")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   715
                    src_dir = path(src_dir[:src_dir.rfind(os.sep)])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   716
                    step_type = type_
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   717
                    filename = dst[dst.rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   718
                    step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   719
                              harness=case_harness, **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   720
                    SE(step, "command").text = "install"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   721
                    params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   722
                    SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   723
                    SE(params, "param", dst=path(dst))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   724
            for sdst in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   725
                dst = sdst[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   726
                type_ = sdst[2]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   727
                if "testmodule" not in type_ and ".dll" not in dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   728
                    src_dir = dst.replace(":","")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   729
                    src_dir = path(src_dir[:src_dir.rfind(os.sep)])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   730
                    step_type = type_
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   731
                    filename = dst[dst.rfind(os.sep)+1:]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   732
                    step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   733
                              harness=case_harness, **self.defaults)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   734
                    SE(step, "command").text = "install"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   735
                    params = SE(step, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   736
                    SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   737
                    SE(params, "param", dst=path(dst))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   738
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   739
    def drop_files(self, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   740
        """Yield a list of drop files."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   741
        drop_set = set()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   742
        drop_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   743
        pkg_files = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   744
        for setd in test_plan.sets:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   745
            drop_path = self.drop_path_root.joinpath(setd["name"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   746
            if setd.has_key("sis_files") and setd["sis_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   747
                if setd.has_key("pmd_files") and setd["pmd_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   748
                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   749
                                  (drop_path.parent, "pmds", setd["pmd_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   750
                                  (drop_path, "sis", setd["sis_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   751
                                  (drop_path, "init", [setd["engine_ini_file"]]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   752
                                  (drop_path, "trace_init", setd["trace_activation_files"]))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   753
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   754
                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   755
                                  (drop_path, "sis", setd["sis_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   756
                                  (drop_path, "init", [setd["engine_ini_file"]]))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   757
            elif setd["src_dst"] == []:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   758
                if setd.has_key("pmd_files") and setd["pmd_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   759
                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   760
                                  (drop_path.parent, "pmds", setd["pmd_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   761
                                  (drop_path, "data", setd["data_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   762
                                  (drop_path, "conf", setd["config_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   763
                                  (drop_path, "testmodules", setd["testmodule_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   764
                                  (drop_path, "init", [setd["engine_ini_file"]]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   765
                                  (drop_path, "trace_init", setd["trace_activation_files"]))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   766
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   767
                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   768
                                  (drop_path, "data", setd["data_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   769
                                  (drop_path, "conf", setd["config_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   770
                                  (drop_path, "testmodules", setd["testmodule_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   771
                                  (drop_path, "init", [setd["engine_ini_file"]]))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   772
            elif setd["src_dst"] != []:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   773
                for x_temp in setd["src_dst"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   774
                    src = x_temp[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   775
                    dst = x_temp[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   776
                    dst2 = dst.replace(":","")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   777
                    pkg_files.append((drop_path, dst2, src))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   778
                if setd.has_key("pmd_files") and setd["pmd_files"]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   779
                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   780
                                  (drop_path.parent, "pmds", setd["pmd_files"]),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   781
                                  (drop_path, "trace_init", setd["trace_activation_files"]))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   782
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   783
                    drop_files = ((drop_path.parent, "images", setd["image_files"]),)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   784
            for drop_dir, sub_dir, files in drop_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   785
                for file_path in files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   786
                    if file_path != None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   787
                        drop_file = drop_dir.joinpath(sub_dir, file_path.name)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   788
                        drop_file = drop_file.normpath()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   789
                        if drop_file not in drop_set:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   790
                            drop_set.add(drop_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   791
                            yield (drop_file, file_path.normpath())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   792
            for drop_dir, sub_dir, files in pkg_files:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   793
                drop_file = drop_dir.joinpath(sub_dir.replace('\\', os.sep))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   794
                drop_file = drop_file.normpath()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   795
                file_path = path(files)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   796
                if drop_file not in drop_set:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   797
                    drop_set.add(drop_file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   798
                    yield (drop_file, file_path.normpath())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   799
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   800
    def generate_files(self, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   801
        """Generate the <files> section."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   802
        files_elem = E("files")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   803
        for drop_file, _ in self.drop_files(test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   804
            SE(files_elem, "file").text = drop_file
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   805
        return files_elem
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   806
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   807
    def check_mtf_harness(self, _setd_):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   808
        """check the testscript.mtf file is present"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   809
        for _srcdst_ in _setd_['src_dst']:
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   810
            if "testscript:mtf" in _srcdst_[2]:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   811
                return True
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   812
        return False
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   813
        
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   814
    def check_sut_harness(self, _setd_):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   815
        """check the testscript.sut file is present"""
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   816
        for _srcdst_ in _setd_['src_dst']:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   817
            if "testmodule:sut" in _srcdst_[2]:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   818
                return True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   819
        return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   820
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   821
    def check_qt_harness(self, _setd_):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   822
        """ check the QT harness is OK """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   823
        _setd_ = _setd_
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   824
        is_qt_test = False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   825
        if _setd_.has_key("sis_files"):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   826
            _dict_key_ = "sis_files"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   827
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   828
            _dict_key_ = "src_dst"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   829
            
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   830
        for _srcdst_ in _setd_[_dict_key_]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   831
            if "testmodule:qt" == _srcdst_[2]:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   832
                is_qt_test = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   833
        return is_qt_test 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   834
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   835
def generate_target(test_plan, root):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   836
    """Generate targets"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   837
    harness = test_plan["harness"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   838
    if harness == "MULTI_HARNESS":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   839
        input_targets(test_plan, root, ["STIF", "EUNIT"])
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   840
    elif harness == "MULTI_HARNESS_GENERIC_STIF":
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   841
        input_targets(test_plan, root, ["STIF", "GENERIC"])
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   842
    elif harness == "STIF":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   843
        input_targets(test_plan, root, ["STIF"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   844
    elif harness == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   845
        input_targets(test_plan, root, ["EUNIT"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   846
    elif harness == "STIFUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   847
        input_targets(test_plan, root, ["STIFUNIT"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   848
    elif harness == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   849
        input_targets(test_plan, root, ["GENERIC"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   850
                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   851
def input_targets(test_plan, root, harness_type):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   852
    """Append target(s) into the XML"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   853
    target = E("target")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   854
    for har in harness_type:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   855
        device = SE(target, "device", rank="none", alias="DEFAULT_%s" % har)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   856
        SE(device, "property", name="HARNESS", value=har)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   857
        SE(device, "property", name="TYPE", value=test_plan["device_type"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   858
        if test_plan["device_hwid"] != "":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   859
            SE(device, "property", name="HWID", value=test_plan["device_hwid"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   860
        if test_plan["trace_enabled"] != "":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   861
            if test_plan["trace_enabled"].lower() == "true":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   862
                SE(device, "property", name="TRACE_ENABLED", value=test_plan["trace_enabled"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   863
    root.append(target)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   864
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   865
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   866
def insert_custom_file(xmltree, filename):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   867
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   868
    Inserts into the given XML tree the given customization file
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   869
    Broken input XML inserts a comment to the XML tree
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   870
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   871
    try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   872
        custom_action_file = codecs.open(filename, "r", "iso-8859-15")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   873
        loop = ''
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   874
        cust = unicode(custom_action_file.read(1))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   875
        try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   876
            # try to read the file  and addcharacter by character until the 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   877
            # elementtree is happy and then reset the loop and continue until the file is 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   878
            # completely processed. Known issue: file ending in comment will cause a warning.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   879
            while cust:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   880
                if loop != '' :
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   881
                  # if we have something left from the previous try
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   882
                    cust = loop + cust
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   883
#                _logger.debug("what is cust  \n %s \n" % cust)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   884
                try: 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   885
                    xmltree.append(et.XML(cust.encode("ISO-8859-15")))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   886
                except ExpatError, err:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   887
#                    _logger.debug("Error %s in XML when prosessing file %s \n Line and column refer to section:\n%s\n" % ( err, filename, loop))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   888
                    loop = cust
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   889
                else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   890
                # clear the loop variable 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   891
                    loop = ''
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   892
                cust = unicode(custom_action_file.read(1))
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   893
        except UnicodeError, err:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   894
            _logger.error("Error %s in XML when prosessing %s\n" % ( err, filename))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   895
            xmltree.append(et.Comment("Error in XML file when prosessing %s\n" % ( filename)))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   896
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   897
        if loop != '':
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   898
            # we should have used all the input and cleared loop variable
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   899
            _logger.warning("Issues in customization file %s in XML when prosessing issue %s \n Line and column refer to section:\n%s\n" % ( filename, err,  loop))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   900
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   901
        custom_action_file.close()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   902
    except IOError, err:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   903
#        _logger.debug("This is for debugging only. Do not treat this as anything else. Anything is OK... The data: %s when prosessing %s\n" % (err, filename))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   904
        pass
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   905
    else: 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   906
        _logger.info("Included file %s" % ( filename))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   907
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   908
def generate_post_actions(test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   909
    """Generate post actions."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   910
    actions = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   911
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   912
    if not test_plan.custom_dir is None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   913
        insert_custom_file(actions, test_plan.custom_dir.joinpath("prepostaction.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   914
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   915
    for action_type, parameters in test_plan.post_actions:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   916
        action = E("postAction")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   917
        SE(action, "type").text = action_type
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   918
        params = SE(action, "params")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   919
        for name, value in parameters:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   920
            SE(params, "param", name=name, value=value)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   921
        actions.append(action)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   922
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   923
    if not test_plan.custom_dir is None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   924
        insert_custom_file(actions, test_plan.custom_dir.joinpath("postpostaction.xml"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   925
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   926
    return actions
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   927
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   928
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   929
class Ats3TemplateTestDropGenerator(Ats3TestDropGenerator):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   930
    """ATS3 template for test drop generator"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   931
    STIF_LOG_DIR = r"c:\logs\testframework"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   932
    TEF_LOG_DIR = r"c:\logs\testexecute"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   933
    MTF_LOG_DIR = r"c:\logs\testresults"
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   934
    SUT_LOG_DIR = r"c:\sut"
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   935
    STIFUNIT_LOG_DIR = r"c:\logs\testframework"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   936
    EUNIT_LOG_DIR = r"c:\Shared\EUnit\logs"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   937
    #QT_LOG_DIR = r"c:\private\Qt\logs"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   938
    QT_LOG_DIR = r"c:\shared\EUnit\logs"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   939
    CTC_LOG_DIR = r"c:\data\ctc"
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   940
    AtsInterface_LOG_DIR = r"c:\spd_logs\xml"
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   941
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   942
    def stif_init_file(self, src_dst):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   943
        """init the STIF format file"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   944
        has_tf_ini = False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   945
        ini_file = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   946
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   947
        for tf_ini in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   948
            if "testframework.ini" in tf_ini[1].lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   949
                has_tf_ini = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   950
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   951
        for file1 in src_dst:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   952
            if "testframework.ini" in file1[1].lower() and file1[2] == "engine_ini" and has_tf_ini:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   953
                ini_file = file1
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   954
            elif file1[2] == "engine_ini" and not has_tf_ini:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   955
                pipe_ini = open(file1[0], 'r')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   956
                if "[engine_defaults]" in str(pipe_ini.readlines()).lower():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   957
                    ini_file = file1
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   958
        return ini_file
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   959
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   960
    def ctcnetworkpath(self, setd, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   961
        """CTC network path handling"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   962
        #preparing local-path for CTC step
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   963
        #getting '39865' as diamonds ID out of 'http://diamonds.server.domain.invalid/diamonds/builds/39865/'
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   964
        if test_plan["diamonds_build_url"].rfind("/", 0):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   965
            diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 2)[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   966
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   967
            diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 1)[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   968
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   969
        #separating network id and drop number from 10.11.3.2\share#ats\drop2.zip#3
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   970
        #'drop2' from the other part of the string conjuncted with a # sign
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   971
        ats_network = r"\\" + test_plan["ctc_run_process_params"].rsplit("#", 2)[0] #network host
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   972
        temp_drop_id = path(test_plan["ctc_run_process_params"].rsplit("#", 2)[1].rsplit(".", 1)[0]).normpath() #drop ID
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   973
        if atssep in temp_drop_id:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   974
            drop_id = temp_drop_id.rsplit(atssep, 1)[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   975
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   976
            drop_id = temp_drop_id
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   977
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   978
        return atspath.join(ats_network, "ctc_helium" , diamonds_id, drop_id, setd["name"], "ctcdata")
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   979
    
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   980
    def stifmodulename(self, ini_file):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   981
        modname = None
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   982
        ini = open(ini_file)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   983
        for line in ini:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   984
            if line.startswith('ModuleName'):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   985
                modname = line.split('=')[1].strip()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   986
        ini.close()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   987
        return modname
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   988
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   989
    def getlogdir(self, test_plan, setd):
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   990
        """ find the logger directory"""
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   991
        returnval = None
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   992
        if setd["test_harness"] == "STIF":
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   993
            if test_plan['hti'] == 'True':
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   994
                returnval = self.STIF_LOG_DIR
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   995
            else:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   996
                returnval = self.AtsInterface_LOG_DIR
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   997
        elif setd["test_harness"] == "STIFUNIT":
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   998
            returnval = self.STIFUNIT_LOG_DIR
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   999
        elif setd["test_harness"] == "GENERIC":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1000
            if self.check_mtf_harness(setd):
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1001
                returnval = self.MTF_LOG_DIR
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1002
            elif self.check_sut_harness(setd):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1003
                returnval = self.SUT_LOG_DIR
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1004
            else:
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1005
                returnval = self.TEF_LOG_DIR
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1006
        elif setd["test_harness"] == "EUNIT":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1007
            if self.check_qt_harness(setd):
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1008
                returnval = self.QT_LOG_DIR
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1009
            else:
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1010
                returnval = self.EUNIT_LOG_DIR
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1011
        return returnval
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1012
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1013
    def generate_xml(self, test_plan):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1014
        """generate the XML"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1015
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1016
        customdirs = []
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1017
        if test_plan.custom_dir:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1018
            customdirs = [jinja2.FileSystemLoader(test_plan.custom_dir)]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1019
        for setd in test_plan.sets:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1020
            if setd['custom_dir']:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1021
                customdirs.append(jinja2.FileSystemLoader(setd['custom_dir']))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1022
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1023
        loader = jinja2.ChoiceLoader([jinja2.PackageLoader(__name__, 'templates')] + customdirs)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1024
        env = jinja2.Environment(loader=loader)
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
  1025
        
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
  1026
        if hasattr(test_plan, 'custom_template'):
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
  1027
            template = env.from_string(open(test_plan.custom_template).read())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
  1028
        else:
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1029
            template = env.from_string(pkg_resources.resource_string(__name__, 'ats4_template.xml'))# pylint: disable=E1101
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1030
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
  1031
        xmltext = template.render(test_plan=test_plan, os=os, atspath=atspath, atsself=self).encode('ISO-8859-1')
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1032
        return et.ElementTree(et.XML(xmltext))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1033
        
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1034
    def get_template(self, directory, template_name):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1035
        if directory:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1036
            name = os.path.join(directory, template_name)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1037
            if os.path.exists(name):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1038
                template_file = open(name)
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1039
                contents = template_file.read()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1040
                template_file.close()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1041
                return contents
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1042
        return ''
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1043
    
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
  1044