teuton 3.2.0 → 3.3.0
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 +8 -8
- data/bin/teuton +2 -3
- data/docs/commands/README.md +8 -7
- data/docs/commands/check.md +17 -15
- data/docs/commands/help.md +17 -7
- data/docs/commands/readme.md +1 -1
- data/docs/devel/todo.md +74 -4
- data/docs/dsl/send.md +3 -3
- data/docs/dsl/show.md +2 -2
- data/docs/dsl/target.md +0 -14
- data/docs/install/t-node.md +10 -21
- data/docs/learn/02-target.md +49 -47
- data/docs/learn/03-remote_hosts.md +14 -15
- data/docs/learn/04-config.md +67 -68
- data/docs/learn/06-cmd_check.md +26 -24
- data/docs/learn/07-target_weight.md +3 -3
- data/docs/learn/08-unique_values.md +31 -29
- data/docs/learn/10-debug.md +36 -0
- data/docs/learn/13-feedback.md +10 -9
- data/docs/learn/15-readme.md +2 -2
- data/docs/learn/16-include.md +7 -7
- data/docs/learn/18-log.md +44 -43
- data/docs/learn/23-test-code.md +13 -10
- data/docs/learn/24-test-sql.md +5 -5
- data/docs/learn/26-expect_sequence.md +1 -1
- data/docs/learn/27-run_script.md +8 -5
- data/lib/teuton/case/action/action.rb +39 -0
- data/lib/teuton/case/action/manager.rb +63 -0
- data/lib/teuton/case/case.rb +17 -21
- data/lib/teuton/case/close.rb +3 -3
- data/lib/teuton/case/dsl/all.rb +1 -0
- data/lib/teuton/case/dsl/event.rb +24 -0
- data/lib/teuton/case/dsl/expect.rb +13 -12
- data/lib/teuton/case/dsl/expect_sequence.rb +1 -2
- data/lib/teuton/case/dsl/log.rb +3 -7
- data/lib/teuton/case/dsl/macro.rb +3 -2
- data/lib/teuton/case/dsl/run.rb +11 -17
- data/lib/teuton/case/dsl/send.rb +1 -17
- data/lib/teuton/case/dsl/target.rb +8 -4
- data/lib/teuton/case/dsl/upload.rb +1 -4
- data/lib/teuton/case/dsl/weight.rb +3 -3
- data/lib/teuton/case/execute/execute_base.rb +1 -1
- data/lib/teuton/case/execute/execute_local.rb +2 -2
- data/lib/teuton/case/execute/execute_manager.rb +6 -6
- data/lib/teuton/case/execute/execute_ssh.rb +6 -6
- data/lib/teuton/case/execute/execute_telnet.rb +4 -4
- data/lib/teuton/case/play.rb +8 -9
- data/lib/teuton/case/result/ext_compare.rb +10 -10
- data/lib/teuton/case_manager/case_manager.rb +4 -4
- data/lib/teuton/case_manager/dsl.rb +11 -10
- data/lib/teuton/case_manager/export_manager.rb +6 -12
- data/lib/teuton/case_manager/ext/check_cases.rb +1 -1
- data/lib/teuton/case_manager/ext/report.rb +0 -4
- data/lib/teuton/case_manager/show_resume_report.rb +29 -30
- data/lib/teuton/check/checker.rb +17 -8
- data/lib/teuton/check/dsl/all.rb +18 -10
- data/lib/teuton/check/dsl/expect.rb +29 -45
- data/lib/teuton/check/dsl/getset.rb +2 -2
- data/lib/teuton/check/dsl/run.rb +2 -2
- data/lib/teuton/check/show.rb +28 -34
- data/lib/teuton/cli/app.rb +123 -0
- data/lib/teuton/cli/run.rb +38 -0
- data/lib/teuton/errors.rb +94 -0
- data/lib/teuton/readme/action.rb +29 -0
- data/lib/teuton/readme/dsl/all.rb +17 -6
- data/lib/teuton/readme/dsl/expect.rb +3 -3
- data/lib/teuton/readme/dsl/run.rb +5 -11
- data/lib/teuton/readme/main.rb +13 -6
- data/lib/teuton/readme/readme.rb +12 -15
- data/lib/teuton/report/formatter/default/array.rb +15 -29
- data/lib/teuton/report/formatter/default/txt.rb +43 -32
- data/lib/teuton/report/formatter/formatter.rb +4 -13
- data/lib/teuton/report/formatter/resume/txt.rb +29 -28
- data/lib/teuton/report/formatter/resume/xml.rb +4 -4
- data/lib/teuton/report/report.rb +3 -1
- data/lib/teuton/utils/config_file_reader.rb +3 -11
- data/lib/teuton/utils/logger.rb +15 -10
- data/lib/teuton/utils/name_file_finder.rb +3 -11
- data/lib/teuton/utils/project.rb +4 -3
- data/lib/teuton/version.rb +1 -1
- data/lib/teuton.rb +6 -11
- metadata +8 -5
- data/docs/tutorial/es/nginx/README.md +0 -546
- data/lib/teuton/cli.rb +0 -120
- data/lib/teuton/deprecated/utils.rb +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2ffb8159388474653ba97b292becba216b9dc0d1361c5669c1c6c3ce8fd5b678
|
|
4
|
+
data.tar.gz: 7215fb1ca9e5b350c7e46498323bca0f51cc0ad2dfcbfc517ac3f2175183dbbf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 53b34316e0dc1e8c7a2a8a042ef1694accb3ca89f3e9d193c8471104fd89de00c123f1f6a8ccbd8e2c1335e0446b11f6dcc328e7a6c28da4d7b4f89f26e1245a
|
|
7
|
+
data.tar.gz: 42fec6d0b1846cfcc73fef79731aa98966220705a76ed81a76ae3f4e9cc01a2eaa4f7e3b97c13a334b7bcf892d1947314b16417927024976623546ca41a88a33
|
data/README.md
CHANGED
|
@@ -37,7 +37,7 @@ group "Learn about targets" do
|
|
|
37
37
|
expect_fail
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
play do
|
|
41
41
|
show
|
|
42
42
|
export
|
|
43
43
|
end
|
|
@@ -46,18 +46,18 @@ end
|
|
|
46
46
|
**Usage**: Run test with `teuton run TESTPATH`.
|
|
47
47
|
|
|
48
48
|
```console
|
|
49
|
-
$
|
|
49
|
+
$ teutonx examples/02-target
|
|
50
50
|
------------------------------------
|
|
51
|
-
Started at
|
|
51
|
+
Started at 2026-10-21 17:05:49 +0100
|
|
52
52
|
F.
|
|
53
53
|
Finished in 0.005 seconds
|
|
54
54
|
------------------------------------
|
|
55
55
|
|
|
56
|
-
CASE RESULTS
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
CASE RESULTS
|
|
57
|
+
┌──────┬───────────┬───────┬───────┐
|
|
58
|
+
│ CASE │ MEMBERS │ GRADE │ STATE │
|
|
59
|
+
│ 01 │ anonymous │ 33.0 │ ? │
|
|
60
|
+
└──────┴───────────┴───────┴───────┘
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
**Output**: reports saved into `var/TESTNAME` folder.
|
data/bin/teuton
CHANGED
data/docs/commands/README.md
CHANGED
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
```
|
|
6
6
|
$ teuton
|
|
7
7
|
Commands:
|
|
8
|
-
teuton [run] [OPTIONS] DIRECTORY
|
|
9
|
-
teuton check [OPTIONS] DIRECTORY
|
|
10
|
-
teuton config
|
|
11
|
-
teuton help [COMMAND]
|
|
12
|
-
teuton new DIRECTORY
|
|
13
|
-
teuton readme DIRECTORY
|
|
14
|
-
teuton
|
|
8
|
+
teuton [run] [OPTIONS] DIRECTORY # Run test from directory
|
|
9
|
+
teuton check [OPTIONS] DIRECTORY # Check test and config file content
|
|
10
|
+
teuton config DIRECTORY # Suggest configuration.
|
|
11
|
+
teuton help [COMMAND] # Describe available commands or one specific command
|
|
12
|
+
teuton new DIRECTORY # Create skeleton for a new project
|
|
13
|
+
teuton readme DIRECTORY # Show README extracted from test contents
|
|
14
|
+
teuton tree # Print a tree of all available commands
|
|
15
|
+
teuton version # Show the program version
|
|
15
16
|
```
|
|
16
17
|
|
|
17
18
|
Available command functions:
|
data/docs/commands/check.md
CHANGED
|
@@ -27,11 +27,12 @@ Alias: `teuton c foo`, `teuton -c foo`, `teuton --check foo`
|
|
|
27
27
|
## Example
|
|
28
28
|
|
|
29
29
|
```
|
|
30
|
-
$ teuton check examples/02-target
|
|
30
|
+
$ teuton check examples/02-target
|
|
31
|
+
|
|
32
|
+
┌────────────────────────────┐
|
|
33
|
+
│ GROUP: Learn about targets │
|
|
34
|
+
└────────────────────────────┘
|
|
31
35
|
|
|
32
|
-
+----------------------------+
|
|
33
|
-
| GROUP: Learn about targets |
|
|
34
|
-
+----------------------------+
|
|
35
36
|
(001) target Create user obiwan
|
|
36
37
|
weight 2.0
|
|
37
38
|
run 'id obiwan' on localhost
|
|
@@ -42,17 +43,18 @@ $ teuton check examples/02-target
|
|
|
42
43
|
run 'id vader' on localhost
|
|
43
44
|
expect_fail
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
|
|
47
|
+
┌──────────────┬───────┐
|
|
48
|
+
│ DSL Stats │ Count │
|
|
49
|
+
├──────────────┼───────┤
|
|
50
|
+
│ Groups │ 1 │
|
|
51
|
+
│ Targets │ 2 │
|
|
52
|
+
│ Runs │ 2 │
|
|
53
|
+
│ * localhost │ 2 │
|
|
54
|
+
└──────────────┴───────┘
|
|
55
|
+
Warn | Configfile not found
|
|
56
|
+
- File: ../examples/02-target/config.yaml
|
|
57
|
+
Info | Recomended content:
|
|
56
58
|
---
|
|
57
59
|
global:
|
|
58
60
|
cases:
|
data/docs/commands/help.md
CHANGED
|
@@ -15,23 +15,33 @@ Alias: `teuton h`,`teuton -h`, `teuton --help`
|
|
|
15
15
|
Commands:
|
|
16
16
|
teuton [run] [OPTIONS] DIRECTORY # Run test from directory
|
|
17
17
|
teuton check [OPTIONS] DIRECTORY # Check test and config file content
|
|
18
|
-
teuton config [OPTIONS] DIRECTORY # Suggest configuration
|
|
18
|
+
teuton config [OPTIONS] DIRECTORY # Suggest configuration.
|
|
19
19
|
teuton help [COMMAND] # Describe available commands or one specific command
|
|
20
20
|
teuton new DIRECTORY # Create skeleton for a new project
|
|
21
21
|
teuton readme DIRECTORY # Show README extracted from test contents
|
|
22
|
+
teuton tree # Print a tree of all available commands
|
|
22
23
|
teuton version # Show the program version
|
|
23
24
|
```
|
|
24
25
|
|
|
25
|
-
**Example**: `teuton help
|
|
26
|
+
**Example**: `teuton help check`
|
|
27
|
+
|
|
26
28
|
```
|
|
27
29
|
Usage:
|
|
28
|
-
teuton
|
|
30
|
+
teuton check [OPTIONS] DIRECTORY
|
|
29
31
|
|
|
30
32
|
Options:
|
|
31
|
-
[--
|
|
33
|
+
[--onlyconfig], [--no-onlyconfig], [--skip-onlyconfig]
|
|
34
|
+
[--color], [--no-color], [--skip-color]
|
|
35
|
+
[--cname=CNAME]
|
|
36
|
+
[--cpath=CPATH]
|
|
32
37
|
|
|
33
38
|
Description:
|
|
34
|
-
|
|
39
|
+
(1) teuton check PATH/TO/DIR , Check content of start.rb and config.yaml files.
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
(2) teuton check PATH/TO/DIR --cname=demo , Check content of start.rb and demo.yaml files:
|
|
42
|
+
|
|
43
|
+
(3) teuton check PATH/TO/DIR --onlyconfig , Only show config file recomendations
|
|
44
|
+
|
|
45
|
+
(4) teuton check PATH/TO/DIR/foo.rb , Check content of foo.rb and foo.yaml files.
|
|
46
|
+
|
|
47
|
+
(5) teuton check PATH/TO/DIR/foo.rb --cname=demo , Check content of foo.rb and demo.yaml files.```
|
data/docs/commands/readme.md
CHANGED
data/docs/devel/todo.md
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
[<< back](../../README.md)
|
|
2
2
|
|
|
3
|
-
# Roadmap Teuton v3.
|
|
3
|
+
# Roadmap Teuton v3.3.0 - 2026
|
|
4
4
|
|
|
5
5
|
# 1. Revisar
|
|
6
6
|
|
|
7
7
|
* Revisar (tests): result.grep(a).grep(b)
|
|
8
|
-
* "Limpiar" las funciones "deprecated"
|
|
9
8
|
* Aplicar las recomendaciones del informe de seguridad de Andrés.
|
|
10
9
|
* verify get(:key) and get('key') works fine!
|
|
11
10
|
* Formatter: xml
|
|
12
11
|
|
|
13
12
|
# 2. Documentacion
|
|
14
13
|
|
|
15
|
-
* Nuevo repo `teuton-book`: para documentación, tutoriales en español.
|
|
16
14
|
* Documentar y hacer videos. Tener foros de la comunidad o presencia en reddit o stackoverflow.... o algo parecido???
|
|
17
15
|
* Snode Dockerfile with SSH server
|
|
18
16
|
* **ngrok**:
|
|
@@ -45,7 +43,7 @@ Ampliar las estadísticas de salida en el report `resume`:
|
|
|
45
43
|
|
|
46
44
|
Nueva feature "eventos".
|
|
47
45
|
|
|
48
|
-
* La idea está
|
|
46
|
+
* La idea está desarrollada en el enlace siguiente.
|
|
49
47
|
* [Propuesta](https://github.com/dvarrui/teuton-book/blob/main/docs/03.eventos/index.md)
|
|
50
48
|
|
|
51
49
|
Idea antigua: `ensure`
|
|
@@ -177,6 +175,78 @@ Expandir el modo de ejecución y medir rendimiento:
|
|
|
177
175
|
- Fibras
|
|
178
176
|
- Actores
|
|
179
177
|
|
|
178
|
+
## 4.6 Excepciones vs exit
|
|
179
|
+
|
|
180
|
+
La buena práctica es la separación de responsabilidades:
|
|
181
|
+
|
|
182
|
+
* La librería nunca debe hacer exit ni abort. Su trabajo es exclusivamente levantar excepciones personalizadas cuando algo sale mal.
|
|
183
|
+
* El ejecutable (CLI) es el único que debe capturar esas excepciones, mostrarlas de forma amigable por la terminal y decidir cuándo terminar el proceso con exit 1.
|
|
184
|
+
|
|
185
|
+
* **Paso 1: Definir excepciones personalizadas**:
|
|
186
|
+
|
|
187
|
+
```ruby
|
|
188
|
+
# lib/teuton/errors.rb
|
|
189
|
+
module Teuton
|
|
190
|
+
class Error < StandardError; end
|
|
191
|
+
class ConfigurationError < Error; end
|
|
192
|
+
class ExecutionError < Error; end
|
|
193
|
+
end
|
|
194
|
+
```
|
|
195
|
+
* **Paso 2: Reemplazar los exit 1 en la librería por `raise`**
|
|
196
|
+
|
|
197
|
+
```ruby
|
|
198
|
+
# lib/teuton/runner.rb
|
|
199
|
+
def run
|
|
200
|
+
if invalid_config?
|
|
201
|
+
raise Teuton::ConfigurationError, "Configuración inválida"
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
* Paso 3: Capturar las excepciones en CLI
|
|
207
|
+
* Integración con Thor
|
|
208
|
+
|
|
209
|
+
1. Hacer que Thor devuelva un código de salida 1 en errores de Thor
|
|
210
|
+
|
|
211
|
+
```ruby
|
|
212
|
+
# lib/teuton/cli.rb
|
|
213
|
+
require "thor"
|
|
214
|
+
|
|
215
|
+
module Teuton
|
|
216
|
+
class CLI < Thor
|
|
217
|
+
# Esto asegura que si Thor falla internamente (ej: comandos/opciones inválidas),
|
|
218
|
+
# el programa salga con código 1 en lugar de 0.
|
|
219
|
+
def self.exit_on_failure?
|
|
220
|
+
true
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
desc "run", "Ejecuta un script de Teuton"
|
|
224
|
+
def run
|
|
225
|
+
# Aquí llamas a la lógica de tu gema
|
|
226
|
+
# Si hay un error, tu lógica lanzará una excepción (ej: Teuton::Error)
|
|
227
|
+
Teuton::Runner.new.execute
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
2. Lanzar excepciones personalizadas en la lógica de tu librería.
|
|
234
|
+
|
|
235
|
+
```ruby
|
|
236
|
+
# lib/teuton/runner.rb
|
|
237
|
+
module Teuton
|
|
238
|
+
class Runner
|
|
239
|
+
def execute
|
|
240
|
+
if algun_error_detectado?
|
|
241
|
+
raise Teuton::Error, "Ocurrió un error al ejecutar los tests"
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
3. Capturar excepciones en el ejecutable bin/teuton
|
|
249
|
+
|
|
180
250
|
# 5. Proyectos
|
|
181
251
|
|
|
182
252
|
Ideas que emepzaron como un nuevo feature pero por sus dimensiones, funcionalidades y características van ha derivar a su propio proyecto independiente:
|
data/docs/dsl/send.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Usage:
|
|
8
8
|
```ruby
|
|
9
|
-
|
|
9
|
+
play do
|
|
10
10
|
export
|
|
11
11
|
send copy_to: :host1
|
|
12
12
|
end
|
|
@@ -31,7 +31,7 @@ If you export several files using differents output formats, you will use severa
|
|
|
31
31
|
In this example we export html and txt files, but only send txt to remote hosts:
|
|
32
32
|
|
|
33
33
|
```ruby
|
|
34
|
-
|
|
34
|
+
play do
|
|
35
35
|
export format: :json
|
|
36
36
|
export format: :txt
|
|
37
37
|
|
|
@@ -42,7 +42,7 @@ end
|
|
|
42
42
|
If you want to send every exported output file, then do like this:
|
|
43
43
|
|
|
44
44
|
```ruby
|
|
45
|
-
|
|
45
|
+
play do
|
|
46
46
|
export format: :html
|
|
47
47
|
send copy_to: :host1
|
|
48
48
|
|
data/docs/dsl/show.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
When all tests are finished, the `show` command displays information on the screen about the final results.
|
|
6
6
|
|
|
7
7
|
```ruby
|
|
8
|
-
|
|
8
|
+
play do
|
|
9
9
|
show
|
|
10
10
|
end
|
|
11
11
|
```
|
|
@@ -18,7 +18,7 @@ end
|
|
|
18
18
|
| `show verbose: NUMBER` | NUMBER is the value of the verbose level |
|
|
19
19
|
|
|
20
20
|
```ruby
|
|
21
|
-
|
|
21
|
+
play do
|
|
22
22
|
show verbose: 1
|
|
23
23
|
end
|
|
24
24
|
```
|
data/docs/dsl/target.md
CHANGED
|
@@ -17,17 +17,3 @@ By default weight is `1.0`, but it's posible specified other values:
|
|
|
17
17
|
```ruby
|
|
18
18
|
target "Write here your description", weight: 2.5
|
|
19
19
|
```
|
|
20
|
-
|
|
21
|
-
## [DEPRECATED] Alias
|
|
22
|
-
|
|
23
|
-
`goal` keyword is an alias of `target`. So it's the same:
|
|
24
|
-
|
|
25
|
-
```ruby
|
|
26
|
-
target "Write here your description"
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
or
|
|
30
|
-
|
|
31
|
-
```ruby
|
|
32
|
-
goal "Write here your description"
|
|
33
|
-
```
|
data/docs/install/t-node.md
CHANGED
|
@@ -106,24 +106,13 @@ CMD ["/bin/bash"]
|
|
|
106
106
|
If you want to install Teuton by your own, or there are not installation scripts for your OS, here you have information how to install all the required packages for Teuton.
|
|
107
107
|
|
|
108
108
|
Manual installation:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
1.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
1.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
1.
|
|
119
|
-
* (a) `git clone https://github.com/dvarrui/teuton.git` or
|
|
120
|
-
* (b) Download and unzip [file](https://github.com/dvarrui/teuton-panel/archive/master.zip).
|
|
121
|
-
1. Move into Teuton folder
|
|
122
|
-
* Run `cd teuton`
|
|
123
|
-
1. Gems installation.
|
|
124
|
-
* `rake install`, to install required gems.
|
|
125
|
-
1. Only for developers
|
|
126
|
-
* Run `rake devel:debian` or
|
|
127
|
-
* `rake devel:opensuse`, install gem for developers.
|
|
128
|
-
1. Final check
|
|
129
|
-
* `rake`
|
|
109
|
+
|
|
110
|
+
1. Install Git. Run `git --version` to show current version
|
|
111
|
+
1. Install ruby. Run `ruby -v` to show current version (3.2.8)
|
|
112
|
+
1. Install Rake (`gem install rake`), then `rake --version` to show current version (13.4.2).
|
|
113
|
+
1. Clone repo `git clone https://github.com/dvarrui/teuton.git` or download and unzip.
|
|
114
|
+
1. Move into Teuton folder: `cd teuton`
|
|
115
|
+
1. Install gems: `rake install`.
|
|
116
|
+
1. Only Debian OS: `rake devel:debian`.
|
|
117
|
+
1. Obly OpenSUSE OS: `rake devel:opensuse`.
|
|
118
|
+
1. Final check: `rake`
|
data/docs/learn/02-target.md
CHANGED
|
@@ -62,13 +62,13 @@ end
|
|
|
62
62
|
Execute this command to run the test:
|
|
63
63
|
|
|
64
64
|
```
|
|
65
|
-
$ teuton
|
|
66
|
-
|
|
67
|
-
CASE RESULTS
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
$ teuton examples/02-target
|
|
66
|
+
|
|
67
|
+
CASE RESULTS
|
|
68
|
+
┌──────┬───────────┬───────┬───────┐
|
|
69
|
+
│ CASE │ MEMBERS │ GRADE │ STATE │
|
|
70
|
+
│ 01 │ anonymous │ 33.0 │ ? │
|
|
71
|
+
└──────┴───────────┴───────┴───────┘
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
Report files are created into `var/02-target/` folder:
|
|
@@ -85,44 +85,46 @@ Let's see one report:
|
|
|
85
85
|
|
|
86
86
|
```
|
|
87
87
|
$ cat var/02-target/case-01.txt
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
88
|
+
|
|
89
|
+
CONFIGURATION
|
|
90
|
+
┌────────────────┬────────────────────────────────┐
|
|
91
|
+
│ tt_config_path │ examples/02-target/config.yaml │
|
|
92
|
+
│ tt_members │ anonymous │
|
|
93
|
+
│ tt_script_path │ examples/02-target/start.rb │
|
|
94
|
+
│ tt_sequence │ false │
|
|
95
|
+
│ tt_skip │ false │
|
|
96
|
+
└────────────────┴────────────────────────────────┘
|
|
97
|
+
|
|
98
|
+
GROUPS
|
|
99
|
+
▶ Learn about targets
|
|
100
|
+
✖ 01 (0.0/2.0) ┌──
|
|
101
|
+
Description │ Create user obiwan
|
|
102
|
+
Command │ id obiwan
|
|
103
|
+
Output │ id: «obiwan»: no existe ese usuario
|
|
104
|
+
Duration │ 0.002 (local)
|
|
105
|
+
Alterations │ find(uid=) & find((obiwan)) & find(gid=) & count
|
|
106
|
+
Expected │ Greater than 0
|
|
107
|
+
Result │ 0
|
|
108
|
+
✔ 02 (1.0/1.0) ├──
|
|
109
|
+
Description │ Delete user vader
|
|
110
|
+
Command │ id vader
|
|
111
|
+
Output │ id: «vader»: no existe ese usuario
|
|
112
|
+
Duration │ 0.002 (local)
|
|
113
|
+
Alterations │ Read exit code
|
|
114
|
+
Expected │ Greater than 0
|
|
115
|
+
Result │ 1
|
|
116
|
+
└──
|
|
117
|
+
RESULTS
|
|
118
|
+
┌──────────────┬───────────────────────────┐
|
|
119
|
+
│ unique_fault │ 0 │
|
|
120
|
+
│ case_id │ 01 │
|
|
121
|
+
│ start_time │ 2026-10-21 21:32:24 +0100 │
|
|
122
|
+
│ finish_time │ 2026-10-21 21:32:24 +0100 │
|
|
123
|
+
│ duration │ 0.004153712 │
|
|
124
|
+
│ max_weight │ 3.0 │
|
|
125
|
+
│ good_weight │ 1.0 │
|
|
126
|
+
│ fail_weight │ 2.0 │
|
|
127
|
+
│ fail_counter │ 1 │
|
|
128
|
+
│ grade │ 33 │
|
|
129
|
+
└──────────────┴───────────────────────────┘
|
|
128
130
|
```
|
|
@@ -55,22 +55,21 @@ end
|
|
|
55
55
|
Execution:
|
|
56
56
|
|
|
57
57
|
```
|
|
58
|
-
$
|
|
58
|
+
$ teutonx examples/03-remote_hosts
|
|
59
59
|
|
|
60
|
-
CASE RESULTS
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
CONN ERRORS
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
60
|
+
CASE RESULTS
|
|
61
|
+
┌──────┬───────────┬───────┬───────┐
|
|
62
|
+
│ CASE │ MEMBERS │ GRADE │ STATE │
|
|
63
|
+
│ 01 │ student_1 │ 0.0 │ ? │
|
|
64
|
+
│ - │ - │ 0.0 │ S │
|
|
65
|
+
│ 03 │ student_3 │ 100.0 │ ✔ │
|
|
66
|
+
└──────┴───────────┴───────┴───────┘
|
|
67
|
+
|
|
68
|
+
CONN ERRORS
|
|
69
|
+
┌──────┬───────────┬───────┬──────────────────┐
|
|
70
|
+
│ CASE │ MEMBERS │ HOST │ ERROR │
|
|
71
|
+
│ 01 │ student_1 │ host1 │ host_unreachable │
|
|
72
|
+
└──────┴───────────┴───────┴──────────────────┘
|
|
74
73
|
```
|
|
75
74
|
|
|
76
75
|
Notice that:
|