buildframework/helium/tools/common/python/lib/cpythontest/test_ats4_aste.py
author wbernard
Wed, 23 Dec 2009 19:29:07 +0200
changeset 179 d8ac696cc51f
permissions -rw-r--r--
helium_7.0-r14027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
179
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     1
# -*- coding: latin-1 -*-
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     2
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     3
#============================================================================ 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     4
#Name        : test_ats4_aste.py 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     5
#Part of     : Helium 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     6
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     7
#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     8
#All rights reserved.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     9
#This component and the accompanying materials are made available
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    10
#under the terms of the License "Eclipse Public License v1.0"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    11
#which accompanies this distribution, and is available
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    12
#at the URL "http://www.eclipse.org/legal/epl-v10.html".
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    13
#
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    14
#Initial Contributors:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    15
#Nokia Corporation - initial contribution.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    16
#
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    17
#Contributors:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    18
#
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    19
#Description:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    20
#===============================================================================
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    21
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    22
""" Testing ATS4 ASTE framework. """
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    23
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    24
# pylint: disable-msg=E1101
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    25
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    26
from cStringIO import StringIO
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    27
from pprint import pprint
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    28
from xml.etree.ElementTree import fromstring, tostring
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    29
from xml.etree import ElementTree as et
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    30
import difflib
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    31
import logging
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    32
logging.getLogger().setLevel(logging.ERROR)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    33
import re
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    34
import tempfile
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    35
import zipfile
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    36
import os
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    37
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    38
from path import path
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    39
import amara
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    40
import mocker
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    41
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    42
import ats3.aste
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    43
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    44
TEST_PATH = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    45
TEST_FILES = {}
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    46
TEST_ASSET_FILES = {}
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    47
TSRC = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    48
OUTPUT = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    49
TEST_ZIP_PATH = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    50
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    51
# Shortcuts
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    52
E = et.Element
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    53
SE = et.SubElement
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    54
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    55
_logger = logging.getLogger("test.ats4_aste")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    56
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    57
class Bunch(object):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    58
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    59
    def __init__(self, **kwargs): 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    60
        self.__dict__.update(kwargs)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    61
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    62
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    63
def equal_xml(xml1, xml2):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    64
    """Check the equality of the given XML snippets.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    65
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    66
    Tag name equality:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    67
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    68
    >>> equal_xml('<a/>', '<a/>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    69
    True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    70
    >>> equal_xml('<a/>', '<b/>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    71
    False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    72
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    73
    Attribute equality:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    74
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    75
    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    76
    True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    77
    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    78
    False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    79
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    80
    Text content equality:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    81
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    82
    >>> equal_xml('<a>v</a>', '<a>v</a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    83
    True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    84
    >>> equal_xml('<a>v</a>', '<a>w</a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    85
    False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    86
    >>> equal_xml('<a>v</a>', '<a></a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    87
    False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    88
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    89
    Text content equality when whitespace differs:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    90
    >>> equal_xml('<a>v</a>', '<a>v </a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    91
    True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    92
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    93
    Equality of child elements:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    94
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    95
    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    96
    True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    97
    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    98
    False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    99
    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   100
    False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   101
    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   102
    True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   103
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   104
    """
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   105
    if isinstance(xml1, basestring):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   106
        xml1 = fromstring(xml1)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   107
    if isinstance(xml2, basestring):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   108
        xml2 = fromstring(xml2)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   109
    if xml1.tag != xml2.tag:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   110
        return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   111
    if xml1.attrib != xml2.attrib:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   112
        return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   113
    if xml1.text:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   114
        if not xml2.text:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   115
            return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   116
    if xml2.text:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   117
        if not xml1.text:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   118
            return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   119
    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   120
        return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   121
    if xml1.tail is not None and xml2.tail is not None:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   122
        if xml1.tail.strip() != xml2.tail.strip():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   123
            return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   124
    elif xml1.tail != xml2.tail:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   125
        return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   126
    children1 = list(xml1.getchildren())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   127
    children2 = list(xml2.getchildren())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   128
    if len(children1) != len(children2):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   129
        return False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   130
    for child1, child2 in zip(children1, children2):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   131
        return equal_xml(child1, child2)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   132
    return True        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   133
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   134
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   135
def setup_module():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   136
    global TEST_PATH, OUTPUT, TEST_ZIP_PATH
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   137
    TEST_PATH = path(tempfile.mkdtemp())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   138
    OUTPUT = TEST_PATH.joinpath("TestAsset")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   139
    TEST_ZIP_PATH = TEST_PATH.joinpath("test_zip")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   140
    asset = TEST_PATH
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   141
    component = TEST_PATH
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   142
    component.joinpath("group").makedirs()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   143
    for path_parts in (("output", "images", "file1.fpsx"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   144
                       ("output", "images", "file2.fpsx")):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   145
        filename = component.joinpath(*path_parts)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   146
        if not filename.parent.exists():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   147
            filename.parent.makedirs()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   148
        filename.touch()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   149
        TEST_FILES.setdefault(path_parts[1], []).append(file)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   150
    for path_parts in (("TestAsset", "Localisation", "S60", "localisation.txt"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   151
                       ("TestAsset", "TestCases", "TC_100_Test0", "file1.sis"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   152
                       ("TestAsset", "TestCases", "TC_100_Test0", "file2.tcf"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   153
                       ("TestAsset", "Tools", "TestCaseCreator", "test_creator.ini"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   154
                       ("TestAsset", "testdrop.xml"),):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   155
        filename = asset.joinpath(*path_parts)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   156
        if not filename.parent.exists():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   157
            filename.parent.makedirs()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   158
        filename.touch()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   159
        TEST_ASSET_FILES.setdefault(path_parts[1], []).append(file)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   160
    try:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   161
        zip_component = TEST_ZIP_PATH
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   162
        filename = zip_component.joinpath("TestAsset.zip")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   163
        if not filename.parent.exists():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   164
            filename.parent.makedirs()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   165
        filename.touch()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   166
        zfile = zipfile.ZipFile(zip_component.joinpath("TestAsset.zip"), "w", zipfile.ZIP_DEFLATED)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   167
        for p in TEST_ASSET_FILES:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   168
            print p
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   169
            zfile.write(p)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   170
        zfile.close()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   171
        TEST_ASSET_FILES.setdefault("ZIP", []).append(file)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   172
    except OSError:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   173
        print "Got except OSError. Continuing...\n"  
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   174
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   175
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   176
def teardown_module():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   177
    path(TEST_PATH).rmtree()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   178
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   179
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   180
class TestTestPlan(mocker.MockerTestCase):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   181
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   182
    def __init__(self, methodName="runTest"):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   183
        mocker.MockerTestCase.__init__(self, methodName)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   184
             
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   185
    def setUp(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   186
        opts = Bunch(testrun_name="testrun", harness="ASTE", 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   187
                     device_type="product", plan_name="ats3_test_plan", diamonds_build_url="",
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   188
                     software_version="W810", software_release="SPP 51.32", device_language="English",
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   189
                     testasset_location=TEST_PATH.joinpath("TestAsset"), testasset_caseids="100",repeat="1", report_email="",
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   190
                     file_store=path(), test_timeout="60", device_hwid="5425", test_type="smoke")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   191
        self.tp = ats3.aste.AsteTestPlan(opts)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   192
        self.image_files = TEST_FILES["images"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   193
        self.test_timeout = self.tp["test_timeout"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   194
        self.device_hwid = self.tp["device_hwid"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   195
        self.test_harness = self.tp["harness"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   196
        self.device_language = self.tp["device_language"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   197
        self.software_release = self.tp["software_release"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   198
        self.software_version = self.tp["software_version"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   199
        self.testasset_caseids = self.tp["testasset_caseids"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   200
        self.testasset_location = self.tp["testasset_location"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   201
        self.test_type = self.tp["test_type"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   202
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   203
        if self.testasset_location != "":
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   204
            self.test_asset_testcases = [self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file1.sis"), self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file2.tcf")]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   205
            self.test_asset_tools = [self.testasset_location.joinpath("Tools", "TestCaseCreator", "test_creator.ini")]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   206
            self.test_asset_localisation = [self.testasset_location.joinpath("Localisation", "S60", "localisation.txt")]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   207
            self.test_asset_testdrop = self.testasset_location.joinpath("testdrop.xml")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   208
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   209
            self.test_asset_testcases = TEST_ASSET_FILES["TestCases"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   210
            self.test_asset_tools = TEST_ASSET_FILES["Tools"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   211
            self.test_asset_localisation = TEST_ASSET_FILES["Localisation"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   212
            self.test_asset_testdrop = TEST_ASSET_FILES["testdrop.xml"]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   213
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   214
            
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   215
    def test_creation(self):        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   216
        assert self.tp["testrun_name"] == "testrun"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   217
        assert self.tp["harness"] == "ASTE"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   218
        assert self.tp["device_type"] == "product"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   219
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   220
    def test_insert_set(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   221
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   222
        self.tp.insert_set(image_files=self.image_files,
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   223
                           test_timeout=self.test_timeout)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   224
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   225
        assert self.tp.sets[0] == dict(name="set0",
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   226
                                       image_files=self.image_files,
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   227
                                       test_timeout=self.test_timeout,
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   228
                                       test_harness=self.test_harness)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   229
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   230
    def test_post_actions_email(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   231
        assert not self.tp.post_actions
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   232
        receiver = "joe.average@example.com"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   233
        self.tp.report_email = receiver
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   234
        assert len(self.tp.post_actions) == 1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   235
        action, items = self.tp.post_actions[0]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   236
        items = dict(items)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   237
        assert action == "SendEmailAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   238
        assert items["to"] == receiver
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   239
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   240
    def test_post_actions_ats3_report_only(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   241
        file_store = path("path/to/files")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   242
        self.tp.file_store = file_store
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   243
        self.tp.harness = "EUNIT"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   244
        assert len(self.tp.post_actions) == 2
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   245
        action, items = self.tp.post_actions[0]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   246
        items = dict(items)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   247
        assert action == "FileStoreAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   248
        assert items["report-type"] == "ATS_REPORT"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   249
        assert items["to-folder"].startswith(file_store)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   250
        assert items["to-folder"].endswith("ATS3_REPORT")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   251
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   252
    def test_post_actions_aste(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   253
        file_store = path("path/to/files")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   254
        self.tp.file_store = file_store
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   255
        assert len(self.tp.post_actions) == 2
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   256
        action, items = self.tp.post_actions[1]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   257
        items = dict(items)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   258
        assert action == "FileStoreAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   259
        assert items["report-type"] == "ASTE_REPORT"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   260
        assert items["to-folder"].startswith(file_store)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   261
        assert items["to-folder"].endswith("ASTE_REPORT")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   262
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   263
    def test_post_actions_diamonds(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   264
        self.tp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   265
        assert len(self.tp.post_actions) == 1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   266
        action, items = self.tp.post_actions[0]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   267
        assert action == "DiamondsAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   268
        assert not items
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   269
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   270
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   271
            
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   272
class TestXMLGeneration(mocker.MockerTestCase):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   273
    """
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   274
    Unit tests for the test.xml generation.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   275
    """    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   276
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   277
    def __init__(self, methodName="runTest"):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   278
        self.image_files = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   279
        self.report_email = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   280
        self.diamonds_build_url = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   281
        self.test_harness = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   282
        self.file_store = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   283
        self.testasset_location = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   284
        self.test_plan = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   285
        self.gen = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   286
        mocker.MockerTestCase.__init__(self, methodName)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   287
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   288
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   289
    def generate_xml(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   290
        def files(*paths):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   291
            return [TEST_PATH.joinpath(p) for p in paths]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   292
        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   293
        self.report_email = "test.receiver@company.com"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   294
        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   295
        self.test_harness = "ASTE"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   296
        self.file_store = path(r"path/to/reports")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   297
        self.testasset_location = OUTPUT
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   298
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   299
        self.mocker.restore()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   300
        test_plan = self.mocker.mock(count=False)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   301
        mocker.expect(test_plan["testrun_name"]).result("test")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   302
        mocker.expect(test_plan["harness"]).result("ASTE")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   303
        mocker.expect(test_plan["device_type"]).result("product")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   304
        mocker.expect(test_plan["plan_name"]).result("test plan")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   305
        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   306
        mocker.expect(test_plan["test_timeout"]).result("60")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   307
        mocker.expect(test_plan["device_hwid"]).result("5425")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   308
        mocker.expect(test_plan["testasset_location"]).result(self.testasset_location)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   309
        mocker.expect(test_plan["testasset_caseids"]).result("100")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   310
        mocker.expect(test_plan["report_email"]).result(self.report_email)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   311
        mocker.expect(test_plan["software_release"]).result("SPP 51.32")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   312
        mocker.expect(test_plan["software_version"]).result("W810")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   313
        mocker.expect(test_plan["device_language"]).result("English")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   314
        mocker.expect(test_plan["test_type"]).result("smoke")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   315
        mocker.expect(test_plan["temp_directory"]).result(TEST_PATH)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   316
        mocker.expect(test_plan.sets).result([
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   317
            dict(name="set0", image_files=self.image_files, test_harness="ASTE")])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   318
        mocker.expect(test_plan.post_actions).result([
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   319
            ("EmailAction", (("subject", "Release testing"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   320
                                 ("to", self.report_email))),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   321
#            ("FileStoreAction", (("to-folder", self.file_store),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   322
#                                 ("report-type", "ATS_REPORT"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   323
#                                 ("date-format", "yyyyMMdd"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   324
#                                 ("time-format", "HHmmss"))),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   325
#            ("FileStoreAction", (("to-folder", self.file_store),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   326
#                                 ("report-type", "ASTE_REPORT"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   327
#                                 ("run-log", "true"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   328
#                                 ("date-format", "yyyyMMdd"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   329
#                                 ("time-format", "HHmmss"))),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   330
            ("DiamondsAction", ())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   331
        ])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   332
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   333
        self.mocker.replay()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   334
        self.test_plan = test_plan
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   335
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   336
        self.gen = ats3.aste.AsteTemplateTestDropGenerator()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   337
        return self.gen.generate_xml(test_plan)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   338
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   339
    def test_basic_structure(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   340
        "Check that the overall test.xml structure is valid."
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   341
        xml = self.generate_xml()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   342
        # Check basics.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   343
#        assert xml.find(".").tag == "test"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   344
#        assert xml.find("./name").text == "test"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   345
#        assert xml.find("./buildid").text == self.diamonds_build_url
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   346
#        assert xml.find("./target").tag
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   347
#        assert xml.find("./target/device").tag
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   348
#        harness, hardware, device_hwid = xml.findall("./target/device/property")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   349
#        softwareVersion, softwareRelease, deviceLanguage = xml.findall("./target/device/setting")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   350
#        assert harness.get("value") == "ASTE"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   351
#        assert hardware.get("value") == "product"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   352
#        assert softwareVersion.get("value") == "W810"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   353
#        assert softwareRelease.get("value") == "SPP 51.32"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   354
#        assert deviceLanguage.get("value") == "English"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   355
#        assert device_hwid.get("value") == "5425"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   356
#        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   357
#        # Check generation of the test plan.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   358
#        assert xml.find("./plan").get("name") == "Plan smoke product"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   359
#        assert xml.find("./plan/session").tag 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   360
#        sets = xml.findall("./plan/session/set")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   361
#        assert len(sets) == 1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   362
#        assert sets[0].get("name") == "set0"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   363
#        assert sets[0].find("./target/device").tag
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   364
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   365
    def test_set_structure(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   366
        "Check that a <set> element's structure is valid."
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   367
        xml = self.generate_xml()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   368
#        tstset = xml.find("./plan/session/set")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   369
#        assert tstset.tag
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   370
#        case = tstset.find("./case")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   371
#        assert case.tag
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   372
#        assert case.get("name") == "set0 case"                
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   373
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   374
    def test_case_flash_elems(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   375
        """ Test case flash elems. """
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   376
        xml = self.generate_xml()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   377
        found = False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   378
        for case in xml.findall(".//task"):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   379
            if case.find('type').text == 'FlashTask':
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   380
                found = True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   381
                flashes = case.findall("./parameters/parameter")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   382
                assert len(flashes) == len(self.image_files)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   383
                for i, flash_file in enumerate(self.image_files):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   384
                    assert flashes[i].get("name") == "image-" + str(i + 1)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   385
                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   386
        assert found
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   387
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   388
    def test_steps(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   389
        xml = self.generate_xml()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   390
        steps = iter(xml.findall(".//task"))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   391
        step = steps.next()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   392
        step = steps.next()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   393
        self.check_executeasset_step(steps)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   394
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   395
    def check_executeasset_step(self, steps):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   396
        step = steps.next()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   397
        assert step.findtext("./type") == "SetTestAssetPackageTask"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   398
        params = step.findall("./parameters/parameter")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   399
        #assert params[0].get("repeat") == "1"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   400
        assert params[0].get("value") == "ATS3Drop\\TestAssets\\TestAsset.zip"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   401
        #assert params[2].get("testcase-ids") == "100"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   402
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   403
    def test_post_actions(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   404
        "Post actions are inserted into XML."
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   405
        xml = self.generate_xml()        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   406
        post_actions = xml.findall(".//action")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   407
        self.check_send_email_action(post_actions[0])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   408
#        self.check_ats_report_action(post_actions[1])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   409
#        self.check_aste_report_action(post_actions[2])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   410
        self.check_diamonds_action(post_actions[1])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   411
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   412
    def check_send_email_action(self, action):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   413
        assert action.findtext("./type") == "EmailAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   414
        params = action.findall("./parameters/parameter")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   415
        assert params[0].get("name") == "subject"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   416
        #assert params[0].get("value") == "email subject"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   417
        #assert params[1].get("name") == "type"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   418
        #assert params[1].get("value") == "ATS3_REPORT"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   419
        #assert params[2].get("name") == "send-files"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   420
        #assert params[2].get("value") == "true"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   421
        assert params[1].get("name") == "to"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   422
        assert params[1].get("value") == self.report_email
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   423
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   424
    def check_ats_report_action(self, action):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   425
        assert action.findtext("./type") == "FileStoreAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   426
        params = action.findall("./parameters/parameter")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   427
        assert params[0].get("name") == "to-folder"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   428
        assert params[0].get("value") == self.file_store
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   429
        assert params[1].get("name") == "report-type"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   430
        assert params[1].get("value") == "ATS_REPORT"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   431
        assert params[2].get("name") == "date-format"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   432
        assert params[2].get("value") == "yyyyMMdd"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   433
        assert params[3].get("name") == "time-format"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   434
        assert params[3].get("value") == "HHmmss"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   435
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   436
    def check_aste_report_action(self, action):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   437
        assert action.findtext("./type") == "FileStoreAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   438
        params = action.findall("./parameters/parameter")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   439
        assert params[0].get("name") == "to-folder"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   440
        assert params[0].get("value") == self.file_store
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   441
        assert params[1].get("name") == "report-type"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   442
        assert params[1].get("value") == "ASTE_REPORT"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   443
        assert params[2].get("name") == "run-log"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   444
        assert params[2].get("value") == "true"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   445
        assert params[3].get("name") == "date-format"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   446
        assert params[3].get("value") == "yyyyMMdd"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   447
        assert params[4].get("name") == "time-format"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   448
        assert params[4].get("value") == "HHmmss"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   449
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   450
    def check_diamonds_action(self, action):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   451
        assert action.findtext("./type") == "DiamondsAction"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   452
        assert not action.findall("./parameters/parameter")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   453
    
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   454
    def test_files(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   455
        xml = self.generate_xml()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   456
#        files = iter(xml.findall("./files/file"))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   457
#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   458
#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   459
#        assert files.next().text == r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   460
#        self.assertRaises(StopIteration, files.next)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   461
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   462
    def test_generate_testasset_zip(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   463
        self.generate_xml()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   464
        if re.search(r"[.]zip", self.test_plan["testasset_location"]):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   465
            pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   466
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   467
            strbuffer = StringIO()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   468
            assert strbuffer == self.gen.generate_testasset_zip(self.test_plan, strbuffer)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   469
            zfile = zipfile.ZipFile(strbuffer, "r")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   470
            try:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   471
                contents = sorted(path(p).normpath() for p in zfile.namelist())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   472
                expected = sorted(path(p).normpath()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   473
                               for p in [(r"Localisation" + os.sep + "S60" + os.sep + "localisation.txt"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   474
                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file1.sis"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   475
                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file2.tcf"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   476
                                         (r"Tools" + os.sep + "TestCaseCreator" + os.sep + "test_creator.ini"),
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   477
                                         (r"testdrop.xml")])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   478
                diff = difflib.context_diff(expected, contents)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   479
                assert contents == expected, "\n".join(diff)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   480
            finally:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   481
                zfile.close()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   482
        
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   483
    def test_generate_drop(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   484
        "Manifest for ATS3Drop directory structure is generated."
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   485
        xml = self.generate_xml()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   486
        strbuffer = StringIO()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   487
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   488
        self.gen.generate_drop(self.test_plan, xml, strbuffer)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   489
        zfile = zipfile.ZipFile(strbuffer, "r")
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   490
        try:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   491
            contents = sorted(path(p).normpath() for p in zfile.namelist())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   492
            expected = sorted(path(p).normpath()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   493
                           for p in [r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   494
                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   495
                                     r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip",
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   496
                                     r"test.xml"])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   497
            diff = difflib.context_diff(expected, contents)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   498
            assert contents == expected, "\n".join(diff)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   499
        finally:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   500
            zfile.close()