From 38a1cf748a9920aa2cb49101730bba06db1fd839 Mon Sep 17 00:00:00 2001 From: James Tucker Date: Thu, 18 Jan 2024 10:33:20 -0800 Subject: 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 --- util/execqueue/execqueue_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 util/execqueue/execqueue_test.go (limited to 'util/execqueue/execqueue_test.go') 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) + } +} -- cgit v1.3-3-g829e