@@ -153,6 +153,48 @@ func TestProvisionerd(t *testing.T) {
153
153
require .NoError (t , closer .Close ())
154
154
})
155
155
156
+ t .Run ("RunningPeriodicUpdate" , func (t * testing.T ) {
157
+ t .Parallel ()
158
+ completeChan := make (chan struct {})
159
+ closer := createProvisionerd (t , func (ctx context.Context ) (proto.DRPCProvisionerDaemonClient , error ) {
160
+ return createProvisionerDaemonClient (t , provisionerDaemonTestServer {
161
+ acquireJob : func (ctx context.Context , _ * proto.Empty ) (* proto.AcquiredJob , error ) {
162
+ return & proto.AcquiredJob {
163
+ JobId : "test" ,
164
+ Provisioner : "someprovisioner" ,
165
+ ProjectSourceArchive : createTar (t , map [string ]string {
166
+ "test.txt" : "content" ,
167
+ }),
168
+ Type : & proto.AcquiredJob_ProjectImport_ {
169
+ ProjectImport : & proto.AcquiredJob_ProjectImport {},
170
+ },
171
+ }, nil
172
+ },
173
+ updateJob : func (stream proto.DRPCProvisionerDaemon_UpdateJobStream ) error {
174
+ for {
175
+ _ , err := stream .Recv ()
176
+ if err != nil {
177
+ return err
178
+ }
179
+ close (completeChan )
180
+ }
181
+ },
182
+ cancelJob : func (ctx context.Context , job * proto.CancelledJob ) (* proto.Empty , error ) {
183
+ return & proto.Empty {}, nil
184
+ },
185
+ }), nil
186
+ }, provisionerd.Provisioners {
187
+ "someprovisioner" : createProvisionerClient (t , provisionerTestServer {
188
+ parse : func (request * sdkproto.Parse_Request , stream sdkproto.DRPCProvisioner_ParseStream ) error {
189
+ <- stream .Context ().Done ()
190
+ return nil
191
+ },
192
+ }),
193
+ })
194
+ <- completeChan
195
+ require .NoError (t , closer .Close ())
196
+ })
197
+
156
198
t .Run ("ProjectImport" , func (t * testing.T ) {
157
199
t .Parallel ()
158
200
var (
@@ -331,10 +373,11 @@ func createTar(t *testing.T, files map[string]string) []byte {
331
373
// Creates a provisionerd implementation with the provided dialer and provisioners.
332
374
func createProvisionerd (t * testing.T , dialer provisionerd.Dialer , provisioners provisionerd.Provisioners ) io.Closer {
333
375
closer := provisionerd .New (dialer , & provisionerd.Options {
334
- Logger : slogtest .Make (t , nil ).Named ("provisionerd" ).Leveled (slog .LevelDebug ),
335
- PollInterval : 50 * time .Millisecond ,
336
- Provisioners : provisioners ,
337
- WorkDirectory : t .TempDir (),
376
+ Logger : slogtest .Make (t , nil ).Named ("provisionerd" ).Leveled (slog .LevelDebug ),
377
+ PollInterval : 50 * time .Millisecond ,
378
+ UpdateInterval : 50 * time .Millisecond ,
379
+ Provisioners : provisioners ,
380
+ WorkDirectory : t .TempDir (),
338
381
})
339
382
t .Cleanup (func () {
340
383
_ = closer .Close ()
0 commit comments