test_joska 1.1.5 → 1.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/test_joska/builder.rb +249 -21
- data/lib/test_joska/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0f655909c47f9cafab17b7efea3156c7585d3a4795d0b0049323fe952f84f6d
|
4
|
+
data.tar.gz: 580e3b6b22976e1c8bf971c73a846dcd8fba625c8e2ba40be795d8eb31b13988
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c74f63230d7dd571c3361d5af957d1796b2dfb5e4e4c16c07376de735e34ff7ef37bc9a1be0f5135dd22a0936178b0f7432412b9005dcacea8faeb9f58d4e818
|
7
|
+
data.tar.gz: c21c4cfbd43906bd75bf9390a6af91171614941bfa75f4e72f1bb276c4dc2bf7affa6d7932dacbaadaaa55441b7893bb1ec6edfd44e468eb12cbedcec0d64902
|
data/Gemfile.lock
CHANGED
data/lib/test_joska/builder.rb
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
module TestJoska
|
2
2
|
|
3
|
+
require 'report_builder'
|
4
|
+
require 'json'
|
5
|
+
require 'rest-client'
|
6
|
+
require 'zip'
|
7
|
+
|
3
8
|
@@raise_on_error = false
|
4
9
|
|
5
10
|
@@verbose = false
|
6
11
|
|
7
|
-
@@URL =
|
12
|
+
@@URL = nil
|
8
13
|
|
9
|
-
@@HEAD =
|
14
|
+
@@HEAD = nil
|
10
15
|
|
11
16
|
@@standard_endpoint = ""
|
12
17
|
|
13
|
-
@@
|
18
|
+
@@standard_header = ""
|
14
19
|
|
15
20
|
@@internal_log = ""
|
16
21
|
|
@@ -18,15 +23,17 @@ module TestJoska
|
|
18
23
|
|
19
24
|
@@has_token = false
|
20
25
|
|
21
|
-
def
|
26
|
+
def jskSetStandardEndpoint(endpoint)
|
22
27
|
|
23
28
|
@@standard_endpoint = endpoint
|
24
29
|
|
25
30
|
end
|
26
31
|
|
27
|
-
def
|
32
|
+
def jskSetStandardHeader(header)
|
33
|
+
|
34
|
+
return @@standard_header = @@HEAD[header] if header.kind_of?(String)
|
28
35
|
|
29
|
-
@@
|
36
|
+
@@standard_header = header
|
30
37
|
|
31
38
|
end
|
32
39
|
|
@@ -36,26 +43,28 @@ module TestJoska
|
|
36
43
|
p @@URL
|
37
44
|
p @@HEAD
|
38
45
|
p @@standard_endpoint
|
39
|
-
p @@
|
46
|
+
p @@standard_header
|
40
47
|
p @@internal_log
|
41
48
|
p @@url_log
|
42
49
|
end
|
43
50
|
|
44
51
|
def jskSetup(options)
|
45
52
|
|
46
|
-
@@raise_on_error = options["raise_on_error"]
|
53
|
+
@@raise_on_error = options["raise_on_error"] if options["raise_on_error"]
|
47
54
|
|
48
|
-
@@verbose = options["verbose"]
|
55
|
+
@@verbose = options["verbose"] if options["verbose"]
|
49
56
|
|
50
|
-
@@URL = options["url_parts"]
|
57
|
+
@@URL = options["url_parts"] if options["url_parts"]
|
51
58
|
|
52
|
-
@@HEAD = options["headers"]
|
59
|
+
@@HEAD = options["headers"] if options["headers"]
|
53
60
|
|
54
|
-
@@standard_endpoint = options["standard_endpoint"]
|
61
|
+
@@standard_endpoint = options["standard_endpoint"] if options["standard_endpoint"]
|
62
|
+
|
63
|
+
@@standard_header = @@HEAD[options["standard_header_name"]] if options["standard_header_name"]
|
55
64
|
|
56
|
-
@@
|
65
|
+
@@standard_header = options["standard_header"] if options["standard_header"]
|
57
66
|
|
58
|
-
@@has_token = options["has_token"]
|
67
|
+
@@has_token = options["has_token"] if options["has_token"]
|
59
68
|
|
60
69
|
end
|
61
70
|
|
@@ -91,13 +100,17 @@ module TestJoska
|
|
91
100
|
|
92
101
|
end
|
93
102
|
|
94
|
-
def request(method, product, type, details=nil, payload=nil,
|
103
|
+
def request(method, product, type, details=nil, payload=nil, header=nil, endpoint=nil)
|
95
104
|
|
96
|
-
|
105
|
+
raise "URL_parts não configurada" if !@@URL
|
97
106
|
|
98
|
-
|
107
|
+
endpoint = @@standard_endpoint if !endpoint
|
99
108
|
|
100
|
-
|
109
|
+
url = jskUrlBuilder(product, type, details, endpoint)
|
110
|
+
|
111
|
+
header = @@standard_header if !header
|
112
|
+
|
113
|
+
header = @@HEAD[header] if header.kind_of?(String)
|
101
114
|
|
102
115
|
payload = payload.to_json if payload
|
103
116
|
|
@@ -145,15 +158,15 @@ module TestJoska
|
|
145
158
|
|
146
159
|
end
|
147
160
|
|
148
|
-
def jskUrlBuilder(product, type, details, endpoint
|
161
|
+
def jskUrlBuilder(product, type, details, endpoint)
|
149
162
|
|
150
|
-
|
163
|
+
raise "URL_parts não configurada" if !@@URL
|
151
164
|
|
152
165
|
details = "" if !details
|
153
166
|
|
154
167
|
details = [details] if !details.kind_of?(Array)
|
155
168
|
|
156
|
-
url = @@URL[product]["base"][
|
169
|
+
url = @@URL[product]["base"][endpoint]
|
157
170
|
|
158
171
|
if !@@URL[product]["path"][type].kind_of?(Array)
|
159
172
|
|
@@ -310,4 +323,219 @@ module TestJoska
|
|
310
323
|
|
311
324
|
end
|
312
325
|
|
326
|
+
|
327
|
+
def jskSlackExcelSender(options)
|
328
|
+
|
329
|
+
name = options["name"]
|
330
|
+
|
331
|
+
project = options["project"]
|
332
|
+
|
333
|
+
project_type = options["project_type"]
|
334
|
+
|
335
|
+
environment = options["environment"]
|
336
|
+
|
337
|
+
additional_info = options["additional_info"]
|
338
|
+
|
339
|
+
report_path = options["report_path"]
|
340
|
+
|
341
|
+
slack_url = options["slack_url"]
|
342
|
+
|
343
|
+
send_server = options["send_server"]
|
344
|
+
|
345
|
+
send_slack = options["send_slack"]
|
346
|
+
|
347
|
+
send_excel = options["send_excel"]
|
348
|
+
|
349
|
+
rep_id = 0
|
350
|
+
|
351
|
+
slack_payload = {}
|
352
|
+
|
353
|
+
excel_payload = {}
|
354
|
+
|
355
|
+
t = Time.now
|
356
|
+
|
357
|
+
generated_report_path = "#{report_path}/report_#{project}_#{project_type}_#{environment} #{t.strftime('%d_%m_%y %H_%M_%S')}"
|
358
|
+
|
359
|
+
options = {
|
360
|
+
input_path: report_path,
|
361
|
+
report_path: generated_report_path,
|
362
|
+
report_types: [:html],
|
363
|
+
report_title: "Report: #{project} #{project_type} #{environment}",
|
364
|
+
additional_info: additional_info
|
365
|
+
}
|
366
|
+
|
367
|
+
ReportBuilder.build_report options
|
368
|
+
|
369
|
+
if send_server
|
370
|
+
|
371
|
+
p "Enviando para o servidor..."
|
372
|
+
|
373
|
+
file_to_transfer = "#{generated_report_path}.html"
|
374
|
+
|
375
|
+
zipfile_name = "#{report_path}/mandar.zip"
|
376
|
+
|
377
|
+
File.delete(zipfile_name) if File.exist?(zipfile_name)
|
378
|
+
|
379
|
+
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
|
380
|
+
|
381
|
+
file_to_transfer = file_to_transfer.split('/').last
|
382
|
+
|
383
|
+
zipfile.add(file_to_transfer, File.join(report_path, file_to_transfer))
|
384
|
+
|
385
|
+
end
|
386
|
+
|
387
|
+
file_to_send = File.new(zipfile_name, 'rb')
|
388
|
+
|
389
|
+
payload = {
|
390
|
+
:report => file_to_send,
|
391
|
+
:usr => name,
|
392
|
+
:project => "#{project}_#{project_type}",
|
393
|
+
:env => environment,
|
394
|
+
:simple => true
|
395
|
+
}
|
396
|
+
|
397
|
+
url = "http://corp-report01.compute.br-sao-1.cvccorp.cloud:4444"
|
398
|
+
|
399
|
+
repId = ""
|
400
|
+
|
401
|
+
RestClient::Request.execute(method: 'post', url: "#{url}/generate", payload: payload) do |response|
|
402
|
+
|
403
|
+
repId = response.message
|
404
|
+
|
405
|
+
end
|
406
|
+
|
407
|
+
if repId.to_i == 0
|
408
|
+
|
409
|
+
p "Deu algum problema no servidor"
|
410
|
+
|
411
|
+
end
|
412
|
+
|
413
|
+
end
|
414
|
+
|
415
|
+
if send_slack || send_excel
|
416
|
+
|
417
|
+
rep = JSON.parse(File.read("#{report_path}/report.json"))
|
418
|
+
|
419
|
+
scn_status = {}
|
420
|
+
|
421
|
+
step_status = {}
|
422
|
+
|
423
|
+
scn_status["success"] = 0
|
424
|
+
|
425
|
+
excel_report = []
|
426
|
+
|
427
|
+
rep.each do |esq|
|
428
|
+
|
429
|
+
esq["elements"].each do |scn|
|
430
|
+
|
431
|
+
cur_scn = "success" if scn["type"] == "scenario"
|
432
|
+
|
433
|
+
excel_scenario = {
|
434
|
+
"Produto"=> project,
|
435
|
+
"Cenário"=> esq["name"],
|
436
|
+
"Status"=> "passed",
|
437
|
+
"Erro"=> nil,
|
438
|
+
"Data"=> t.strftime('%d/%m/%y'),
|
439
|
+
"Ambiente"=> environment,
|
440
|
+
"Tipo"=> project_type,
|
441
|
+
"Hora"=> t.strftime('%H:%M:%S')
|
442
|
+
}
|
443
|
+
|
444
|
+
scn["steps"].each do |step|
|
445
|
+
|
446
|
+
if cur_scn == "success" && step["result"]["status"] != "passed"
|
447
|
+
|
448
|
+
excel_scenario["Status"] = step["result"]["status"]
|
449
|
+
|
450
|
+
excel_scenario["Erro"] = step["result"]["error_message"].split("\n").first.split("(RuntimeError)").first
|
451
|
+
|
452
|
+
cur_scn = step["result"]["status"]
|
453
|
+
|
454
|
+
end
|
455
|
+
|
456
|
+
step_status[step["result"]["status"]] ? step_status[step["result"]["status"]] += 1 : step_status[step["result"]["status"]] = 1
|
457
|
+
|
458
|
+
end
|
459
|
+
|
460
|
+
excel_report.push(excel_scenario) if scn["keyword"] != "Contexto"
|
461
|
+
|
462
|
+
scn_status[cur_scn] ? scn_status[cur_scn] += 1 : scn_status[cur_scn] = 1 if cur_scn
|
463
|
+
|
464
|
+
end
|
465
|
+
|
466
|
+
end
|
467
|
+
|
468
|
+
not_passed = 0
|
469
|
+
|
470
|
+
slack_title = "Teste de #{project} #{project_type} no ambiente #{environment} concluido"
|
471
|
+
|
472
|
+
slack_msg = "Cenários: "
|
473
|
+
|
474
|
+
scn_status.keys. each do |key|
|
475
|
+
|
476
|
+
slack_msg = "#{slack_msg}#{key} : #{scn_status[key]} / "
|
477
|
+
|
478
|
+
not_passed += scn_status[key] if key != "success"
|
479
|
+
|
480
|
+
end
|
481
|
+
|
482
|
+
slack_msg = slack_msg.chomp("/ ")
|
483
|
+
|
484
|
+
slack_msg = "#{slack_msg}\nSteps: "
|
485
|
+
|
486
|
+
step_status.keys. each do |key| slack_msg = "#{slack_msg}#{key} : #{step_status[key]} / " end
|
487
|
+
|
488
|
+
slack_msg = slack_msg.chomp("/ ")
|
489
|
+
|
490
|
+
total = not_passed + scn_status["success"]
|
491
|
+
|
492
|
+
green = (255*scn_status["success"]/total).to_s(16).upcase
|
493
|
+
|
494
|
+
green = "0#{green}" if green.length == 1
|
495
|
+
|
496
|
+
red = (255*not_passed/total).to_s(16).upcase
|
497
|
+
|
498
|
+
red = "0#{red}" if red.length == 1
|
499
|
+
|
500
|
+
slack_color = "##{red}#{green}00"
|
501
|
+
|
502
|
+
link = nil
|
503
|
+
|
504
|
+
link = "#{url}/#{name}/#{project}_#{project_type}/#{environment}/#{repId}" if repId.to_i != 0
|
505
|
+
|
506
|
+
slack_payload = {
|
507
|
+
"attachments" => [
|
508
|
+
{
|
509
|
+
"color": slack_color,
|
510
|
+
"title": slack_title,
|
511
|
+
"title_link": link,
|
512
|
+
"text": slack_msg
|
513
|
+
}
|
514
|
+
]
|
515
|
+
}.to_json
|
516
|
+
|
517
|
+
excel_payload = {"scenarios"=>excel_report}
|
518
|
+
|
519
|
+
end
|
520
|
+
|
521
|
+
if send_slack
|
522
|
+
|
523
|
+
p "Enviando para o slack..."
|
524
|
+
|
525
|
+
RestClient::Request.execute(method: "post", url: slack_url, payload: slack_payload)
|
526
|
+
|
527
|
+
end
|
528
|
+
|
529
|
+
if send_excel
|
530
|
+
|
531
|
+
p "Envidando para o excel..."
|
532
|
+
|
533
|
+
excel_url = "http://corp-report01.compute.br-sao-1.cvccorp.cloud:8080/upload"
|
534
|
+
|
535
|
+
p RestClient::Request.execute(method: "post", url: excel_url, payload: excel_payload)
|
536
|
+
|
537
|
+
end
|
538
|
+
|
539
|
+
end
|
540
|
+
|
313
541
|
end
|
data/lib/test_joska/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test_joska
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas Diogo Dovas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|