teuton 2.1.8 → 2.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -8
- data/bin/check_teuton +43 -0
- data/docs/changelog/contributions.md +32 -0
- data/docs/changelog/v2.1.md +22 -0
- data/docs/changelog/v2.2.md +29 -0
- data/docs/commands/README.md +105 -7
- data/docs/commands/example_check.md +54 -0
- data/docs/commands/example_run.md +112 -0
- data/docs/dsl/README.md +11 -9
- data/docs/dsl/definition/expect.md +25 -21
- data/docs/dsl/definition/group.md +5 -1
- data/docs/dsl/definition/result.md +45 -34
- data/docs/dsl/definition/run_local.md +34 -0
- data/docs/dsl/definition/run_remote.md +119 -0
- data/docs/dsl/definition/target.md +6 -0
- data/docs/dsl/execution/export.md +27 -19
- data/docs/dsl/execution/play.md +4 -0
- data/docs/dsl/execution/send.md +21 -2
- data/docs/dsl/execution/show.md +13 -8
- data/docs/dsl/setting/get.md +24 -8
- data/docs/dsl/setting/set.md +8 -3
- data/docs/install/README.md +19 -26
- data/docs/install/modes_of_use.md +27 -26
- data/docs/install/scripts.md +53 -36
- data/docs/install/vagrant_docker.md +56 -0
- data/docs/learn/README.md +13 -6
- data/docs/learn/example-01-target.md +78 -61
- data/docs/learn/example-02-config.md +152 -0
- data/docs/learn/example-03-remote-hosts.md +31 -25
- data/docs/learn/example-04-use.md +23 -17
- data/docs/learn/example-05-debug.md +24 -17
- data/docs/learn/example-06-log.md +70 -0
- data/lib/teuton/application.rb +7 -4
- data/lib/teuton/case_manager/case/case.rb +4 -1
- data/lib/teuton/case_manager/case/dsl/expect.rb +3 -1
- data/lib/teuton/case_manager/case/dsl/goto.rb +12 -7
- data/lib/teuton/case_manager/case/dsl/macro.rb +38 -0
- data/lib/teuton/case_manager/case/dsl/main.rb +1 -2
- data/lib/teuton/case_manager/case/dsl/target.rb +1 -1
- data/lib/teuton/case_manager/case/runner.rb +7 -7
- data/lib/teuton/case_manager/case_manager.rb +1 -20
- data/lib/teuton/case_manager/check_cases.rb +12 -2
- data/lib/teuton/case_manager/dsl.rb +4 -6
- data/lib/teuton/case_manager/export_manager.rb +29 -3
- data/lib/teuton/case_manager/report.rb +29 -8
- data/lib/teuton/case_manager/show.rb +8 -4
- data/lib/teuton/cli.rb +1 -0
- data/lib/teuton/cli/play.rb +1 -0
- data/lib/teuton/cli/version.rb +1 -4
- data/lib/teuton/files/config.yaml +0 -1
- data/lib/teuton/files/start.rb +1 -1
- data/lib/teuton/files/template/case.html +135 -0
- data/lib/teuton/files/template/resume.html +115 -0
- data/lib/teuton/project/laboratory/builtin.rb +2 -1
- data/lib/teuton/project/laboratory/dsl.rb +13 -15
- data/lib/teuton/project/laboratory/laboratory.rb +5 -1
- data/lib/teuton/project/laboratory/show.rb +21 -13
- data/lib/teuton/project/name_file_finder.rb +6 -1
- data/lib/teuton/project/project.rb +7 -3
- data/lib/teuton/project/readme/dsl.rb +3 -1
- data/lib/teuton/project/readme/readme.rb +37 -26
- data/lib/teuton/project/skeleton.rb +20 -4
- data/lib/teuton/report/close.rb +15 -11
- data/lib/teuton/report/formatter/formatter_factory.rb +10 -6
- data/lib/teuton/report/formatter/html_formatter.rb +16 -79
- data/lib/teuton/report/formatter/resume_html_formatter.rb +39 -0
- data/lib/teuton/report/formatter/resume_yaml_formatter.rb +7 -1
- data/lib/teuton/report/report.rb +5 -4
- data/lib/teuton/report/show.rb +55 -26
- metadata +26 -39
- data/docs/changelog/todo.md +0 -46
- data/docs/commands/create_skeleton.md +0 -31
- data/docs/commands/help.md +0 -13
- data/docs/commands/revise_test.md +0 -46
- data/docs/commands/run_test_unit.md +0 -78
- data/docs/commands/show_version.md +0 -9
- data/docs/developers/01-telnet.md +0 -121
- data/docs/developers/02-ssh.md +0 -93
- data/docs/developers/03-encoding.md +0 -153
- data/docs/developers/comparative.md +0 -17
- data/docs/dsl/_Sidebar.md +0 -30
- data/docs/dsl/definition/goto.md +0 -112
- data/docs/dsl/definition/run.md +0 -23
- data/docs/install/tested_os.md +0 -25
- data/docs/install/vagrant.md +0 -9
- data/docs/learn/example-02-configfile.md +0 -174
- data/docs/learn/quick-demo.md +0 -170
- data/lib/teuton/case_manager/case/dsl/check.rb +0 -24
- data/lib/teuton/case_manager/case/dsl/missing.rb +0 -12
- data/lib/teuton/files/gitignore +0 -2
data/docs/learn/quick-demo.md
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
[<< back](README.md)
|
|
3
|
-
|
|
4
|
-
# Quick demo
|
|
5
|
-
|
|
6
|
-
Every TEUTON challenge (Test Unit) consists of 2 files.
|
|
7
|
-
Let's look at example [learn-03-remote-hosts](examples/learn-03-remote-hosts):
|
|
8
|
-
|
|
9
|
-
| File | Description |
|
|
10
|
-
| ----------- | ------------------- |
|
|
11
|
-
| start.rb | Defines TEUTON test |
|
|
12
|
-
| config.yaml | Configuration file |
|
|
13
|
-
|
|
14
|
-
## Running
|
|
15
|
-
|
|
16
|
-
* Run this demo with `teuton` command: `teuton examples/learn-03-remote-hosts`.
|
|
17
|
-
* During execution, progress is showed on screen.
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
$ teuton examples/learn-03-remote-hosts
|
|
21
|
-
|
|
22
|
-
[INFO] ScriptPath => examples/learn-03-remote-hosts/start.rb
|
|
23
|
-
[INFO] ConfigPath => examples/learn-03-remote-hosts/config.yaml
|
|
24
|
-
[INFO] TestName => learn-03-remote-hosts
|
|
25
|
-
|
|
26
|
-
==================================
|
|
27
|
-
Executing [teuton] (version 2.1.0)
|
|
28
|
-
[INFO] Running in parallel (2019-11-06 17:35:46 +0000)
|
|
29
|
-
Skipping case <Darth Maul>
|
|
30
|
-
?FFF?FFF
|
|
31
|
-
[INFO] Duration = 10.184 (2019-11-06 17:35:57 +0000)
|
|
32
|
-
==================================
|
|
33
|
-
|
|
34
|
-
CASE RESULTS
|
|
35
|
-
+---------+---------------+-------+-------+
|
|
36
|
-
| CASE ID | MEMBERS | GRADE | STATE |
|
|
37
|
-
| - | - | 0.0 | |
|
|
38
|
-
| case_02 | R2D2 | 0.0 | ? |
|
|
39
|
-
| case_03 | Obiwan Kenobi | 0.0 | ? |
|
|
40
|
-
+---------+---------------+-------+-------+
|
|
41
|
-
|
|
42
|
-
CONN ERRORS
|
|
43
|
-
+---------+---------------+-------+------------------+
|
|
44
|
-
| CASE ID | MEMBERS | HOST | ERROR |
|
|
45
|
-
| case_02 | R2D2 | host1 | host_unreachable |
|
|
46
|
-
| case_03 | Obiwan Kenobi | host1 | host_unreachable |
|
|
47
|
-
+---------+---------------+-------+------------------+
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
* Case is every remote host (or group of hosts) been tested.
|
|
51
|
-
* "case-01" has been configured "skip=true", so it hasn't been tested.
|
|
52
|
-
|
|
53
|
-
## Reports
|
|
54
|
-
|
|
55
|
-
* Detail reports are saved into `var/learn-03-remote-hosts/` output directory.
|
|
56
|
-
* Take a look at directory tree:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
var
|
|
60
|
-
└── learn-03-remote-hosts
|
|
61
|
-
├── case-02.txt
|
|
62
|
-
├── case-03.txt
|
|
63
|
-
└── resume.txt
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
* Only "case-02" and "case-03" has been tested.
|
|
67
|
-
* There are TXT output reports for every tested case.
|
|
68
|
-
* "resume" report is a resumed list with final results.
|
|
69
|
-
* Let's see our example:
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
$ more var/learn-03-remote-hosts/resume.txt
|
|
73
|
-
|
|
74
|
-
CONFIGURATION
|
|
75
|
-
+----------------+------------------------------------------------+
|
|
76
|
-
| tt_title | Executing [teuton] (version 2.1.0) |
|
|
77
|
-
| tt_scriptname | examples/learn-03-remote-hosts/start.rb |
|
|
78
|
-
| tt_configfile | examples/learn-03-remote-hosts/config.yaml |
|
|
79
|
-
| host1_username | root |
|
|
80
|
-
| host1_password | profesor |
|
|
81
|
-
| tt_testname | learn-03-remote-hosts |
|
|
82
|
-
| tt_sequence | false |
|
|
83
|
-
+----------------+------------------------------------------------+
|
|
84
|
-
|
|
85
|
-
CASES
|
|
86
|
-
+---------+---------------+-------+-------+
|
|
87
|
-
| CASE ID | MEMBERS | GRADE | STATE |
|
|
88
|
-
| - | - | 0 | |
|
|
89
|
-
| case_02 | R2D2 | 0 | ? |
|
|
90
|
-
| case_03 | Obiwan Kenobi | 0 | ? |
|
|
91
|
-
+---------+---------------+-------+-------+
|
|
92
|
-
|
|
93
|
-
CONN ERRORS
|
|
94
|
-
+---------+---------------+-------+------------------+
|
|
95
|
-
| CASE ID | MEMBERS | HOST | ERROR |
|
|
96
|
-
| case_02 | R2D2 | host1 | host_unreachable |
|
|
97
|
-
| case_03 | Obiwan Kenobi | host1 | host_unreachable |
|
|
98
|
-
+---------+---------------+-------+------------------+
|
|
99
|
-
|
|
100
|
-
RESULTS
|
|
101
|
-
+-------------+---------------------------+
|
|
102
|
-
| start_time | 2019-11-06 17:35:46 +0000 |
|
|
103
|
-
| finish_time | 2019-11-06 17:35:57 +0000 |
|
|
104
|
-
| duration | 10.183650893 |
|
|
105
|
-
+-------------+---------------------------+
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
* Our hosts are down, so it's not posible stablish connection.
|
|
109
|
-
* Let's see case-02 report to read details about test process:
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
$ more var/learn-03-remote-hosts/case-02.txt
|
|
113
|
-
|
|
114
|
-
CONFIGURATION
|
|
115
|
-
+----------------+-----------------------+
|
|
116
|
-
| host1_hostname | robots |
|
|
117
|
-
| host1_ip | 192.168.1.202 |
|
|
118
|
-
| host1_password | profesor |
|
|
119
|
-
| host1_username | root |
|
|
120
|
-
| tt_members | R2D2 |
|
|
121
|
-
| tt_moodle_id | r2d2@robot.sw |
|
|
122
|
-
| tt_sequence | false |
|
|
123
|
-
| tt_skip | false |
|
|
124
|
-
| tt_testname | learn-03-remote-hosts |
|
|
125
|
-
| username | r2d2 |
|
|
126
|
-
+----------------+-----------------------+
|
|
127
|
-
|
|
128
|
-
LOGS
|
|
129
|
-
[17:35:50] ERROR: Host 192.168.1.202 unreachable!
|
|
130
|
-
|
|
131
|
-
GROUPS
|
|
132
|
-
- learn 03 remote hosts
|
|
133
|
-
01 (0.0/1.0)
|
|
134
|
-
Description : Update hostname with robots (host1_hostname)
|
|
135
|
-
Command : hostname
|
|
136
|
-
Duration : 3.078 (ssh)
|
|
137
|
-
Alterations : find(robots) & count
|
|
138
|
-
Expected : 1 (String)
|
|
139
|
-
Result : 0 (Integer)
|
|
140
|
-
02 (0.0/1.0)
|
|
141
|
-
Description : Ensure network DNS configuration is working
|
|
142
|
-
Command : nslookup www.google.es
|
|
143
|
-
Duration : 0.0 (ssh)
|
|
144
|
-
Alterations : find(Nombre:) & count
|
|
145
|
-
Expected : Greater than 0 (String)
|
|
146
|
-
Result : 0 (Integer)
|
|
147
|
-
03 (0.0/1.0)
|
|
148
|
-
Description : Create user r2d2 (username)
|
|
149
|
-
Command : net user
|
|
150
|
-
Duration : 0.0 (ssh)
|
|
151
|
-
Alterations : find(r2d2) & count
|
|
152
|
-
Expected : Greater than 0 (String)
|
|
153
|
-
Result : 0 (Integer)
|
|
154
|
-
|
|
155
|
-
RESULTS
|
|
156
|
-
+--------------+---------------------------+
|
|
157
|
-
| case_id | 2 |
|
|
158
|
-
| start_time_ | 2019-11-06 17:35:46 +0000 |
|
|
159
|
-
| finish_time | 2019-11-06 17:35:50 +0000 |
|
|
160
|
-
| duration | 3.078811848 |
|
|
161
|
-
| unique_fault | 0 |
|
|
162
|
-
| max_weight | 3.0 |
|
|
163
|
-
| good_weight | 0.0 |
|
|
164
|
-
| fail_weight | 3.0 |
|
|
165
|
-
| fail_counter | 3 |
|
|
166
|
-
| grade | 0 |
|
|
167
|
-
+--------------+---------------------------+
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
* Final grade is 0, because tests hasn't been verified.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require_relative '../../../application'
|
|
3
|
-
|
|
4
|
-
# DSL#call
|
|
5
|
-
module DSL
|
|
6
|
-
def check(name, input = {})
|
|
7
|
-
checks = Application.instance.checks
|
|
8
|
-
unless checks[name]
|
|
9
|
-
log("Check #{name} not found!", :error)
|
|
10
|
-
return
|
|
11
|
-
end
|
|
12
|
-
input.each_pair { |k, v| set(k, v) }
|
|
13
|
-
errors = []
|
|
14
|
-
checks[name][:args].each do |i|
|
|
15
|
-
errors << i if get(i) == 'NODATA'
|
|
16
|
-
end
|
|
17
|
-
if errors.count > 0
|
|
18
|
-
log("Check #{name} => required params #{errors.join(',')}",:error)
|
|
19
|
-
else
|
|
20
|
-
instance_eval(&checks[name][:block])
|
|
21
|
-
end
|
|
22
|
-
input.each_pair { |k, v| unset(k) }
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# DSL#missing_method
|
|
4
|
-
module DSL
|
|
5
|
-
# If a method call is missing, then delegate to concept parent.
|
|
6
|
-
def method_missing(method, args = {})
|
|
7
|
-
a = method.to_s
|
|
8
|
-
return instance_eval("get(:#{a[0, a.size - 1]})") if a[a.size - 1] == '?'
|
|
9
|
-
return check a[6, a.size], args if a[0,6]=='check_'
|
|
10
|
-
check a, args
|
|
11
|
-
end
|
|
12
|
-
end
|
data/lib/teuton/files/gitignore
DELETED