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.
- checksums.yaml +4 -4
- data/README.md +18 -20
- data/docs/commands/README.md +12 -10
- data/docs/commands/check.md +17 -15
- data/docs/commands/{readme.md → doc.md} +3 -5
- data/docs/commands/help.md +23 -13
- data/docs/devel/todo.md +2 -8
- data/docs/dsl/README.md +9 -8
- data/docs/dsl/event.md +172 -0
- data/docs/dsl/target.md +0 -14
- data/docs/install/t-node.md +10 -21
- data/docs/learn/01-cmd_new.md +1 -1
- data/docs/learn/02-target.md +52 -50
- data/docs/learn/03-remote_hosts.md +15 -16
- data/docs/learn/04-config.md +70 -69
- data/docs/learn/05-use.md +1 -1
- data/docs/learn/06-cmd_check.md +28 -26
- data/docs/learn/07-target_weight.md +7 -5
- data/docs/learn/08-unique_values.md +32 -30
- data/docs/learn/09-send.md +2 -2
- data/docs/learn/10-debug.md +38 -1
- data/docs/learn/11-export.md +1 -1
- data/docs/learn/12-preserve.md +4 -4
- data/docs/learn/13-feedback.md +12 -11
- data/docs/learn/14-moodle_id.md +3 -3
- data/docs/learn/15-readme.md +12 -12
- data/docs/learn/16-include.md +9 -9
- data/docs/learn/17-alias.md +2 -2
- data/docs/learn/18-log.md +46 -44
- data/docs/learn/19-read_vars.md +1 -1
- data/docs/learn/20-macros.md +1 -1
- data/docs/learn/21-exit_codes.md +1 -1
- data/docs/learn/22-result.md +1 -1
- data/docs/learn/23-test-code.md +14 -11
- data/docs/learn/24-test-sql.md +6 -6
- data/docs/learn/25-expect-result.md +1 -1
- data/docs/learn/26-expect_sequence.md +2 -2
- data/docs/learn/27-run_script.md +9 -6
- data/docs/learn/28-upload.md +3 -1
- data/docs/learn/31-event-stop.md +134 -0
- data/docs/learn/32-event-zero.md +127 -0
- data/docs/more.md +4 -1
- data/lib/teuton/case/{action.rb → action/action.rb} +18 -10
- data/lib/teuton/case/action/manager.rb +198 -0
- data/lib/teuton/case/case.rb +15 -13
- data/lib/teuton/case/close.rb +7 -7
- data/lib/teuton/case/dsl/all.rb +1 -0
- data/lib/teuton/case/dsl/event.rb +5 -0
- data/lib/teuton/case/dsl/expect.rb +6 -4
- data/lib/teuton/case/dsl/log.rb +10 -9
- data/lib/teuton/case/dsl/macro.rb +1 -1
- data/lib/teuton/case/dsl/run.rb +10 -15
- data/lib/teuton/case/dsl/target.rb +10 -3
- data/lib/teuton/case/play.rb +1 -1
- data/lib/teuton/case/result/ext_compare.rb +10 -10
- data/lib/teuton/case_manager/dsl.rb +6 -2
- 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 +19 -8
- data/lib/teuton/check/dsl/all.rb +10 -16
- data/lib/teuton/check/dsl/event.rb +10 -0
- data/lib/teuton/check/dsl/expect.rb +21 -45
- data/lib/teuton/check/dsl/getset.rb +2 -2
- data/lib/teuton/check/dsl/run.rb +2 -2
- data/lib/teuton/check/dsl/target.rb +17 -0
- data/lib/teuton/check/show.rb +35 -41
- data/lib/teuton/cli/app.rb +16 -8
- data/lib/teuton/readme/dsl/all.rb +16 -2
- data/lib/teuton/readme/main.rb +2 -2
- data/lib/teuton/report/formatter/default/array.rb +15 -29
- data/lib/teuton/report/formatter/default/txt.rb +42 -30
- data/lib/teuton/report/formatter/resume/txt.rb +27 -26
- data/lib/teuton/report/formatter/resume/xml.rb +4 -4
- data/lib/teuton/report/report.rb +5 -36
- data/lib/teuton/utils/project.rb +4 -3
- data/lib/teuton/version.rb +1 -1
- metadata +14 -7
- data/docs/tutorial/es/nginx/README.md +0 -546
- data/lib/teuton/deprecated/utils.rb +0 -14
data/docs/learn/02-target.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[<<
|
|
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
|
|
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 │ 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
|
-
|
|
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
|
-
|
|
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
|
-
[<<
|
|
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
|
-
$
|
|
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:
|
data/docs/learn/04-config.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[<<
|
|
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
|
|
39
|
-
|
|
40
|
-
CASE RESULTS
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
$
|
|
62
|
-
|
|
63
|
-
CONFIGURATION
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
113
|
-
|
|
114
|
-
CASE RESULTS
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
data/docs/learn/06-cmd_check.md
CHANGED
|
@@ -1,50 +1,52 @@
|
|
|
1
1
|
|
|
2
|
-
[<<
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
[<<
|
|
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
|
-
|
|
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
|
-
[<<
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
-
|
|
55
|
+
┌───────────────────────────────┐
|
|
56
|
+
│ GROUP: Unique value: hostname │
|
|
57
|
+
└───────────────────────────────┘
|
|
51
58
|
run 'hostname -f' on host1
|
|
52
|
-
|
|
59
|
+
unique value for <Host name>
|
|
53
60
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
```
|
data/docs/learn/09-send.md
CHANGED
data/docs/learn/10-debug.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[<<
|
|
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
|
+
```
|
data/docs/learn/11-export.md
CHANGED
data/docs/learn/12-preserve.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[<<
|
|
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-
|
|
34
|
+
├── 20200519-163035
|
|
35
35
|
│ ├── case-01.txt
|
|
36
36
|
│ ├── moodle.csv
|
|
37
37
|
│ └── resume.txt
|
|
38
|
-
├── 20200519-
|
|
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
|
|
47
|
+
The first time test was launched at 16:30, and second at 17:30 the same day.
|