Skip to content

Commit 641541c

Browse files
committed
state: add new state package as a foundation for v2
1 parent e508a12 commit 641541c

13 files changed

Lines changed: 5252 additions & 5 deletions

File tree

cachekeys/keys.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ func SplitGVRMetaNamespaceKey(key string) (gvr *schema.GroupVersionResource, nam
3535
before, after, ok := strings.Cut(key, "::")
3636
if !ok {
3737
err = fmt.Errorf("error parsing key: %s", key)
38+
3839
return
3940
}
4041
gvr, _ = schema.ParseResourceArg(before)
4142
if gvr == nil {
4243
err = fmt.Errorf("error parsing gvr from key: %s", before)
44+
4345
return
4446
}
4547
namespace, name, err = cache.SplitMetaNamespaceKey(after)

component/component.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ func (c *Component[K]) List(ctx context.Context, indexValue fmt.Stringer) (out [
5858
ownedObjects, err := c.indexer.ByIndex(c.indexName, indexValue.String())
5959
if err != nil {
6060
utilruntime.HandleError(err)
61+
6162
return
6263
}
6364
for _, d := range ownedObjects {

go.mod

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
module github.com/authzed/controller-idioms
22

3-
go 1.24.0
4-
5-
toolchain go1.24.4
3+
go 1.25.0
64

75
require (
86
github.com/cespare/xxhash/v2 v2.3.0
@@ -89,6 +87,7 @@ require (
8987
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
9088
github.com/MakeNowJust/heredoc v1.0.0 // indirect
9189
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
90+
github.com/authzed/ctxkey v0.0.0-20260210154927-ca132876f62c // indirect
9291
github.com/chai2010/gettext-go v1.0.2 // indirect
9392
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
9493
github.com/fxamacker/cbor/v2 v2.8.0 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8
1010
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
1111
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
1212
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
13+
github.com/authzed/ctxkey v0.0.0-20260210154927-ca132876f62c h1:kcjpI9wcj5yFYWJ7bEeiY6hqH2I6Es3lVz6PB7RKblQ=
14+
github.com/authzed/ctxkey v0.0.0-20260210154927-ca132876f62c/go.mod h1:ve6DXRv9l2HcM2lxSUmZKWXl7Iq/00xYixBuHOtST+4=
1315
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
1416
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
1517
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=

manager/controller_test.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"net/http"
7+
"sync"
78
"testing"
89
"time"
910

@@ -32,7 +33,7 @@ func ExampleNewOwnedResourceController() {
3233
CtxQueue := queue.NewQueueOperationsCtx()
3334
registry := typed.NewRegistry()
3435
broadcaster := record.NewBroadcaster()
35-
eventSink := &typedcorev1.EventSinkImpl{Interface: fake.NewSimpleClientset().CoreV1().Events("")}
36+
eventSink := &typedcorev1.EventSinkImpl{Interface: fake.NewClientset().CoreV1().Events("")}
3637

3738
// the controller processes objects on the queue, but doesn't set up any
3839
// informers by default.
@@ -120,11 +121,12 @@ func TestControllerEventsBroadcast(t *testing.T) {
120121
recorder.Event(&v1.ObjectReference{Namespace: "test", Name: "a"}, v1.EventTypeNormal, "test", "test")
121122

122123
require.Eventually(t, func() bool {
123-
return len(eventSink.Events) > 0
124+
return eventSink.Len() > 0
124125
}, 5*time.Second, 1*time.Millisecond)
125126
}
126127

127128
type fakeEventSink struct {
129+
mu sync.Mutex
128130
Events map[types.UID]*v1.Event
129131
}
130132

@@ -134,18 +136,30 @@ func newFakeEventSink() *fakeEventSink {
134136
}
135137
}
136138

139+
func (f *fakeEventSink) Len() int {
140+
f.mu.Lock()
141+
defer f.mu.Unlock()
142+
return len(f.Events)
143+
}
144+
137145
func (f *fakeEventSink) Create(event *v1.Event) (*v1.Event, error) {
146+
f.mu.Lock()
138147
f.Events[event.UID] = event
148+
f.mu.Unlock()
139149
return event, nil
140150
}
141151

142152
func (f *fakeEventSink) Update(event *v1.Event) (*v1.Event, error) {
153+
f.mu.Lock()
143154
f.Events[event.UID] = event
155+
f.mu.Unlock()
144156
return event, nil
145157
}
146158

147159
func (f *fakeEventSink) Patch(oldEvent *v1.Event, _ []byte) (*v1.Event, error) {
160+
f.mu.Lock()
148161
f.Events[oldEvent.UID] = oldEvent
162+
f.mu.Unlock()
149163
return oldEvent, nil
150164
}
151165

0 commit comments

Comments
 (0)