Files
nomad/testutil/mock_calls.go
Daniel Bennett 7bd5c6e84e test: Refactor mock CSI manager (#18554)
and MockCSIManager to support the call counting
that csi_hook_test expects

instead of implementing csimanager
interfaces in two separate places:
* client/allocrunner/csi_hook_test
* client/csi_endpoint_test

they can both use the same mocks defined in
client/pluginmanager/csimanager/
alongside the actual implementations of them.

also refactor TestCSINode_DetachVolume
to use use it like Node_ExpandVolume
so we can also test the happy path there
2023-09-21 16:03:53 -05:00

43 lines
732 B
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package testutil
import (
"maps"
"sync"
"github.com/mitchellh/go-testing-interface"
)
func NewCallCounter() *CallCounter {
return &CallCounter{
counts: make(map[string]int),
}
}
type CallCounter struct {
lock sync.Mutex
counts map[string]int
}
func (c *CallCounter) Inc(name string) {
c.lock.Lock()
defer c.lock.Unlock()
c.counts[name]++
}
func (c *CallCounter) Get() map[string]int {
c.lock.Lock()
defer c.lock.Unlock()
return maps.Clone(c.counts)
}
func (c *CallCounter) AssertCalled(t testing.T, name string) {
t.Helper()
counts := c.Get()
if _, ok := counts[name]; !ok {
t.Errorf("'%s' not called; all counts: %v", counts)
}
}