177
}
178
179
>
func testCreateOrUpdateNexusEndpointExpectedErrors(t *testing.T, store persistence.NexusEndpointStore, tableVersion *atomic.Int64) {
nexus_endpoint_suite.go
180
>
t.Run("ExpectedErrors", func(t *testing.T) {
181
>
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
182
>
defer cancel()
183
>
184
>
data := &commonpb.DataBlob{
185
>
Data: []byte("dummy endpoint data"),
186
>
EncodingType: enumspb.ENCODING_TYPE_PROTO3,
187
>
}
188
>
189
>
// Valid create
190
>
endpointID := uuid.New().String()
191
>
err := store.CreateOrUpdateNexusEndpoint(ctx, &persistence.InternalCreateOrUpdateNexusEndpointRequest{
192
>
LastKnownTableVersion: tableVersion.Load(),
193
>
Endpoint: persistence.InternalNexusEndpoint{ID: endpointID, Version: 0, Data: data},
194
>
})
195
>
require.NoError(t, err)
196
>
tableVersion.Add(1)
197
>
198
>
// Valid update
199
>
err = store.CreateOrUpdateNexusEndpoint(ctx, &persistence.InternalCreateOrUpdateNexusEndpointRequest{
200
>
LastKnownTableVersion: tableVersion.Load(),
201
>
Endpoint: persistence.InternalNexusEndpoint{ID: endpointID, Version: 1, Data: data},
202
>
})
203
>
require.NoError(t, err)
204
>
tableVersion.Add(1)
205
>
206
>
// Create request (version=0) when endpoint already exists
207
>
err = store.CreateOrUpdateNexusEndpoint(ctx, &persistence.InternalCreateOrUpdateNexusEndpointRequest{
208
>
LastKnownTableVersion: tableVersion.Load(),
209
>
Endpoint: persistence.InternalNexusEndpoint{ID: endpointID, Version: 0, Data: data},
210
>
})
211
>
require.ErrorContains(t, err, "nexus endpoint version mismatch")
212
>
213
>
// Update request version mismatch
214
>
err = store.CreateOrUpdateNexusEndpoint(ctx, &persistence.InternalCreateOrUpdateNexusEndpointRequest{
215
>
LastKnownTableVersion: tableVersion.Load(),
216
>
Endpoint: persistence.InternalNexusEndpoint{ID: endpointID, Version: 10, Data: data},
217
>
})
218
>
require.ErrorContains(t, err, "nexus endpoint version mismatch")
219
>
220
>
// Create request table version mismatch
221
>
err = store.CreateOrUpdateNexusEndpoint(ctx, &persistence.InternalCreateOrUpdateNexusEndpointRequest{
222
>
LastKnownTableVersion: 10,
223
>
Endpoint: persistence.InternalNexusEndpoint{ID: uuid.NewString(), Version: 0, Data: data},
224
>
})
225
>
require.ErrorContains(t, err, "nexus endpoints table version mismatch")
226
>
227
>
// Update request table version mismatch
228
>
err = store.CreateOrUpdateNexusEndpoint(ctx, &persistence.InternalCreateOrUpdateNexusEndpointRequest{
229
>
LastKnownTableVersion: 10,
230
>
Endpoint: persistence.InternalNexusEndpoint{ID: endpointID, Version: 2, Data: data},
231
>
})
232
>
require.ErrorContains(t, err, "nexus endpoints table version mismatch")
233
>
})
234
}
235