33 Commits

Author SHA1 Message Date
Rob Watson
cbdcef097f Fix race condition in tests
All checks were successful
continuous-integration/drone/push Build is passing
In normal usage, the io.Writer passed to the watcher is typically
`os.Stdout` and does not require locking because it is not being read
from inside the same process.

In tests however, the io.Writer was a *bytes.Buffer which is read
concurrently from another goroutine, introducing a race condition. This
fixes the issue in the test suite by introducing a wrapper around
*bytes.Buffer which implements the required locking.
2022-07-08 19:39:10 +02:00
Rob Watson
41f53c88df podWatcher: prefer bufio.Reader to Scanner
Some checks failed
continuous-integration/drone/push Build is failing
This avoids "token too large" errors when scanning large lines, probably
at the cost of some memory usage and/or allocations.
2022-07-05 18:26:47 +02:00
Rob Watson
0bbbb4015b podWatcher: Use RetryWatcher
Some checks failed
continuous-integration/drone/push Build is failing
2022-07-01 17:47:41 +02:00
Rob Watson
680f5b65e7 watcher: Clean up test
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-22 20:57:06 +02:00
Rob Watson
7f5fe3a717 Add comment 2022-06-22 20:56:52 +02:00
Rob Watson
c3ada38e68 Add TODO
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-21 20:49:44 +02:00
Rob Watson
b880127e72 watcher: implement RetryWatcher
Some checks failed
continuous-integration/drone/push Build is failing
2022-06-21 20:32:32 +02:00
Rob Watson
c6b96ecad8 watcher: Add temporary panic-on-error handling 2022-06-20 20:35:20 +02:00
Rob Watson
07552d10dd Tidy
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-15 20:29:33 +02:00
Rob Watson
e33612cced podWatcher: Refactor
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-14 21:11:06 +02:00
Rob Watson
d8e57c3d0e Remove inaccurate comment
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-14 18:05:36 +02:00
Rob Watson
eeee9a8ab7 watcher: Update naming
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-14 17:54:10 +02:00
Rob Watson
a0949b2bde watcher: Clean up properly on exiting event loop
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-14 09:56:59 +02:00
Rob Watson
969b0db9fc podWatcher: pass namespace
Some checks failed
continuous-integration/drone/push Build is failing
2022-06-14 07:47:38 +02:00
Rob Watson
e86d23fdca Fix typo 2022-06-14 07:44:55 +02:00
Rob Watson
154a13ecfc tests: Replace struct with closure
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-12 22:06:07 +02:00
Rob Watson
bf49105619 podWatcher: handle removed pods
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-12 15:26:27 +02:00
Rob Watson
3288b488d3 Tidy 2022-06-11 07:20:28 +02:00
Rob Watson
be99d25fb2 podWatcher: prefer channel for synchronization
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-11 07:13:42 +02:00
Rob Watson
b1a8a75bdb Configure debug logging
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-10 19:04:52 +02:00
Rob Watson
ca822496b0 Support other resource types
All checks were successful
continuous-integration/drone/push Build is passing
Use the untyped k8s client to enable support for statefulsets and
replicasets as well as deployments. The typed client is retained for
usage inside pod_watcher.go.
2022-06-09 20:21:07 +02:00
Rob Watson
6e09e4bf20 Reduce test flakiness 2022-06-07 21:15:04 +02:00
Rob Watson
59a9335017 watcher: handle closed channel
All checks were successful
continuous-integration/drone Build is passing
continuous-integration/drone/push Build is passing
2022-06-04 02:27:20 +02:00
Rob Watson
0827693801 podWatcher: handle closed channel
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-03 22:20:23 +02:00
Rob Watson
d5835821c5 podWatcher: add test coverage
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-02 19:23:47 +02:00
Rob Watson
3639b43260 Rename variable 2022-06-02 19:23:44 +02:00
Rob Watson
7e74fb6f08 Refactor stream error handling 2022-06-02 19:23:41 +02:00
Rob Watson
2ea2ebe836 Tweak CLI interface
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-01 22:04:20 +02:00
Rob Watson
7f10c6a2c2 Improve error handling 2022-06-01 22:04:02 +02:00
Rob Watson
0b0db0ee8f Add per-deployment watcher
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-01 19:19:55 +02:00
Rob Watson
11cc2d6709 Refactor, add container argument
All checks were successful
continuous-integration/drone Build is passing
2022-05-31 06:11:44 +02:00
Rob Watson
4f6b2d1550 Add basic test coverage 2022-05-30 12:10:58 +02:00
Rob Watson
d38f31c3d9 Initial iteration 2022-05-29 21:04:02 +02:00