summaryrefslogtreecommitdiffhomepage
path: root/util/execqueue/execqueue_test.go
diff options
context:
space:
mode:
authorJames Tucker <james@tailscale.com>2024-01-18 10:33:20 -0800
committerJames Tucker <jftucker@gmail.com>2024-01-18 12:08:13 -0800
commit38a1cf748a9920aa2cb49101730bba06db1fd839 (patch)
treee98007d5dc8a777a3a1b99ac8b8682facc438ad1 /util/execqueue/execqueue_test.go
parent32f01acc79756468656f622adb0c1f68422eaf42 (diff)
downloadtailscale-38a1cf748a9920aa2cb49101730bba06db1fd839.tar.xz
tailscale-38a1cf748a9920aa2cb49101730bba06db1fd839.zip
control/controlclient,util/execqueue: extract execqueue into a package
This is a useful primitive for asynchronous execution of ordered work I want to use in another change. Updates tailscale/corp#16833 Signed-off-by: James Tucker <james@tailscale.com>
Diffstat (limited to 'util/execqueue/execqueue_test.go')
-rw-r--r--util/execqueue/execqueue_test.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/util/execqueue/execqueue_test.go b/util/execqueue/execqueue_test.go
new file mode 100644
index 000000000..d10b741f7
--- /dev/null
+++ b/util/execqueue/execqueue_test.go
@@ -0,0 +1,22 @@
+// Copyright (c) Tailscale Inc & AUTHORS
+// SPDX-License-Identifier: BSD-3-Clause
+
+package execqueue
+
+import (
+ "context"
+ "sync/atomic"
+ "testing"
+)
+
+func TestExecQueue(t *testing.T) {
+ ctx := context.Background()
+ var n atomic.Int32
+ q := &ExecQueue{}
+ defer q.Shutdown()
+ q.Add(func() { n.Add(1) })
+ q.Wait(ctx)
+ if got := n.Load(); got != 1 {
+ t.Errorf("n=%d; want 1", got)
+ }
+}