@@ -178,6 +178,69 @@ func TestProvisionerd(t *testing.T) {
178
178
require .NoError (t , closer .Close ())
179
179
})
180
180
181
+ t .Run ("LargeTar" , func (t * testing.T ) {
182
+ t .Parallel ()
183
+ done := make (chan struct {})
184
+ t .Cleanup (func () {
185
+ close (done )
186
+ })
187
+ var (
188
+ completeChan = make (chan struct {})
189
+ completeOnce sync.Once
190
+ acq = newAcquireOne (t , & proto.AcquiredJob {
191
+ JobId : "test" ,
192
+ Provisioner : "someprovisioner" ,
193
+ TemplateSourceArchive : testutil .CreateTar (t , map [string ]string {
194
+ "toolarge.txt" : string (make ([]byte , 6 * 1024 * 1024 )),
195
+ }),
196
+ Type : & proto.AcquiredJob_TemplateImport_ {
197
+ TemplateImport : & proto.AcquiredJob_TemplateImport {
198
+ Metadata : & sdkproto.Metadata {},
199
+ },
200
+ },
201
+ })
202
+ )
203
+
204
+ closer := createProvisionerd (t , func (ctx context.Context ) (proto.DRPCProvisionerDaemonClient , error ) {
205
+ return createProvisionerDaemonClient (t , done , provisionerDaemonTestServer {
206
+ acquireJobWithCancel : acq .acquireWithCancel ,
207
+ updateJob : noopUpdateJob ,
208
+ completeJob : func (ctx context.Context , job * proto.CompletedJob ) (* proto.Empty , error ) {
209
+ completeOnce .Do (func () { close (completeChan ) })
210
+ return & proto.Empty {}, nil
211
+ },
212
+ }), nil
213
+ }, provisionerd.LocalProvisioners {
214
+ "someprovisioner" : createProvisionerClient (t , done , provisionerTestServer {
215
+ parse : func (
216
+ s * provisionersdk.Session ,
217
+ _ * sdkproto.ParseRequest ,
218
+ cancelOrComplete <- chan struct {},
219
+ ) * sdkproto.ParseComplete {
220
+ return & sdkproto.ParseComplete {}
221
+ },
222
+ plan : func (
223
+ _ * provisionersdk.Session ,
224
+ _ * sdkproto.PlanRequest ,
225
+ _ <- chan struct {},
226
+ ) * sdkproto.PlanComplete {
227
+ return & sdkproto.PlanComplete {
228
+ Resources : []* sdkproto.Resource {},
229
+ }
230
+ },
231
+ apply : func (
232
+ _ * provisionersdk.Session ,
233
+ _ * sdkproto.ApplyRequest ,
234
+ _ <- chan struct {},
235
+ ) * sdkproto.ApplyComplete {
236
+ return & sdkproto.ApplyComplete {}
237
+ },
238
+ }),
239
+ })
240
+ require .Condition (t , closedWithin (completeChan , testutil .WaitShort ))
241
+ require .NoError (t , closer .Close ())
242
+ })
243
+
181
244
t .Run ("RunningPeriodicUpdate" , func (t * testing.T ) {
182
245
t .Parallel ()
183
246
done := make (chan struct {})
@@ -1115,7 +1178,9 @@ func createProvisionerDaemonClient(t *testing.T, done <-chan struct{}, server pr
1115
1178
mux := drpcmux .New ()
1116
1179
err := proto .DRPCRegisterProvisionerDaemon (mux , & server )
1117
1180
require .NoError (t , err )
1118
- srv := drpcserver .New (mux )
1181
+ srv := drpcserver .NewWithOptions (mux , drpcserver.Options {
1182
+ Manager : drpcsdk .DefaultDRPCOptions (nil ),
1183
+ })
1119
1184
ctx , cancelFunc := context .WithCancel (context .Background ())
1120
1185
closed := make (chan struct {})
1121
1186
go func () {
0 commit comments