Skip to content

Commit 1f96328

Browse files
bors[bot]pattyshackpeterargue
authored
Merge #4073 #4075
4073: Update fvm signature test to use vm.RunV2 r=pattyshack a=pattyshack 4075: [CI] Only run jobs for selected roles r=peterargue a=peterargue The original version would spawn jobs and do all of the pre-build steps for all roles, wasting runner resources. This change: * Only creates jobs for roles that were selected * Skips building relic on the node runner since it is already run during the docker builds Co-authored-by: Patrick Lee <[email protected]> Co-authored-by: Peter Argue <[email protected]>
3 parents 272a225 + 8c25a06 + f88e48a commit 1f96328

File tree

2 files changed

+91
-62
lines changed

2 files changed

+91
-62
lines changed

.github/workflows/builds.yml

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,46 @@ on:
4444
required: false
4545

4646
jobs:
47+
# matrix_builder generates a matrix that includes the roles selected in the input
48+
matrix_builder:
49+
name: Setup build jobs
50+
runs-on: ubuntu-latest
51+
outputs:
52+
matrix: ${{ steps.generate.outputs.matrix }}
53+
steps:
54+
- id: generate
55+
run: |
56+
roles=()
57+
if [[ "${{ inputs.build_access }}" = "true" ]]; then
58+
roles+=( "access" )
59+
fi
60+
if [[ "${{ inputs.build_collection }}" = "true" ]]; then
61+
roles+=( "collection" )
62+
fi
63+
if [[ "${{ inputs.build_consensus }}" = "true" ]]; then
64+
roles+=( "consensus" )
65+
fi
66+
if [[ "${{ inputs.build_execution }}" = "true" ]]; then
67+
roles+=( "execution" )
68+
fi
69+
if [[ "${{ inputs.build_verification }}" = "true" ]]; then
70+
roles+=( "verification" )
71+
fi
72+
if [[ "${{ inputs.build_observer }}" = "true" ]]; then
73+
roles+=( "observer" )
74+
fi
75+
rolesJSON=$(jq --compact-output --null-input '$ARGS.positional' --args -- "${roles[@]}")
76+
echo "matrix={\"role\":$(echo $rolesJSON)}" >> $GITHUB_OUTPUT
4777
docker-push:
48-
name: Push to container registry
78+
name: ${{ matrix.role }} images
4979
runs-on: ubuntu-latest
80+
needs: matrix_builder
81+
82+
# setup jobs for each role
5083
strategy:
5184
fail-fast: false
52-
matrix:
53-
role: [access, collection, consensus, execution, verification, observer]
85+
matrix: ${{ fromJson(needs.matrix_builder.outputs.matrix) }}
86+
5487
steps:
5588
- name: Setup Go
5689
uses: actions/setup-go@v2
@@ -60,8 +93,6 @@ jobs:
6093
uses: actions/checkout@v2
6194
with:
6295
ref: ${{ inputs.tag }}
63-
- name: Build relic
64-
run: make crypto_setup_gopath
6596
# Provide Google Service Account credentials to Github Action, allowing interaction with the Google Container Registry
6697
# Logging in as [email protected]
6798
- name: Docker login
@@ -72,16 +103,14 @@ jobs:
72103
password: ${{ secrets.GCR_SERVICE_KEY }}
73104

74105
- name: Build/Push ${{ matrix.role }} images
75-
if: ${{ (inputs.build_access && matrix.role == 'access') ||
76-
(inputs.build_collection && matrix.role == 'collection') ||
77-
(inputs.build_consensus && matrix.role == 'consensus') ||
78-
(inputs.build_execution && matrix.role == 'execution') ||
79-
(inputs.build_verification && matrix.role == 'verification') ||
80-
(inputs.build_observer && matrix.role == 'observer') }}
81106
env:
82107
IMAGE_TAG: ${{ inputs.docker_tag }}
83108
run: |
84109
make docker-build-${{ matrix.role }} docker-push-${{ matrix.role }}
85-
if [[ "${{ inputs.include_without_netgo }}" = "true" ]]; then
86-
make docker-build-${{ matrix.role }}-without-netgo docker-push-${{ matrix.role }}-without-netgo
87-
fi
110+
111+
- name: Build/Push ${{ matrix.role }} without_netgo images
112+
if: ${{ inputs.include_without_netgo }}
113+
env:
114+
IMAGE_TAG: ${{ inputs.docker_tag }}
115+
run: |
116+
make docker-build-${{ matrix.role }}-without-netgo docker-push-${{ matrix.role }}-without-netgo

fvm/fvm_signature_test.go

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,11 @@ func TestKeyListSignature(t *testing.T) {
187187
jsoncdc.MustEncode(weight),
188188
)
189189

190-
err := vm.Run(ctx, script, view)
190+
_, output, err := vm.RunV2(ctx, script, view)
191191
assert.NoError(t, err)
192-
assert.NoError(t, script.Err)
192+
assert.NoError(t, output.Err)
193193

194-
assert.Equal(t, cadence.NewBool(true), script.Value)
194+
assert.Equal(t, cadence.NewBool(true), output.Value)
195195
})
196196

197197
t.Run("Invalid message", func(t *testing.T) {
@@ -204,11 +204,11 @@ func TestKeyListSignature(t *testing.T) {
204204
jsoncdc.MustEncode(weight),
205205
)
206206

207-
err := vm.Run(ctx, script, view)
207+
_, output, err := vm.RunV2(ctx, script, view)
208208
assert.NoError(t, err)
209-
assert.NoError(t, script.Err)
209+
assert.NoError(t, output.Err)
210210

211-
assert.Equal(t, cadence.NewBool(false), script.Value)
211+
assert.Equal(t, cadence.NewBool(false), output.Value)
212212
})
213213

214214
t.Run("Invalid signature", func(t *testing.T) {
@@ -226,11 +226,11 @@ func TestKeyListSignature(t *testing.T) {
226226
jsoncdc.MustEncode(weight),
227227
)
228228

229-
err := vm.Run(ctx, script, view)
229+
_, output, err := vm.RunV2(ctx, script, view)
230230
assert.NoError(t, err)
231-
assert.NoError(t, script.Err)
231+
assert.NoError(t, output.Err)
232232

233-
assert.Equal(t, cadence.NewBool(false), script.Value)
233+
assert.Equal(t, cadence.NewBool(false), output.Value)
234234
})
235235

236236
t.Run("Malformed public key", func(t *testing.T) {
@@ -247,9 +247,9 @@ func TestKeyListSignature(t *testing.T) {
247247
jsoncdc.MustEncode(weight),
248248
)
249249

250-
err := vm.Run(ctx, script, view)
250+
_, output, err := vm.RunV2(ctx, script, view)
251251
require.NoError(t, err)
252-
require.Error(t, script.Err)
252+
require.Error(t, output.Err)
253253
})
254254
},
255255
))
@@ -295,11 +295,11 @@ func TestKeyListSignature(t *testing.T) {
295295
jsoncdc.MustEncode(weight),
296296
)
297297

298-
err := vm.Run(ctx, script, view)
298+
_, output, err := vm.RunV2(ctx, script, view)
299299
assert.NoError(t, err)
300-
assert.NoError(t, script.Err)
300+
assert.NoError(t, output.Err)
301301

302-
assert.Equal(t, cadence.NewBool(true), script.Value)
302+
assert.Equal(t, cadence.NewBool(true), output.Value)
303303
})
304304

305305
t.Run("2 of 3", func(t *testing.T) {
@@ -315,11 +315,11 @@ func TestKeyListSignature(t *testing.T) {
315315
jsoncdc.MustEncode(weight),
316316
)
317317

318-
err := vm.Run(ctx, script, view)
318+
_, output, err := vm.RunV2(ctx, script, view)
319319
assert.NoError(t, err)
320-
assert.NoError(t, script.Err)
320+
assert.NoError(t, output.Err)
321321

322-
assert.Equal(t, cadence.NewBool(true), script.Value)
322+
assert.Equal(t, cadence.NewBool(true), output.Value)
323323
})
324324

325325
t.Run("1 of 3", func(t *testing.T) {
@@ -334,11 +334,11 @@ func TestKeyListSignature(t *testing.T) {
334334
jsoncdc.MustEncode(weight),
335335
)
336336

337-
err := vm.Run(ctx, script, view)
337+
_, output, err := vm.RunV2(ctx, script, view)
338338
assert.NoError(t, err)
339-
assert.NoError(t, script.Err)
339+
assert.NoError(t, output.Err)
340340

341-
assert.Equal(t, cadence.NewBool(false), script.Value)
341+
assert.Equal(t, cadence.NewBool(false), output.Value)
342342
})
343343
},
344344
))
@@ -441,10 +441,10 @@ func TestBLSMultiSignature(t *testing.T) {
441441
jsoncdc.MustEncode(pop),
442442
)
443443

444-
err = vm.Run(ctx, script, view)
444+
_, output, err := vm.RunV2(ctx, script, view)
445445
assert.NoError(t, err)
446-
assert.NoError(t, script.Err)
447-
assert.Equal(t, cadence.NewBool(true), script.Value)
446+
assert.NoError(t, output.Err)
447+
assert.Equal(t, cadence.NewBool(true), output.Value)
448448

449449
})
450450

@@ -467,10 +467,10 @@ func TestBLSMultiSignature(t *testing.T) {
467467
jsoncdc.MustEncode(pop),
468468
)
469469

470-
err = vm.Run(ctx, script, view)
470+
_, output, err := vm.RunV2(ctx, script, view)
471471
assert.NoError(t, err)
472-
assert.NoError(t, script.Err)
473-
assert.Equal(t, cadence.NewBool(false), script.Value)
472+
assert.NoError(t, output.Err)
473+
assert.Equal(t, cadence.NewBool(false), output.Value)
474474

475475
})
476476

@@ -493,9 +493,9 @@ func TestBLSMultiSignature(t *testing.T) {
493493
jsoncdc.MustEncode(pop),
494494
)
495495

496-
err = vm.Run(ctx, script, view)
496+
_, output, err := vm.RunV2(ctx, script, view)
497497
assert.NoError(t, err)
498-
assert.Error(t, script.Err)
498+
assert.Error(t, output.Err)
499499
})
500500
}
501501
},
@@ -562,13 +562,13 @@ func TestBLSMultiSignature(t *testing.T) {
562562
}),
563563
)
564564

565-
err = vm.Run(ctx, script, view)
565+
_, output, err := vm.RunV2(ctx, script, view)
566566
assert.NoError(t, err)
567-
assert.NoError(t, script.Err)
567+
assert.NoError(t, output.Err)
568568

569569
expectedSig, err := crypto.AggregateBLSSignatures(sigs)
570570
require.NoError(t, err)
571-
assert.Equal(t, cadence.Optional{Value: testutil.BytesToCadenceArray(expectedSig)}, script.Value)
571+
assert.Equal(t, cadence.Optional{Value: testutil.BytesToCadenceArray(expectedSig)}, output.Value)
572572
})
573573

574574
t.Run("at least one invalid BLS signature", func(t *testing.T) {
@@ -597,10 +597,10 @@ func TestBLSMultiSignature(t *testing.T) {
597597
// revert the change
598598
sigs[numSigs/2] = tmp
599599

600-
err = vm.Run(ctx, script, view)
600+
_, output, err := vm.RunV2(ctx, script, view)
601601
assert.NoError(t, err)
602-
assert.Error(t, script.Err)
603-
assert.Equal(t, nil, script.Value)
602+
assert.Error(t, output.Err)
603+
assert.Equal(t, nil, output.Value)
604604
})
605605

606606
t.Run("empty signature list", func(t *testing.T) {
@@ -617,10 +617,10 @@ func TestBLSMultiSignature(t *testing.T) {
617617
}),
618618
)
619619

620-
err = vm.Run(ctx, script, view)
620+
_, output, err := vm.RunV2(ctx, script, view)
621621
assert.NoError(t, err)
622-
assert.Error(t, script.Err)
623-
assert.Equal(t, nil, script.Value)
622+
assert.Error(t, output.Err)
623+
assert.Equal(t, nil, output.Value)
624624
})
625625
},
626626
))
@@ -688,13 +688,13 @@ func TestBLSMultiSignature(t *testing.T) {
688688
}),
689689
)
690690

691-
err := vm.Run(ctx, script, view)
691+
_, output, err := vm.RunV2(ctx, script, view)
692692
assert.NoError(t, err)
693-
assert.NoError(t, script.Err)
693+
assert.NoError(t, output.Err)
694694
expectedPk, err := crypto.AggregateBLSPublicKeys(pks)
695695
require.NoError(t, err)
696696

697-
assert.Equal(t, cadence.Optional{Value: testutil.BytesToCadenceArray(expectedPk.Encode())}, script.Value)
697+
assert.Equal(t, cadence.Optional{Value: testutil.BytesToCadenceArray(expectedPk.Encode())}, output.Value)
698698
})
699699

700700
for _, signatureAlgorithm := range signatureAlgorithms[1:] {
@@ -722,9 +722,9 @@ func TestBLSMultiSignature(t *testing.T) {
722722
}),
723723
)
724724

725-
err := vm.Run(ctx, script, view)
725+
_, output, err := vm.RunV2(ctx, script, view)
726726
assert.NoError(t, err)
727-
assert.Error(t, script.Err)
727+
assert.Error(t, output.Err)
728728
})
729729
}
730730

@@ -742,10 +742,10 @@ func TestBLSMultiSignature(t *testing.T) {
742742
}),
743743
)
744744

745-
err := vm.Run(ctx, script, view)
745+
_, output, err := vm.RunV2(ctx, script, view)
746746
assert.NoError(t, err)
747-
assert.Error(t, script.Err)
748-
assert.Equal(t, nil, script.Value)
747+
assert.Error(t, output.Err)
748+
assert.Equal(t, nil, output.Value)
749749
})
750750
},
751751
))
@@ -833,10 +833,10 @@ func TestBLSMultiSignature(t *testing.T) {
833833
jsoncdc.MustEncode(cadence.String(tag)),
834834
)
835835

836-
err := vm.Run(ctx, script, view)
836+
_, output, err := vm.RunV2(ctx, script, view)
837837
assert.NoError(t, err)
838-
assert.NoError(t, script.Err)
839-
assert.Equal(t, cadence.NewBool(true), script.Value)
838+
assert.NoError(t, output.Err)
839+
assert.Equal(t, cadence.NewBool(true), output.Value)
840840
},
841841
))
842842
}

0 commit comments

Comments
 (0)