Something went wrong. Try again.
forked from tailscale/tailscale
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132// Copyright (c) Tailscale Inc & contributors// 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) }}
// Test that RunSync doesn't hold q.mu and block Shutdown// as we saw in tailscale/tailscale#18502func TestExecQueueRunSyncLocking(t *testing.T) { q := &ExecQueue{} q.RunSync(t.Context(), func() { q.Shutdown() })}