Skip to content

Commit

Permalink
Provide Electra body builder test (Consensys#8402)
Browse files Browse the repository at this point in the history
* provide electra body builder test

* rebase
  • Loading branch information
tbenr authored Jun 25, 2024
1 parent d55c73d commit 487b75f
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.tuweni.bytes.Bytes32;
import org.junit.jupiter.api.Test;
import tech.pegasys.teku.bls.BLSSignature;
Expand Down Expand Up @@ -166,9 +165,7 @@ void equalsReturnsFalseWhenProposerSlashingsAreDifferent() {
void equalsReturnsFalseWhenAttesterSlashingsAreDifferent() {
// Create copy of attesterSlashings and change the element to ensure it is different.
attesterSlashings =
Stream.concat(
Stream.of(dataStructureUtil.randomAttesterSlashing()), attesterSlashings.stream())
.collect(blockBodySchema.getAttesterSlashingsSchema().collector());
blockBodySchema.getAttesterSlashingsSchema().of(dataStructureUtil.randomAttesterSlashing());

T testBeaconBlockBody = createBlockBody();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* Copyright Consensys Software Inc., 2022
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/

package tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra;

import java.util.function.Consumer;
import org.junit.jupiter.api.BeforeEach;
import tech.pegasys.teku.infrastructure.ssz.SszList;
import tech.pegasys.teku.spec.SpecMilestone;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBodyBuilder;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.common.AbstractBeaconBlockBodyTest;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregate;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.bellatrix.BlindedBeaconBlockBodyBellatrix;
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload;
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader;
import tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange;
import tech.pegasys.teku.spec.datastructures.type.SszKZGCommitment;

class BeaconBlockBodyElectraTest extends AbstractBeaconBlockBodyTest<BeaconBlockBodyElectra> {

protected SyncAggregate syncAggregate;
protected ExecutionPayload executionPayload;
protected ExecutionPayloadHeader executionPayloadHeader;
protected SszList<SignedBlsToExecutionChange> blsToExecutionChanges;
protected SszList<SszKZGCommitment> blobKzgCommitments;

@BeforeEach
void setup() {
super.setUpBaseClass(
SpecMilestone.ELECTRA,
() -> {
syncAggregate = dataStructureUtil.randomSyncAggregate();
executionPayload = dataStructureUtil.randomExecutionPayload();
executionPayloadHeader = dataStructureUtil.randomExecutionPayloadHeader();
blsToExecutionChanges = dataStructureUtil.randomSignedBlsToExecutionChangesList();
blobKzgCommitments = dataStructureUtil.randomBlobKzgCommitments();
});
}

@Override
protected BeaconBlockBodyElectra createBlockBody(
final Consumer<BeaconBlockBodyBuilder> contentProvider) {
final BeaconBlockBodyBuilder bodyBuilder = createBeaconBlockBodyBuilder();
contentProvider.accept(bodyBuilder);
return bodyBuilder.build().toVersionElectra().orElseThrow();
}

@Override
protected BlindedBeaconBlockBodyBellatrix createBlindedBlockBody(
final Consumer<BeaconBlockBodyBuilder> contentProvider) {
final BeaconBlockBodyBuilder bodyBuilder = createBeaconBlockBodyBuilder();
contentProvider.accept(bodyBuilder);
return bodyBuilder.build().toBlindedVersionElectra().orElseThrow();
}

@Override
protected Consumer<BeaconBlockBodyBuilder> createContentProvider(final boolean blinded) {
return super.createContentProvider(blinded)
.andThen(
builder -> {
builder
.syncAggregate(syncAggregate)
.blsToExecutionChanges(blsToExecutionChanges)
.blobKzgCommitments(blobKzgCommitments);
if (blinded) {
builder.executionPayloadHeader(executionPayloadHeader);
} else {
builder.executionPayload(executionPayload);
}
});
}
}

0 comments on commit 487b75f

Please sign in to comment.