Skip to content

Commit ed0ddfb

Browse files
committed
Refactor Tool Meister module, add Tool unittests
Refactor the ToolMeister class and the Tool class hierarchy to construct Tool objects once. We were running the constructor for each Tool object once to run the `install()` method, and then again for each "init" and "start" operation. Now the Tool object constructor runs once, and all code used to determine if a tool is installed correctly results in the `install()` method. We also take the opportunity to properly assert the expected state each method of the various Tool classes expect to encounter. The Tool Meister constructor now validates that the `pbench_install_dir` and `tmp_dir` arguments are directories that exist, raising an exception otherwise. The `.start()` methods for all Tool object sub-classes has been changed to raise an exception if the `tool_dir` argument is not a real directory. Along the way, we also add type hints for all Tool Meister methods and its constructor, correcting other type hints, and correcting the return values of a few methods. Other refactorings: * We also add docstrings to the Tool class hierarchy where missing * Use named tuples for installation results and tool meister params * Refactor {`start`|`init`}`_tools` to share code * Refactor the `ToolMeister` class's `start_tools()` and `init_tools()` methods to share as much code as possible * Rework cleanup of `self._running_tools` Lastly, we have added unit tests for the Tool class hierarchy and some helper functions.
1 parent 2bc36ea commit ed0ddfb

File tree

5 files changed

+1709
-630
lines changed

5 files changed

+1709
-630
lines changed

agent/util-scripts/gold/test-client-tool-meister/test-53.txt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,12 @@ WARNING pbench-tool-meister end_tools -- testhost.example.com: unexpected temp f
184184
INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com block,security_mitigations,sos parallel
185185
INFO pbench-tool-meister sysinfo -- testhost.example.com: sysinfo send (no-op) default /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com
186186
INFO pbench-tool-meister __exit__ -- testhost.example.com: terminating
187-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
188-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
189-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
190-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
191-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
192-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
187+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
188+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
189+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
190+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
191+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
192+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
193193
--- mock-run/tm/tm-default-testhost.example.com.err file contents
194194
+++ mock-run/tm/tm-default-testhost.example.com.out file contents
195195
--- mock-run/tm/tm-default-testhost.example.com.out file contents
@@ -214,12 +214,12 @@ testhost.example.com WARNING pbench-tool-meister end_tools -- testhost.example.c
214214
testhost.example.com INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com block,security_mitigations,sos parallel
215215
testhost.example.com INFO pbench-tool-meister sysinfo -- testhost.example.com: sysinfo send (no-op) default /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com
216216
testhost.example.com INFO pbench-tool-meister __exit__ -- testhost.example.com: terminating
217-
testhost.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
218-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
219-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
220-
testhost.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
221-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
222-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
217+
testhost.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
218+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
219+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
220+
testhost.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
221+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
222+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
223223
--- mock-run/tm/tm.logs file contents
224224
+++ tools-default/prometheus/prom.log file contents
225225
--- tools-default/prometheus/prom.log file contents

agent/util-scripts/gold/test-client-tool-meister/test-56.txt

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,12 @@ INFO pbench-tool-meister _send_directory -- remote-a.example.com: PUT tool-data
169169
INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/tmp/tm.lite.NNNNN.nnnnnnnn/remote-a.example.com block,security_mitigations,sos parallel
170170
INFO pbench-tool-meister _send_directory -- remote-a.example.com: PUT sysinfo-data completed lite /var/tmp/pbench-test-utils/pbench/tmp/tm.lite.NNNNN.nnnnnnnn/remote-a.example.com
171171
INFO pbench-tool-meister __exit__ -- remote-a.example.com: terminating
172-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
173-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
174-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
175-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
176-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
177-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
172+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
173+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
174+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
175+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
176+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
177+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
178178
=== /var/tmp/pbench-test-utils/pbench/tmp/tm-lite-remote-a.example.com.out:
179179
=== /var/tmp/pbench-test-utils/pbench/tmp/tm-lite-remote-b.example.com.err:
180180
INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/tmp/tm.lite.NNNNN.nnnnnnnn/blue:remote-b.example.com block,security_mitigations,sos parallel
@@ -196,12 +196,12 @@ WARNING pbench-tool-meister end_tools -- remote-b.example.com: unexpected temp f
196196
INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/tmp/tm.lite.NNNNN.nnnnnnnn/blue:remote-b.example.com block,security_mitigations,sos parallel
197197
INFO pbench-tool-meister _send_directory -- remote-b.example.com: PUT sysinfo-data completed lite /var/tmp/pbench-test-utils/pbench/tmp/tm.lite.NNNNN.nnnnnnnn/blue:remote-b.example.com
198198
INFO pbench-tool-meister __exit__ -- remote-b.example.com: terminating
199-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
200-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
201-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
202-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
203-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
204-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
199+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
200+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
201+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
202+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
203+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
204+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
205205
=== /var/tmp/pbench-test-utils/pbench/tmp/tm-lite-remote-b.example.com.out:
206206
=== /var/tmp/pbench-test-utils/pbench/tmp/tm-lite-remote-c.example.com.err:
207207
INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/tmp/tm.lite.NNNNN.nnnnnnnn/red:remote-c.example.com block,security_mitigations,sos parallel
@@ -446,12 +446,12 @@ WARNING pbench-tool-meister end_tools -- testhost.example.com: unexpected temp f
446446
INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com block,security_mitigations,sos parallel
447447
INFO pbench-tool-meister sysinfo -- testhost.example.com: sysinfo send (no-op) lite /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com
448448
INFO pbench-tool-meister __exit__ -- testhost.example.com: terminating
449-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
450-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
451-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
452-
INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
453-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
454-
INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
449+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
450+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
451+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
452+
INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
453+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
454+
INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
455455
--- mock-run/tm/tm-lite-testhost.example.com.err file contents
456456
+++ mock-run/tm/tm-lite-testhost.example.com.out file contents
457457
--- mock-run/tm/tm-lite-testhost.example.com.out file contents
@@ -522,24 +522,24 @@ testhost.example.com WARNING pbench-tool-meister end_tools -- testhost.example.c
522522
testhost.example.com INFO pbench-tool-meister sysinfo -- pbench-sysinfo-dump -- /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pbench-sysinfo-dump /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com block,security_mitigations,sos parallel
523523
testhost.example.com INFO pbench-tool-meister sysinfo -- testhost.example.com: sysinfo send (no-op) lite /var/tmp/pbench-test-utils/pbench/mock-run/sysinfo/end/testhost.example.com
524524
testhost.example.com INFO pbench-tool-meister __exit__ -- testhost.example.com: terminating
525-
remote-a.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
526-
remote-a.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
527-
remote-a.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
528-
remote-a.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
529-
remote-a.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
530-
remote-a.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
531-
remote-b.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
532-
remote-b.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
533-
remote-b.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
534-
remote-b.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
535-
remote-b.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
536-
remote-b.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
537-
testhost.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
538-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
539-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
540-
testhost.example.com INFO pbench-tool-meister.logger-start log_subprocess_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
541-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: stopping
542-
testhost.example.com INFO pbench-tool-meister.logger-stop log_subprocess_output -- mpstat: post-processing following stop
525+
remote-a.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
526+
remote-a.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
527+
remote-a.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
528+
remote-a.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
529+
remote-a.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
530+
remote-a.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
531+
remote-b.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
532+
remote-b.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
533+
remote-b.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
534+
remote-b.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
535+
remote-b.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
536+
remote-b.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
537+
testhost.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
538+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
539+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
540+
testhost.example.com INFO pbench-tool-meister.logger-start log_raw_io_output -- mpstat: running "/var/tmp/pbench-test-utils/opt/pbench-agent/tool-scripts/datalog/mpstat-datalog 42 --options=forty-two "
541+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: stopping
542+
testhost.example.com INFO pbench-tool-meister.logger-stop log_raw_io_output -- mpstat: post-processing following stop
543543
--- mock-run/tm/tm.logs file contents
544544
+++ tools-lite/pcp/pmproxy-proc.log file contents
545545
--- tools-lite/pcp/pmproxy-proc.log file contents

0 commit comments

Comments
 (0)