What's new? | Help | Directory | Sign in
Google
             
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import os
from Cheetah.Template import Template

class SuitesReport:
""" Create test suites report.

Current implementation writes output in JUnitReport format for CI server
interpret the data.
"""
def __init__(self, template_file_name):
self.template_file_name = template_file_name


def writeReport(self, data, output):
""" Outputs test result data in test report friendly format.

The template currently structured to match JUnitReport DTD.

Args:
data: structured data with examples in SuiteReportTest
output: output stream that results will be written
"""

transformed_data = self.groupResultsBySuites(data)
template = Template(file=self.__template_location(),
searchList={'data': transformed_data})
output.write(str(template))


def groupResultsBySuites(self, original_results):
""" Groups generated test results by suites.

Sample output can be seen at SuitesReportTest.SAMPLE_OUTPUT.
"""
transformed_results = {}
for browser_name in original_results.keys():
if self.__isTimedoutTest(original_results, browser_name):
transformed_results[browser_name] = original_results[browser_name]
continue
else:
transformed_results[browser_name] = {}
self.__copyEnvironmentData(original_results,
transformed_results, browser_name)
self.__appendSuiteInfo(transformed_results[browser_name],
original_results[browser_name]["results"])

return transformed_results

def __isTimedoutTest(self, test_data, browser_name):
return test_data[browser_name] == "TIMED-OUT"


def __copyEnvironmentData(self, test_data, result, browser_name):
for key in ["browser_info", "gears_info", "url"]:
result[browser_name][key] = test_data[browser_name][key]


def __template_location(self):
return os.path.join(os.path.dirname(__file__), self.template_file_name)


def __appendSuiteInfo(self, store, test_data):
store["suites"] = {}
for file_result in test_data:
suite_name = file_result["suitename"]
if (suite_name not in store["suites"]):
store["suites"][suite_name] = {"file_results": [], "elapsed": 0}

# Elapsed time for a suite is the sum of the elapsed times of the files
store["suites"][suite_name]["elapsed"] += float(file_result["elapsed"])

store["suites"][suite_name]["file_results"].append( \
{"filename" : file_result["filename"],
"results" : file_result["results"]})

# Leave value as string for consistency
store["suites"][suite_name]["elapsed"] = \
str(store["suites"][suite_name]["elapsed"])
Show details Hide details

Change log

r653 by gears.daemon on Jan 04, 2008   Diff
[Author: ace]

Changing units on latency measures to
seconds for Pulse.
Added a timestamp getter to lang.js (hope
this is the right place)
and also touched a line of python.

R=aa,miket
CC=gears-internal
APPROVED=miket
DELTA=23  (9 added, 6 deleted, 8 changed)
...
Go to: 
Project members, sign in to write a code review

Older revisions

r648 by gears.daemon on Jan 04, 2008   Diff
[Author: aa]

g4 rename test2 test

Fixed all references to "test2". Allen
...
All revisions of this file

File info

Size: 2758 bytes, 78 lines

File properties

svn:executable
*