Commit 58ba7a98e028f35c4084c8aef0164a64a7c517d7
0 parents
Exists in
master
Corre??o: removido o c?digo do arquivo de template HTML e acrescentado o c?digo …
…do Google Analytics em CoffeeScript
Showing
15 changed files
with
447 additions
and
0 deletions
Show diff stats
1 | +++ a/LEIAME | ||
@@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
1 | +Projeto Barra Brasil Distribuída - Desenvolvimento | ||
2 | + | ||
3 | +Como instalar | ||
4 | + | ||
5 | +Dependências: | ||
6 | + | ||
7 | + - Flask | ||
8 | + - assetgen | ||
9 | + - node.js | ||
10 | + - coffeescript | ||
11 | + - sass | ||
12 | + | ||
13 | +Requisitos da Barra | ||
14 | + | ||
15 | +1. A Barra deve ser adaptável a um desenho fluído e fixo | ||
16 | +2. A Barra deve suportar diferentes opções de cor de fundo | ||
17 | +3. A Barra deve suportar a inclusão dinâmica do nome da organização | ||
18 | +4. A Barra deve funcionar nos navegadores: | ||
19 | + Internet Explorer versão 8 ou superior | ||
20 | + Mozilla Firefox versão | ||
21 | + Google Chrome versão | ||
22 | + Safari versão | ||
23 | + Opera versão | ||
24 | + Navegadores de dispositivos móveis | ||
25 | + | ||
26 | +5. A Barra deve degradar graciosamente (graceful degradation ou progressive enhancement) clientes que não possuam compatibilidade ou no qual o javascript esteja desligado | ||
27 | + | ||
28 | +6. A barra deve ser acessível | ||
29 | + | ||
30 | +Considerações sobre a arquitetura | ||
31 | + | ||
32 | +1. A barra será hospedada em local centralizado e chamada de forma distribuída pelos portais institucionais | ||
33 | + | ||
34 | +2. A barra será incluída via javascript minificado, |
1 | +++ a/app/barrabrasil.py | ||
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +from flask import Flask, url_for, render_template, request, Response, make_response | ||
2 | +import hashlib | ||
3 | +app = Flask(__name__) | ||
4 | + | ||
5 | +@app.route('/') | ||
6 | +def pagina_teste(): | ||
7 | + # apos o desenvolvimento substituir por redirect para e-pwg | ||
8 | + bootstrap = ''' | ||
9 | + <html> | ||
10 | + <head></head> | ||
11 | + <body> | ||
12 | + <div id="barra-brasil"><a href="http://brasil.gov.br" style="background:#7F7F7F; height: 20px; padding:4px 0 4px 10px; display: block; font-family:sans,sans-serif; text-decoration:none; color:white; ">Portal do Governo Brasileiro</a></div> | ||
13 | + <script src="barra.js?cor=verde" type="text/javascript"></script> | ||
14 | + </body> | ||
15 | + </html> | ||
16 | + ''' | ||
17 | + return bootstrap # % url_for('static', filename='barra-brasil.js') | ||
18 | + | ||
19 | +@app.route('/barra.js') | ||
20 | +def barra(): | ||
21 | + nome_cor = request.args.get('cor', 'azul') | ||
22 | + paleta = { | ||
23 | + 'azul': '#004B82', | ||
24 | + 'preta': '#000000', | ||
25 | + 'cinza': '#7F7F7F', | ||
26 | + 'verde': '#00500F', | ||
27 | + } | ||
28 | + cor = paleta.get(nome_cor, '#004B82') | ||
29 | + conteudo = render_template('barra-brasil.js', cor=cor) | ||
30 | + etag = hashlib.sha1(conteudo.encode('utf-8')).hexdigest() | ||
31 | + if request.if_none_match and \ | ||
32 | + etag in request.if_none_match: | ||
33 | + resposta = Response(status=304) | ||
34 | + else: # nao esta em cache do navegador | ||
35 | + resposta = make_response(conteudo) | ||
36 | + resposta.set_etag(etag) | ||
37 | + resposta.headers['Content-type'] = 'application/javascript' | ||
38 | + resposta.headers['Cache-control'] = 'max-age: 3600' | ||
39 | + return resposta | ||
40 | + | ||
41 | +if __name__ == '__main__': | ||
42 | + app.run(debug=True) |
1 | +++ a/app/static/estilo-barra.css | ||
@@ -0,0 +1,64 @@ | @@ -0,0 +1,64 @@ | ||
1 | +/* http://meyerweb.com/eric/tools/css/reset/ | ||
2 | + v2.0 | 20110126 | ||
3 | + License: none (public domain) | ||
4 | +*/ | ||
5 | + | ||
6 | + | ||
7 | +#barra-brasil div, #barra-brasil a, #barra-brasil ul, #barra-brasil li{ | ||
8 | + margin: 0; | ||
9 | + padding: 0; | ||
10 | + border: 0; | ||
11 | + font-size: 100%; | ||
12 | + font-family: inherit; | ||
13 | + vertical-align: baseline; | ||
14 | +} | ||
15 | + | ||
16 | +body { | ||
17 | + line-height: 1; | ||
18 | +} | ||
19 | +#barra-brasil ul { | ||
20 | + list-style: none; | ||
21 | +} | ||
22 | + | ||
23 | +/* Ministerio do Planejamento */ | ||
24 | + | ||
25 | +#barra-brasil { | ||
26 | + position:relative; | ||
27 | + overflow:hidden; | ||
28 | + min-width:1000px; | ||
29 | + background: #7F7F7F url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAJxAAAAACCAMAAADJlDaXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRF/7QAAGsKAAAAGc+b7gAAAAN0Uk5T//8A18oNQQAAADVJREFUeNrs2DEBAAAIwCC1f2hT7IMYzAIAAAAAuQMAAAAAcgMAAAAA9FQkAAAAAPReAAEGAIRVYanUtckGAAAAAElFTkSuQmCC") center bottom no-repeat; | ||
30 | +} | ||
31 | + | ||
32 | +#barra-brasil .barra { | ||
33 | + display: block; | ||
34 | + width: 960px; | ||
35 | + height:28px; | ||
36 | + margin: 0 auto; | ||
37 | + background: url("data:image/gif;base64,R0lGODlhAQACAIAAAP+0AABrCiH5BAAAAAAALAAAAAABAAIAAAICDAoAOw==") 0 bottom repeat-x; | ||
38 | +} | ||
39 | + | ||
40 | +#barra-brasil .barra ul { | ||
41 | + float:right; | ||
42 | + width: 319px; | ||
43 | +} | ||
44 | + | ||
45 | +#barra-brasil .barra ul li { | ||
46 | + float: left; | ||
47 | + padding-left: 25px; | ||
48 | +} | ||
49 | + | ||
50 | +#barra-brasil .ai { | ||
51 | + display: block; | ||
52 | + width: 161px; | ||
53 | + height: 28px; | ||
54 | + text-indent: -99999px; | ||
55 | + background: #7F7F7F url("data:image/png;base64,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") no-repeat 0 4px; | ||
56 | +} | ||
57 | + | ||
58 | +#barra-brasil .brasilgov { | ||
59 | + display: block; | ||
60 | + width: 108px; | ||
61 | + height: 28px; | ||
62 | + text-indent: -99999px; | ||
63 | + background: #7F7F7F url("data:image/png;base64,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") no-repeat 0 4px; | ||
64 | +} |
1 | +++ a/assets/barra-brasil.coffee | ||
@@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
1 | + divBarra = document.getElementById("barra-brasil") | ||
2 | + head = document.getElementsByTagName("head")[0] | ||
3 | + link = document.createElement("link") | ||
4 | + href = document.createAttribute("href") | ||
5 | + | ||
6 | + # src.nodeValue = "http://barra.brasil.gov.br/estilo-barra.css"; | ||
7 | + # href.nodeValue = "http://189.9.137.173/estilo-barra.css"; | ||
8 | + # href.nodeValue = "static/estilo-barra.css" | ||
9 | + window._barrabrasil = | ||
10 | + insere_css: (css) -> | ||
11 | + style = document.createElement("style") | ||
12 | + tipo = document.createAttribute("type") | ||
13 | + tipo.nodeValue = "text/css" | ||
14 | + media = document.createAttribute("media") | ||
15 | + media.nodeValue = "all" | ||
16 | + conteudo = document.createTextNode(css) | ||
17 | + style.setAttributeNode tipo | ||
18 | + style.setAttributeNode media | ||
19 | + style.appendChild conteudo | ||
20 | + head.appendChild style | ||
21 | + | ||
22 | + divBarra.innerHTML = conteudoBarra |
1 | +++ a/assets/conteudo-barra.html | ||
@@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
1 | +<div class="barra"><ul><li><a href="http://www.acessoainformacao.gov.br" class="ai" title="Acesso à informação">www.sic.gov.br</a></li><li><a href="http://www.brasil.gov.br" class="brasilgov" title="Portal de Estado do Brasil">www.brasil.gov.br</a></li></ul></div> | ||
0 | \ No newline at end of file | 2 | \ No newline at end of file |
1 | +++ a/assets/estilo-barra.scss | ||
@@ -0,0 +1,62 @@ | @@ -0,0 +1,62 @@ | ||
1 | +/* http://meyerweb.com/eric/tools/css/reset/ | ||
2 | + v2.0 | 20110126 | ||
3 | + License: none (public domain) | ||
4 | +*/ | ||
5 | + | ||
6 | +#barra-brasil { | ||
7 | + div, a, ul, li { | ||
8 | + margin: 0; | ||
9 | + padding: 0; | ||
10 | + border: 0; | ||
11 | + font-size: 100%; | ||
12 | + font-family: inherit; | ||
13 | + vertical-align: baseline; | ||
14 | + } | ||
15 | +} | ||
16 | + | ||
17 | +body { | ||
18 | + line-height: 1; | ||
19 | +} | ||
20 | + | ||
21 | +#barra-brasil ul { | ||
22 | + list-style: none; | ||
23 | +} | ||
24 | + | ||
25 | +/* Ministerio do Planejamento */ | ||
26 | + | ||
27 | +#barra-brasil { | ||
28 | + position: relative; | ||
29 | + overflow: hidden; | ||
30 | + min-width: 1000px; | ||
31 | + $cor: \{\{ cor \}\}; | ||
32 | + background: $cor embed("imagens/barra-brasil-v3-bgx.png") center bottom no-repeat; | ||
33 | + .barra { | ||
34 | + display: block; | ||
35 | + width: 960px; | ||
36 | + height: 28px; | ||
37 | + margin: 0 auto; | ||
38 | + background: embed("imagens/barra-brasil-v3-bgx.gif") 0 bottom repeat-x; | ||
39 | + ul { | ||
40 | + float: right; | ||
41 | + width: 319px; | ||
42 | + li { | ||
43 | + float: left; | ||
44 | + padding-left: 25px; | ||
45 | + } | ||
46 | + } | ||
47 | + } | ||
48 | + .ai { | ||
49 | + display: block; | ||
50 | + width: 161px; | ||
51 | + height: 28px; | ||
52 | + text-indent: -99999px; | ||
53 | + background: $cor embed("imagens/ai.png") no-repeat 0 4px; | ||
54 | + } | ||
55 | + .brasilgov { | ||
56 | + display: block; | ||
57 | + width: 108px; | ||
58 | + height: 28px; | ||
59 | + text-indent: -99999px; | ||
60 | + background: $cor embed("imagens/brasil.png") no-repeat 0 4px; | ||
61 | + } | ||
62 | +} |
1 | +++ a/assets/google-analytics.coffee | ||
@@ -0,0 +1,12 @@ | @@ -0,0 +1,12 @@ | ||
1 | +_gaq = _gaq or [] | ||
2 | +_gaq.push ["_setAccount", "UA-37670561-1"] | ||
3 | +_gaq.push ["_setDomainName", "gov.br"] | ||
4 | +_gaq.push ["_trackPageview"] | ||
5 | +(-> | ||
6 | + ga = document.createElement("script") | ||
7 | + ga.type = "text/javascript" | ||
8 | + ga.async = true | ||
9 | + ga.src = ((if "https:" is document.location.protocol then "https://ssl" else "http://www")) + ".google-analytics.com/ga.js" | ||
10 | + s = document.getElementsByTagName("script")[0] | ||
11 | + s.parentNode.insertBefore ga, s | ||
12 | +)() |
5.58 KB
43 Bytes
183 Bytes
5.6 KB
1 | +++ a/barra-brasil-1.yaml | ||
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +# configuracao do assetgen para: | ||
2 | +# - gerar o script de comportamento, minificado | ||
3 | +# - gerar o css com as imagens incorporadas | ||
4 | + | ||
5 | +generate: | ||
6 | + | ||
7 | +- barra-brasil.js: | ||
8 | + source: | ||
9 | + - assets/conteudo-barra.html | ||
10 | + - assets/barra-brasil.coffee | ||
11 | + - assets/google-analytics.coffee | ||
12 | + - raw: "})();" # fechamento do escopo da funcao anonima (ver template abaixo) | ||
13 | + template: | | ||
14 | + (function(){ | ||
15 | + var conteudoBarra = '${source|trim}'; | ||
16 | + | ||
17 | +- estilo-barra.css: | ||
18 | + source: | ||
19 | + - assets/estilo-barra.scss | ||
20 | + depends: | ||
21 | + - assets/imagens/* | ||
22 | + embed.path.root: assets | ||
23 | + embed.url.base: imagens/ | ||
24 | + | ||
25 | +- barra-brasil-css.js: | ||
26 | + source: | ||
27 | + - build/estilo-barra.css | ||
28 | + template: | | ||
29 | + window._barrabrasil.insere_css('${source|trim}'); | ||
30 | + | ||
31 | +css.embed: true | ||
32 | +css.embed.only: true | ||
33 | +css.compress: true | ||
34 | +js.compress: false | ||
35 | +js.uglify.bin: uglifyjs | ||
36 | +output.directory: build | ||
37 | +output.hashed: false | ||
38 | +output.manifest: app/assets.json | ||
39 | + | ||
40 | +profile.dev: | ||
41 | + css.compress: false | ||
42 | + js.compress: false |
1 | +++ a/barra-brasil-2.yaml | ||
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
1 | +# configuracao do assetgen para: | ||
2 | +# - mesclar o css com javascript de comportamento | ||
3 | + | ||
4 | +generate: | ||
5 | + | ||
6 | +- barra-brasil.js: | ||
7 | + source: | ||
8 | + - build/barra-brasil.js # parte de comportamento | ||
9 | + - build/barra-brasil-css.js # codigo de insercao do css | ||
10 | + uglify.bin: uglifyjs | ||
11 | + | ||
12 | +css.embed: true | ||
13 | +css.embed.only: true | ||
14 | +output.directory: app/templates | ||
15 | +output.hashed: false | ||
16 | +output.manifest: assets.json | ||
17 | + | ||
18 | +profile.dev: | ||
19 | + css.compress: false | ||
20 | + js.compress: false |
47.2 KB
1 | +++ a/test/Teste de stress.jmx | ||
@@ -0,0 +1,148 @@ | @@ -0,0 +1,148 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<jmeterTestPlan version="1.2" properties="2.3" jmeter="2.8 r1393162"> | ||
3 | + <hashTree> | ||
4 | + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Stress Bitch!" enabled="true"> | ||
5 | + <stringProp name="TestPlan.comments">Teste de stress genérico</stringProp> | ||
6 | + <boolProp name="TestPlan.functional_mode">false</boolProp> | ||
7 | + <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> | ||
8 | + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> | ||
9 | + <collectionProp name="Arguments.arguments"/> | ||
10 | + </elementProp> | ||
11 | + <stringProp name="TestPlan.user_define_classpath"></stringProp> | ||
12 | + </TestPlan> | ||
13 | + <hashTree> | ||
14 | + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Web Test" enabled="true"> | ||
15 | + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> | ||
16 | + <boolProp name="LoopController.continue_forever">false</boolProp> | ||
17 | + <stringProp name="LoopController.loops">100</stringProp> | ||
18 | + </elementProp> | ||
19 | + <stringProp name="ThreadGroup.num_threads">1000</stringProp> | ||
20 | + <stringProp name="ThreadGroup.ramp_time">0</stringProp> | ||
21 | + <longProp name="ThreadGroup.start_time">1356091419000</longProp> | ||
22 | + <longProp name="ThreadGroup.end_time">1356091419000</longProp> | ||
23 | + <boolProp name="ThreadGroup.scheduler">false</boolProp> | ||
24 | + <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> | ||
25 | + <stringProp name="ThreadGroup.duration"></stringProp> | ||
26 | + <stringProp name="ThreadGroup.delay"></stringProp> | ||
27 | + </ThreadGroup> | ||
28 | + <hashTree> | ||
29 | + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> | ||
30 | + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> | ||
31 | + <collectionProp name="Arguments.arguments"/> | ||
32 | + </elementProp> | ||
33 | + <stringProp name="HTTPSampler.domain">barra.brasil.gov.br</stringProp> | ||
34 | + <stringProp name="HTTPSampler.port"></stringProp> | ||
35 | + <stringProp name="HTTPSampler.connect_timeout"></stringProp> | ||
36 | + <stringProp name="HTTPSampler.response_timeout"></stringProp> | ||
37 | + <stringProp name="HTTPSampler.protocol"></stringProp> | ||
38 | + <stringProp name="HTTPSampler.contentEncoding"></stringProp> | ||
39 | + <stringProp name="HTTPSampler.path"></stringProp> | ||
40 | + <stringProp name="HTTPSampler.method">GET</stringProp> | ||
41 | + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> | ||
42 | + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> | ||
43 | + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> | ||
44 | + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> | ||
45 | + <boolProp name="HTTPSampler.monitor">false</boolProp> | ||
46 | + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> | ||
47 | + </HTTPSamplerProxy> | ||
48 | + <hashTree/> | ||
49 | + <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> | ||
50 | + <boolProp name="ResultCollector.error_logging">false</boolProp> | ||
51 | + <objProp> | ||
52 | + <name>saveConfig</name> | ||
53 | + <value class="SampleSaveConfiguration"> | ||
54 | + <time>true</time> | ||
55 | + <latency>true</latency> | ||
56 | + <timestamp>true</timestamp> | ||
57 | + <success>true</success> | ||
58 | + <label>true</label> | ||
59 | + <code>true</code> | ||
60 | + <message>true</message> | ||
61 | + <threadName>true</threadName> | ||
62 | + <dataType>true</dataType> | ||
63 | + <encoding>false</encoding> | ||
64 | + <assertions>true</assertions> | ||
65 | + <subresults>true</subresults> | ||
66 | + <responseData>false</responseData> | ||
67 | + <samplerData>false</samplerData> | ||
68 | + <xml>true</xml> | ||
69 | + <fieldNames>false</fieldNames> | ||
70 | + <responseHeaders>false</responseHeaders> | ||
71 | + <requestHeaders>false</requestHeaders> | ||
72 | + <responseDataOnError>false</responseDataOnError> | ||
73 | + <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> | ||
74 | + <assertionsResultsToSave>0</assertionsResultsToSave> | ||
75 | + <bytes>true</bytes> | ||
76 | + </value> | ||
77 | + </objProp> | ||
78 | + <stringProp name="filename"></stringProp> | ||
79 | + </ResultCollector> | ||
80 | + <hashTree/> | ||
81 | + <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> | ||
82 | + <boolProp name="ResultCollector.error_logging">false</boolProp> | ||
83 | + <objProp> | ||
84 | + <name>saveConfig</name> | ||
85 | + <value class="SampleSaveConfiguration"> | ||
86 | + <time>true</time> | ||
87 | + <latency>true</latency> | ||
88 | + <timestamp>true</timestamp> | ||
89 | + <success>true</success> | ||
90 | + <label>true</label> | ||
91 | + <code>true</code> | ||
92 | + <message>true</message> | ||
93 | + <threadName>true</threadName> | ||
94 | + <dataType>true</dataType> | ||
95 | + <encoding>false</encoding> | ||
96 | + <assertions>true</assertions> | ||
97 | + <subresults>true</subresults> | ||
98 | + <responseData>false</responseData> | ||
99 | + <samplerData>false</samplerData> | ||
100 | + <xml>true</xml> | ||
101 | + <fieldNames>false</fieldNames> | ||
102 | + <responseHeaders>false</responseHeaders> | ||
103 | + <requestHeaders>false</requestHeaders> | ||
104 | + <responseDataOnError>false</responseDataOnError> | ||
105 | + <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> | ||
106 | + <assertionsResultsToSave>0</assertionsResultsToSave> | ||
107 | + <bytes>true</bytes> | ||
108 | + </value> | ||
109 | + </objProp> | ||
110 | + <stringProp name="filename"></stringProp> | ||
111 | + </ResultCollector> | ||
112 | + <hashTree/> | ||
113 | + <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true"> | ||
114 | + <boolProp name="ResultCollector.error_logging">false</boolProp> | ||
115 | + <objProp> | ||
116 | + <name>saveConfig</name> | ||
117 | + <value class="SampleSaveConfiguration"> | ||
118 | + <time>true</time> | ||
119 | + <latency>true</latency> | ||
120 | + <timestamp>true</timestamp> | ||
121 | + <success>true</success> | ||
122 | + <label>true</label> | ||
123 | + <code>true</code> | ||
124 | + <message>true</message> | ||
125 | + <threadName>true</threadName> | ||
126 | + <dataType>true</dataType> | ||
127 | + <encoding>false</encoding> | ||
128 | + <assertions>true</assertions> | ||
129 | + <subresults>true</subresults> | ||
130 | + <responseData>false</responseData> | ||
131 | + <samplerData>false</samplerData> | ||
132 | + <xml>true</xml> | ||
133 | + <fieldNames>false</fieldNames> | ||
134 | + <responseHeaders>false</responseHeaders> | ||
135 | + <requestHeaders>false</requestHeaders> | ||
136 | + <responseDataOnError>false</responseDataOnError> | ||
137 | + <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> | ||
138 | + <assertionsResultsToSave>0</assertionsResultsToSave> | ||
139 | + <bytes>true</bytes> | ||
140 | + </value> | ||
141 | + </objProp> | ||
142 | + <stringProp name="filename"></stringProp> | ||
143 | + </ResultCollector> | ||
144 | + <hashTree/> | ||
145 | + </hashTree> | ||
146 | + </hashTree> | ||
147 | + </hashTree> | ||
148 | +</jmeterTestPlan> |