teuton 3.2.1 → 3.4.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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -20
  3. data/docs/commands/README.md +12 -10
  4. data/docs/commands/check.md +17 -15
  5. data/docs/commands/{readme.md → doc.md} +3 -5
  6. data/docs/commands/help.md +23 -13
  7. data/docs/devel/todo.md +2 -8
  8. data/docs/dsl/README.md +9 -8
  9. data/docs/dsl/event.md +172 -0
  10. data/docs/dsl/target.md +0 -14
  11. data/docs/install/t-node.md +10 -21
  12. data/docs/learn/01-cmd_new.md +1 -1
  13. data/docs/learn/02-target.md +52 -50
  14. data/docs/learn/03-remote_hosts.md +15 -16
  15. data/docs/learn/04-config.md +70 -69
  16. data/docs/learn/05-use.md +1 -1
  17. data/docs/learn/06-cmd_check.md +28 -26
  18. data/docs/learn/07-target_weight.md +7 -5
  19. data/docs/learn/08-unique_values.md +32 -30
  20. data/docs/learn/09-send.md +2 -2
  21. data/docs/learn/10-debug.md +38 -1
  22. data/docs/learn/11-export.md +1 -1
  23. data/docs/learn/12-preserve.md +4 -4
  24. data/docs/learn/13-feedback.md +12 -11
  25. data/docs/learn/14-moodle_id.md +3 -3
  26. data/docs/learn/15-readme.md +12 -12
  27. data/docs/learn/16-include.md +9 -9
  28. data/docs/learn/17-alias.md +2 -2
  29. data/docs/learn/18-log.md +46 -44
  30. data/docs/learn/19-read_vars.md +1 -1
  31. data/docs/learn/20-macros.md +1 -1
  32. data/docs/learn/21-exit_codes.md +1 -1
  33. data/docs/learn/22-result.md +1 -1
  34. data/docs/learn/23-test-code.md +14 -11
  35. data/docs/learn/24-test-sql.md +6 -6
  36. data/docs/learn/25-expect-result.md +1 -1
  37. data/docs/learn/26-expect_sequence.md +2 -2
  38. data/docs/learn/27-run_script.md +9 -6
  39. data/docs/learn/28-upload.md +3 -1
  40. data/docs/learn/31-event-stop.md +134 -0
  41. data/docs/learn/32-event-zero.md +127 -0
  42. data/docs/more.md +4 -1
  43. data/lib/teuton/case/{action.rb → action/action.rb} +18 -10
  44. data/lib/teuton/case/action/manager.rb +198 -0
  45. data/lib/teuton/case/case.rb +15 -13
  46. data/lib/teuton/case/close.rb +7 -7
  47. data/lib/teuton/case/dsl/all.rb +1 -0
  48. data/lib/teuton/case/dsl/event.rb +5 -0
  49. data/lib/teuton/case/dsl/expect.rb +6 -4
  50. data/lib/teuton/case/dsl/log.rb +10 -9
  51. data/lib/teuton/case/dsl/macro.rb +1 -1
  52. data/lib/teuton/case/dsl/run.rb +10 -15
  53. data/lib/teuton/case/dsl/target.rb +10 -3
  54. data/lib/teuton/case/play.rb +1 -1
  55. data/lib/teuton/case/result/ext_compare.rb +10 -10
  56. data/lib/teuton/case_manager/dsl.rb +6 -2
  57. data/lib/teuton/case_manager/ext/report.rb +0 -4
  58. data/lib/teuton/case_manager/show_resume_report.rb +29 -30
  59. data/lib/teuton/check/checker.rb +19 -8
  60. data/lib/teuton/check/dsl/all.rb +10 -16
  61. data/lib/teuton/check/dsl/event.rb +10 -0
  62. data/lib/teuton/check/dsl/expect.rb +21 -45
  63. data/lib/teuton/check/dsl/getset.rb +2 -2
  64. data/lib/teuton/check/dsl/run.rb +2 -2
  65. data/lib/teuton/check/dsl/target.rb +17 -0
  66. data/lib/teuton/check/show.rb +35 -41
  67. data/lib/teuton/cli/app.rb +16 -8
  68. data/lib/teuton/readme/dsl/all.rb +16 -2
  69. data/lib/teuton/readme/main.rb +2 -2
  70. data/lib/teuton/report/formatter/default/array.rb +15 -29
  71. data/lib/teuton/report/formatter/default/txt.rb +42 -30
  72. data/lib/teuton/report/formatter/resume/txt.rb +27 -26
  73. data/lib/teuton/report/formatter/resume/xml.rb +4 -4
  74. data/lib/teuton/report/report.rb +5 -36
  75. data/lib/teuton/utils/project.rb +4 -3
  76. data/lib/teuton/version.rb +1 -1
  77. metadata +14 -7
  78. data/docs/tutorial/es/nginx/README.md +0 -546
  79. data/lib/teuton/deprecated/utils.rb +0 -14
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # Target
4
4
 
@@ -62,13 +62,13 @@ end
62
62
  Execute this command to run the test:
63
63
 
64
64
  ```
65
- $ teuton run examples/02-target
66
-
67
- CASE RESULTS
68
- +------+-----------+-------+-------+
69
- | CASE | MEMBERS | GRADE | STATE |
70
- | 01 | anonymous | 100.0 | ✔ |
71
- +------+-----------+-------+-------+
65
+ $ teuton examples/02-target
66
+
67
+ ☰ CASE RESULTS
68
+ ┌──────┬───────────┬───────┬───────┐
69
+ │ CASE │ MEMBERS │ GRADE │ STATE │
70
+ │ 01 │ anonymous │ 67.0 │ │
71
+ └──────┴───────────┴───────┴───────┘
72
72
  ```
73
73
 
74
74
  Report files are created into `var/02-target/` folder:
@@ -84,45 +84,47 @@ var
84
84
  Let's see one report:
85
85
 
86
86
  ```
87
- $ cat var/02-target/case-01.txt
88
- CONFIGURATION
89
- +-------------+-----------+
90
- | tt_members | anonymous |
91
- | tt_sequence | false |
92
- | tt_skip | false |
93
- | tt_testname | 02-target |
94
- +-------------+-----------+
95
-
96
- GROUPS
97
- - Learn about targets
98
- 01 (0.0/1.0)
99
- Description : Create user obiwan
100
- Command : id obiwan
101
- Output : id: «obiwan»: no existe ese usuario
102
- Duration : 0.002 (local)
103
- Alterations : find(uid=) & find((obiwan)) & find(gid=) & count
104
- Expected : Greater than 0
105
- Result : 0
106
- 02 (1.0/1.0)
107
- Description : Delete user vader
108
- Command : id vader
109
- Output : id: «vader»: no existe ese usuario
110
- Duration : 0.002 (local)
111
- Alterations : Read exit code
112
- Expected : Greater than 0
113
- Result : 1
114
-
115
- RESULTS
116
- +--------------+---------------------------+
117
- | case_id | 01 |
118
- | start_time | 2023-06-16 08:42:13 +0100 |
119
- | finish_time | 2023-06-16 08:42:13 +0100 |
120
- | duration | 0.004527443 |
121
- | unique_fault | 0 |
122
- | max_weight | 2.0 |
123
- | good_weight | 1.0 |
124
- | fail_weight | 1.0 |
125
- | fail_counter | 1 |
126
- | grade | 50 |
127
- +--------------+---------------------------+
128
- ```
87
+ $ cat var/02-target/case-01.txt
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
+ ▶ Practicing targets
100
+ ✖ 01 (0.0/1.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 (2.0/2.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-26 12:20:01 +0000 │
122
+ │ finish_time │ 2026-10-26 12:20:01 +0000 │
123
+ │ duration │ 0.003806668 │
124
+ │ max_weight │ 3.0 │
125
+ │ good_weight │ 2.0 │
126
+ │ fail_weight │ 1.0 │
127
+ │ fail_counter │ 1 │
128
+ │ grade │ 67 │
129
+ └──────────────┴───────────────────────────┘
130
+ ```
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # Remote hosts
4
4
 
@@ -55,22 +55,21 @@ end
55
55
  Execution:
56
56
 
57
57
  ```
58
- $ teuton run examples/03-remote_hosts
58
+ $ teutonx examples/03-remote_hosts
59
59
 
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
- +------+-----------+-------+------------------+
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:
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # config
4
4
 
@@ -7,6 +7,8 @@ Our tests use config file to write dinamic data into separated file.
7
7
  By default, `config.yaml` is our config file. Example:
8
8
 
9
9
  ```yaml
10
+ # File: config.yaml
11
+ # Desc: configuration file
10
12
  global:
11
13
  tt_output_dir: var/04-config/default
12
14
  cases:
@@ -35,14 +37,14 @@ end
35
37
  ## Example
36
38
 
37
39
  ```
38
- $ teuton run examples/04-config
39
-
40
- CASE RESULTS
41
- +------+-----------+-------+-------+
42
- | CASE | MEMBERS | GRADE | STATE |
43
- | 01 | student_1 | 100.0 | ✔ |
44
- | 02 | student_2 | 0.0 | ? |
45
- +------+-----------+-------+-------+
40
+ $ teuton examples/04-config
41
+
42
+ ☰ CASE RESULTS
43
+ ┌──────┬───────────┬───────┬───────┐
44
+ │ CASE │ MEMBERS │ GRADE │ STATE │
45
+ │ 01 │ student_1 │ 100.0 │ ✔ │
46
+ │ 02 │ student_2 │ 0.0 │ ? │
47
+ └──────┴───────────┴───────┴───────┘
46
48
  ```
47
49
 
48
50
  Reports:
@@ -58,44 +60,43 @@ var/04-config/default
58
60
  Let's see case 01 report.
59
61
 
60
62
  ```
61
- $ more var/04-config/default/case-01.txt
62
-
63
- CONFIGURATION
64
- +----------------+--------------------------------+
65
- | tt_config_path | examples/04-config/config.yaml |
66
- | tt_members | student_1 |
67
- | tt_output_dir | var/04-config/default |
68
- | tt_script_path | examples/04-config/start.rb |
69
- | tt_sequence | false |
70
- | tt_skip | false |
71
- | username | david |
72
- +----------------+--------------------------------+
73
-
74
-
75
- GROUPS
76
- - Reading params from config file
77
- 01 (1.0/1.0)
78
- Description : Create user david
79
- Command : id david
80
- Output : uid=1000(david) gid=1000(david) grupos=1000(david),478(wheel),...
81
- Duration : 0.005 (local)
82
- Alterations : find(uid=) & find((david)) & find(gid=) & count
83
- Expected : Greater than 0
84
- Result : 1
85
-
86
- RESULTS
87
- +--------------+---------------------------+
88
- | unique_fault | 0 |
89
- | case_id | 01 |
90
- | start_time | 2026-10-10 17:05:22 +0100 |
91
- | finish_time | 2026-10-10 17:05:22 +0100 |
92
- | duration | 0.005137538 |
93
- | max_weight | 1.0 |
94
- | good_weight | 1.0 |
95
- | fail_weight | 0 |
96
- | fail_counter | 0 |
97
- | grade | 100 |
98
- +--------------+---------------------------+
63
+ $ cat var/04-config/default/case-01.txt
64
+
65
+ ⚒ CONFIGURATION
66
+ ┌────────────────┬────────────────────────────────┐
67
+ │ tt_config_path │ examples/04-config/config.yaml │
68
+ │ tt_members │ student_1 │
69
+ │ tt_output_dir │ var/04-config/default │
70
+ │ tt_script_path │ examples/04-config/start.rb │
71
+ │ tt_sequence │ false │
72
+ │ tt_skip │ false │
73
+ │ username │ david │
74
+ └────────────────┴────────────────────────────────┘
75
+
76
+ ☰ GROUPS
77
+ ▶ Reading params from config file
78
+ ✔ 01 (1.0/1.0) ┌──
79
+ Description │ Create user david
80
+ Command │ id david
81
+ Output │ uid=1000(david) gid=1000(david) grupos=1000(david),478(wheel),464(vboxusers),108(libvirt),107(qemu),462(vagrant),460(docker),452(ollama)
82
+ Duration │ 0.012 (local)
83
+ Alterations │ find(uid=) & find((david)) & find(gid=) & count
84
+ Expected │ Greater than 0
85
+ Result │ 1
86
+ └──
87
+ 🗹 RESULTS
88
+ ┌──────────────┬───────────────────────────┐
89
+ │ unique_fault │ 0 │
90
+ │ case_id │ 01 │
91
+ │ start_time │ 2026-10-26 12:22:36 +0000 │
92
+ │ finish_time │ 2026-10-26 12:22:36 +0000 │
93
+ │ duration │ 0.012505538 │
94
+ │ max_weight │ 1.0 │
95
+ │ good_weight │ 1.0 │
96
+ │ fail_weight │ 0 │
97
+ │ fail_counter │ 0 │
98
+ │ grade │ 100 │
99
+ └──────────────┴───────────────────────────┘
99
100
  ```
100
101
 
101
102
  ## Using differents configuration files
@@ -109,38 +110,38 @@ Execute the same test but using diferents config files. Config files available:
109
110
  **Example 1**: Run test usign default config file (`config.yaml`). Output files saved in `tt_output_dir: var/04-config/defautl`.
110
111
 
111
112
  ```
112
- $ teuton run examples/04-config
113
-
114
- CASE RESULTS
115
- +------+-----------+-------+-------+
116
- | CASE | MEMBERS | GRADE | STATE |
117
- | 01 | student_1 | 100.0 | ✔ |
118
- | 02 | student_2 | 0.0 | ? |
119
- +------+-----------+-------+-------+
113
+ $ teuton examples/04-config
114
+
115
+ ☰ CASE RESULTS
116
+ ┌──────┬───────────┬───────┬───────┐
117
+ │ CASE │ MEMBERS │ GRADE │ STATE │
118
+ │ 01 │ student_1 │ 100.0 │ ✔ │
119
+ │ 02 │ student_2 │ 0.0 │ ? │
120
+ └──────┴───────────┴───────┴───────┘
120
121
  ```
121
122
 
122
123
  **Example 2**: Run test using `example/04-config/starwars.yaml` config file. Output files saved in `tt_output_dir: var/04-config/starwars`.
123
124
 
124
125
  ```
125
126
  $ teuton run --cname=starwars examples/04-config
126
-
127
- CASE RESULTS
128
- +------+------------+-------+-------+
129
- | CASE | MEMBERS | GRADE | STATE |
130
- | 01 | Yoda | 0.0 | ? |
131
- | 02 | Darth Maul | 0.0 | ? |
132
- +------+------------+-------+-------+
127
+
128
+ ☰ CASE RESULTS
129
+ ┌──────┬────────────┬───────┬───────┐
130
+ │ CASE │ MEMBERS │ GRADE │ STATE │
131
+ │ 01 │ Yoda │ 0.0 │ ? │
132
+ │ 02 │ Darth Maul │ 0.0 │ ? │
133
+ └──────┴────────────┴───────┴───────┘
133
134
  ```
134
135
 
135
136
  **Example 3**: Run test using `example/04-config/rock.yaml` config file. Output files saved in `tt_output_dir: var/04-config/rock`.
136
137
 
137
138
  ```
138
139
  $ teuton run --cpath=examples/04-config/rock.yaml examples/04-config
139
-
140
- CASE RESULTS
141
- +------+------------+-------+-------+
142
- | CASE | MEMBERS | GRADE | STATE |
143
- | 01 | AC/DC band | 0.0 | ? |
144
- | 02 | Muse band | 0.0 | ? |
145
- +------+------------+-------+-------+
140
+
141
+ ☰ CASE RESULTS
142
+ ┌──────┬────────────┬───────┬───────┐
143
+ │ CASE │ MEMBERS │ GRADE │ STATE │
144
+ │ 01 │ AC/DC band │ 0.0 │ ? │
145
+ │ 02 │ Muse band │ 0.0 │ ? │
146
+ └──────┴────────────┴───────┴───────┘
146
147
  ```
data/docs/learn/05-use.md CHANGED
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # use
4
4
 
@@ -1,50 +1,52 @@
1
1
 
2
- [<< back](README.md)
2
+ [<<back](../../README.md)
3
3
 
4
4
  # check test
5
5
 
6
- `teuton check DIRPATH` is a command function that checks syntax and show statistics.
6
+ `teuton check DIRPATH` is a command function that checks syntax and show statistics. It is very useful for locating syntax errors in test files.
7
7
 
8
8
  ## Example
9
9
 
10
10
  ```
11
- $ teuton check examples/05-use
11
+ $ teuton check examples/05-use
12
12
 
13
- +--------------------------+
14
- | GROUP: Using file: users |
15
- +--------------------------+
13
+ ┌─────────────────────────┐
14
+ │ USE: external libraries │
15
+ └─────────────────────────┘
16
+ 1. examples/05-use/lib/users.rb
17
+ 2. examples/05-use/lib/network.rb
18
+
19
+ ┌──────────────────────────┐
20
+ │ GROUP: Using file: users │
21
+ └──────────────────────────┘
16
22
  (001) target Create user get(username)
17
23
  weight 1.0
18
24
  run 'id get(username)' on host1
19
25
  expect ["uid=", "(get(username))", "gid="] (Array)
20
26
 
21
- +----------------------------+
22
- | GROUP: Using file: network |
23
- +----------------------------+
27
+ ┌────────────────────────────┐
28
+ │ GROUP: Using file: network │
29
+ └────────────────────────────┘
24
30
  (002) target Update computer name with get(hostname)
25
31
  weight 1.0
26
32
  run 'hostname' on host1
27
33
  expect_one get(hostname) (String)
28
34
 
29
- (003) target Ensure DNS Server is working
35
+ (003) target Ensure DNS is properly configured
30
36
  weight 1.0
31
37
  run 'host www.google.es' on host1
32
38
  expect www.google.es has address (String)
33
39
 
34
- +-------------+-------+
35
- | DSL Stats | Count |
36
- +-------------+-------+
37
- | Uses | 2 |
38
- | Groups | 2 |
39
- | Targets | 3 |
40
- | Runs | 3 |
41
- | * host1 | 3 |
42
- | Uniques | 0 |
43
- | Logs | 0 |
44
- | | |
45
- | Gets | 5 |
46
- | * username | 3 |
47
- | * hostname | 2 |
48
- | Sets | 0 |
49
- +-------------+-------+
40
+ ┌─────────────┬───────┐
41
+ │ DSL Stats │ Count │
42
+ ├─────────────┼───────┤
43
+ │ Uses │ 2 │
44
+ │ Groups │ 2 │
45
+ │ Targets │ 3 │
46
+ │ Runs │ 3 │
47
+ │ * host1 │ 3 │
48
+ │ Gets │ 5 │
49
+ │ * username │ 3 │
50
+ │ * hostname │ 2 │
51
+ └─────────────┴───────┘
50
52
  ```
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # Target weight
4
4
 
@@ -24,11 +24,12 @@ group "Using file: network" do
24
24
  end
25
25
  ```
26
26
 
27
- Output:
28
27
  ```
29
- +----------------------------+
30
- | GROUP: Using file: network |
31
- +----------------------------+
28
+ $ teuton check example/07-target-weight
29
+ ...
30
+ ┌────────────────────────────┐
31
+ │ GROUP: Using file: network │
32
+ └────────────────────────────┘
32
33
  (002) target Update computer name with get(hostname)
33
34
  weight 1.0
34
35
  run 'hostname' on host1
@@ -38,4 +39,5 @@ Output:
38
39
  weight 2.0
39
40
  run 'host www.google.es' on host1
40
41
  expect www.google.es has address (String)
42
+ ...
41
43
  ```
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # Unique value
4
4
 
@@ -22,19 +22,26 @@ end
22
22
  Cheking test:
23
23
 
24
24
  ```
25
- $ teuton check examples/08-unique_values
25
+ $ teuton check examples/08-unique_values
26
26
 
27
- +--------------------------+
28
- | GROUP: Using file: users |
29
- +--------------------------+
27
+ ┌─────────────────────────┐
28
+ │ USE: external libraries │
29
+ └─────────────────────────┘
30
+ 1. examples/08-unique_values/lib/users.rb
31
+ 2. examples/08-unique_values/lib/network.rb
32
+ 3. examples/08-unique_values/lib/unique.rb
33
+
34
+ ┌──────────────────────────┐
35
+ │ GROUP: Using file: users │
36
+ └──────────────────────────┘
30
37
  (001) target Create user get(username)
31
38
  weight 1.0
32
39
  run 'id get(username)' on host1
33
40
  expect get(username) (String)
34
41
 
35
- +----------------------------+
36
- | GROUP: Using file: network |
37
- +----------------------------+
42
+ ┌────────────────────────────┐
43
+ │ GROUP: Using file: network │
44
+ └────────────────────────────┘
38
45
  (002) target Update computer name with get(hostname)
39
46
  weight 1.0
40
47
  run 'hostname' on host1
@@ -45,28 +52,23 @@ $ teuton check examples/08-unique_values
45
52
  run 'host www.google.es' on host1
46
53
  expect www.google.es has address (String)
47
54
 
48
- +-------------------------------+
49
- | GROUP: Unique value: hostname |
50
- +-------------------------------+
55
+ ┌───────────────────────────────┐
56
+ │ GROUP: Unique value: hostname │
57
+ └───────────────────────────────┘
51
58
  run 'hostname -f' on host1
52
- ! Unique value for <Host name>
59
+ unique value for <Host name>
53
60
 
54
- +-------------+-------+
55
- | DSL Stats | Count |
56
- +-------------+-------+
57
- | Groups | 3 |
58
- | Targets | 3 |
59
- | Runs | 4 |
60
- | * host1 | 4 |
61
- | Uniques | 1 |
62
- | Logs | 1 |
63
- | | |
64
- | Gets | 5 |
65
- | * username | 3 |
66
- | * hostname | 2 |
67
- | Sets | 0 |
68
- +-------------+-------+
69
- +----------------------+
70
- | Revising CONFIG file |
71
- +----------------------+
61
+ ┌─────────────┬───────┐
62
+ │ DSL Stats │ Count │
63
+ ├─────────────┼───────┤
64
+ │ Uses │ 3 │
65
+ │ Groups │ 3 │
66
+ │ Targets │ 3 │
67
+ │ Runs │ 4 │
68
+ │ * host1 │ 4 │
69
+ │ Uniques │ 1 │
70
+ │ Gets │ 5 │
71
+ │ * username │ 3 │
72
+ │ * hostname │ 2 │
73
+ └─────────────┴───────┘
72
74
  ```
@@ -1,6 +1,6 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
- # Send
3
+ # send
4
4
 
5
5
  `send` is a keyword used to copy the output report into remote host.
6
6
 
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # debug
4
4
 
@@ -45,3 +45,40 @@ end
45
45
  ```
46
46
 
47
47
  `result.debug` it's usefull when you are verifying command output captured by Teuton.
48
+
49
+ ## Output example
50
+
51
+ ```
52
+ $ teuton examples/10-debug
53
+
54
+ ------------------------------------
55
+ Started at 2026-10-26 16:30:56 +0000
56
+
57
+ ******************** [DEBUG] count=6 ********************
58
+ 0: PING 192.168.1.1 (192.168.1.1) 56(84) bytes de datos.
59
+ 1: 64 bytes desde 192.168.1.1: icmp_seq=1 ttl=64 tiempo=5.11 ms
60
+ 2:
61
+ 3: --- 192.168.1.1 estadísticas ping ---
62
+ 4: 1 paquetes transmitidos, 1 recibidos, 0% packet loss, time 0ms
63
+ 5: rtt min/avg/max/mdev = 5.106/5.106/5.106/0.000 ms
64
+ *********************************************************
65
+ .
66
+ ******************** [DEBUG] count=1 ********************
67
+ 0: 1
68
+ *********************************************************
69
+ .FFFFF
70
+ Finished in 1.431 seconds
71
+ ------------------------------------
72
+
73
+ ☰ CASE RESULTS
74
+ ┌──────┬───────────┬───────┬───────┐
75
+ │ CASE │ MEMBERS │ GRADE │ STATE │
76
+ │ 01 │ student_1 │ 29.0 │ ? │
77
+ └──────┴───────────┴───────┴───────┘
78
+
79
+ 🗲 CONN ERRORS
80
+ ┌──────┬───────────┬─────────┬───────┐
81
+ │ CASE │ MEMBERS │ HOST │ ERROR │
82
+ │ 01 │ student_1 │ windows │ error │
83
+ └──────┴───────────┴─────────┴───────┘
84
+ ```
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # export
4
4
 
@@ -1,4 +1,4 @@
1
- [<< back](README.md)
1
+ [<<back](../../README.md)
2
2
 
3
3
  # preserve
4
4
 
@@ -31,11 +31,11 @@ Example, executing `teuton run example/12-preserve` twice:
31
31
  ```
32
32
  var
33
33
  └── 12-preserve
34
- ├── 20200519-113035
34
+ ├── 20200519-163035
35
35
  │   ├── case-01.txt
36
36
  │   ├── moodle.csv
37
37
  │   └── resume.txt
38
- ├── 20200519-123039
38
+ ├── 20200519-173039
39
39
  │   ├── case-01.txt
40
40
  │   ├── moodle.csv
41
41
  │   └── resume.txt
@@ -44,4 +44,4 @@ var
44
44
  └── resume.txt
45
45
  ```
46
46
 
47
- The first time test was launched at 11:30, and second at 12:30 the same day.
47
+ The first time test was launched at 16:30, and second at 17:30 the same day.