Skip to content

Commit 19ead08

Browse files
author
CodingWizKid
committed
add test cases apply changes
1 parent ce92224 commit 19ead08

File tree

3 files changed

+340
-30
lines changed

3 files changed

+340
-30
lines changed

internal/stackitprovider/apply_changes.go

+26-24
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package stackitprovider
33
import (
44
"context"
55
"fmt"
6-
"sync"
76

87
stackitdnsclient "github.com/stackitcloud/stackit-dns-api-client-go"
98
"go.uber.org/zap"
@@ -49,9 +48,7 @@ func (d *StackitDNSProvider) createRRSets(
4948
return err
5049
}
5150

52-
d.handleRRSetWithWorkers(ctx, endpoints, zones, CREATE)
53-
54-
return nil
51+
return d.handleRRSetWithWorkers(ctx, endpoints, zones, CREATE)
5552
}
5653

5754
// createRRSet creates a new record set in the stackitprovider for the given endpoint.
@@ -112,9 +109,7 @@ func (d *StackitDNSProvider) updateRRSets(
112109
return err
113110
}
114111

115-
d.handleRRSetWithWorkers(ctx, endpoints, zones, UPDATE)
116-
117-
return nil
112+
return d.handleRRSetWithWorkers(ctx, endpoints, zones, UPDATE)
118113
}
119114

120115
// updateRRSet patches (overrides) contents in the record set in the stackitprovider.
@@ -127,7 +122,7 @@ func (d *StackitDNSProvider) updateRRSet(
127122

128123
resultZone, resultRRSet, err := d.rrSetFetcherClient.getRRSetForUpdateDeletion(ctx, change, zones)
129124
if err != nil {
130-
return fmt.Errorf("no matching zone found for %s", change.DNSName)
125+
return err
131126
}
132127

133128
logFields := getLogFields(change, UPDATE, resultRRSet.Id)
@@ -179,9 +174,7 @@ func (d *StackitDNSProvider) deleteRRSets(
179174
return err
180175
}
181176

182-
d.handleRRSetWithWorkers(ctx, endpoints, zones, DELETE)
183-
184-
return nil
177+
return d.handleRRSetWithWorkers(ctx, endpoints, zones, DELETE)
185178
}
186179

187180
// deleteRRSet deletes a record set in the stackitprovider for the given endpoint.
@@ -194,7 +187,7 @@ func (d *StackitDNSProvider) deleteRRSet(
194187

195188
resultZone, resultRRSet, err := d.rrSetFetcherClient.getRRSetForUpdateDeletion(ctx, change, zones)
196189
if err != nil {
197-
return fmt.Errorf("no matching zone found for %s", change.DNSName)
190+
return err
198191
}
199192

200193
logFields := getLogFields(change, DELETE, resultRRSet.Id)
@@ -230,14 +223,12 @@ func (d *StackitDNSProvider) handleRRSetWithWorkers(
230223
endpoints []*endpoint.Endpoint,
231224
zones []stackitdnsclient.DomainZone,
232225
action string,
233-
) {
226+
) error {
234227
workerChannel := make(chan changeTask, len(endpoints))
235-
wg := new(sync.WaitGroup)
228+
errorChannel := make(chan error, len(endpoints))
236229

237-
// create workers
238230
for i := 0; i < d.workers; i++ {
239-
wg.Add(1)
240-
go d.changeWorker(ctx, wg, workerChannel, zones)
231+
go d.changeWorker(ctx, workerChannel, errorChannel, zones)
241232
}
242233

243234
for _, change := range endpoints {
@@ -247,27 +238,38 @@ func (d *StackitDNSProvider) handleRRSetWithWorkers(
247238
}
248239
}
249240

241+
for i := 0; i < len(endpoints); i++ {
242+
err := <-errorChannel
243+
if err != nil {
244+
close(workerChannel)
245+
246+
return err
247+
}
248+
}
249+
250250
close(workerChannel)
251-
wg.Wait()
251+
252+
return nil
252253
}
253254

254255
// changeWorker is a worker that handles changes passed by a channel.
255256
func (d *StackitDNSProvider) changeWorker(
256257
ctx context.Context,
257-
wg *sync.WaitGroup,
258258
changes chan changeTask,
259+
errorChannel chan error,
259260
zones []stackitdnsclient.DomainZone,
260261
) {
261-
defer wg.Done()
262-
263262
for change := range changes {
264263
switch change.action {
265264
case CREATE:
266-
_ = d.createRRSet(ctx, change.change, zones)
265+
err := d.createRRSet(ctx, change.change, zones)
266+
errorChannel <- err
267267
case UPDATE:
268-
_ = d.updateRRSet(ctx, change.change, zones)
268+
err := d.updateRRSet(ctx, change.change, zones)
269+
errorChannel <- err
269270
case DELETE:
270-
_ = d.deleteRRSet(ctx, change.change, zones)
271+
err := d.deleteRRSet(ctx, change.change, zones)
272+
errorChannel <- err
271273
}
272274
}
273275

0 commit comments

Comments
 (0)