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