/**
* Copyright (c) 2014 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemarkBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Experimenter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.ExperimenterIdMeterBand;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
public class MeterConvertorTest {
private ConvertorManager convertorManager;
@Before
public void setUp() {
convertorManager = ConvertorManagerFactory.createDefaultManager();
}
@Test
public void testMeterModCommandConvertorwithAllParameters() {
long BURST_SIZE = 10L;
long DROP_RATE = 20L;
// / DROP Band
MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
MeterBandType bandFlag = new MeterBandType(true, false, false);
meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
DropBuilder drop = new DropBuilder();
drop.setDropBurstSize(BURST_SIZE);
drop.setDropRate(DROP_RATE);
Drop drp = drop.build();
meterBandHeaderBuilder.setBandType(drp);
meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
MeterBandHeader meterBH = meterBandHeaderBuilder.build();
// DSCP Mark
long DSCP_REMARK_BURST_SIZE = 11L;
long DSCP_REMARK_RATE = 21L;
short DSCP_PERC_LEVEL = 1;
MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
MeterBandType bandFlag1 = new MeterBandType(false, true, false);
meterBandTypesB1.setFlags(bandFlag1);
DscpRemarkBuilder dscp = new DscpRemarkBuilder();
dscp.setDscpRemarkBurstSize(DSCP_REMARK_BURST_SIZE);
dscp.setDscpRemarkRate(DSCP_REMARK_RATE);
dscp.setPrecLevel(DSCP_PERC_LEVEL);
DscpRemark dscpRemark = dscp.build();
meterBandHeaderBuilder1.setBandType(dscpRemark);
meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
// Experimental
long EXP_BURST_SIZE = 12L;
long EXP_RATE = 22L;
long EXP_EXPERIMENTER = 23L;
MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
MeterBandType bandFlag2 = new MeterBandType(false, false, true);
meterBandTypesB2.setFlags(bandFlag2);
ExperimenterBuilder exp = new ExperimenterBuilder();
exp.setExperimenterBurstSize(EXP_BURST_SIZE);
exp.setExperimenterRate(EXP_RATE);
exp.setExperimenter(EXP_EXPERIMENTER);
Experimenter experimenter = exp.build();
meterBandHeaderBuilder2.setBandType(experimenter);
meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
meterBandList.add(0, meterBH);
meterBandList.add(1, meterBH1);
meterBandList.add(2, meterBH2);
// Constructing List of Bands
MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
// added to the
// meter command.
Long temp = 10L;
// NodeKey key = new NodeKey(new NodeId("24"));
// InstanceIdentifier<Node> path =
// InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
// key).build();
addMeterFromSAL
.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
MeterFlags flagV = new MeterFlags(true, true, true, true);
addMeterFromSAL.setFlags(flagV);
AddMeterInput meterInputCommand = addMeterFromSAL.build();
MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
assertEquals(temp, outMeterModInput.getMeterId().getValue());
// BandInformation starts here:
List<Bands> bands = outMeterModInput.getBands();
for (Bands currentBand : bands) {
MeterBand meterBand = currentBand.getMeterBand();
if (meterBand instanceof MeterBandDropCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
assertEquals(BURST_SIZE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
assertEquals(DROP_RATE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
}
if (meterBand instanceof MeterBandDscpRemarkCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
assertEquals(DSCP_REMARK_BURST_SIZE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize());
assertEquals(DSCP_REMARK_RATE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate());
assertEquals(DSCP_PERC_LEVEL, (short) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel());
}
if (meterBand instanceof MeterBandExperimenterCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
assertEquals(EXP_BURST_SIZE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
assertEquals(EXP_RATE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
.getAugmentation(ExperimenterIdMeterBand.class);
assertEquals(EXP_EXPERIMENTER, (long) expBand.getExperimenter().getValue());
}
}
}
@Test
public void testMeterModCommandConvertorwithNoFlags() {
long BURST_SIZE = 10L;
long DROP_RATE = 20L;
// / DROP Band
MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
MeterBandType bandFlag = new MeterBandType(true, false, false);
meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
DropBuilder drop = new DropBuilder();
drop.setDropBurstSize(BURST_SIZE);
drop.setDropRate(DROP_RATE);
Drop drp = drop.build();
meterBandHeaderBuilder.setBandType(drp);
meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
MeterBandHeader meterBH = meterBandHeaderBuilder.build();
// DSCP Mark
long DSCP_REMARK_BURST_SIZE = 11L;
long DSCP_REMARK_RATE = 21L;
short DSCP_PERC_LEVEL = 1;
MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
MeterBandType bandFlag1 = new MeterBandType(false, true, false);
meterBandTypesB1.setFlags(bandFlag1);
DscpRemarkBuilder dscp = new DscpRemarkBuilder();
dscp.setDscpRemarkBurstSize(DSCP_REMARK_BURST_SIZE);
dscp.setDscpRemarkRate(DSCP_REMARK_RATE);
dscp.setPrecLevel(DSCP_PERC_LEVEL);
DscpRemark dscpRemark = dscp.build();
meterBandHeaderBuilder1.setBandType(dscpRemark);
meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
// Experimental
long EXP_BURST_SIZE = 12L;
long EXP_RATE = 22L;
long EXP_EXPERIMENTER = 23L;
MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
MeterBandType bandFlag2 = new MeterBandType(false, false, true);
meterBandTypesB2.setFlags(bandFlag2);
ExperimenterBuilder exp = new ExperimenterBuilder();
exp.setExperimenterBurstSize(EXP_BURST_SIZE);
exp.setExperimenterRate(EXP_RATE);
exp.setExperimenter(EXP_EXPERIMENTER);
Experimenter experimenter = exp.build();
meterBandHeaderBuilder2.setBandType(experimenter);
meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
meterBandList.add(0, meterBH);
meterBandList.add(1, meterBH1);
meterBandList.add(2, meterBH2);
// Constructing List of Bands
MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
// added to the
// meter command.
Long temp = 10L;
// NodeKey key = new NodeKey(new NodeId("24"));
// InstanceIdentifier<Node> path =
// InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
// key).build();
addMeterFromSAL
.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
AddMeterInput meterInputCommand = addMeterFromSAL.build();
MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
assertFalse(outMeterModInput.getFlags().isOFPMFBURST());
assertTrue(outMeterModInput.getFlags().isOFPMFPKTPS());
assertEquals(temp, outMeterModInput.getMeterId().getValue());
// BandInformation starts here:
List<Bands> bands = outMeterModInput.getBands();
for (Bands currentBand : bands) {
MeterBand meterBand = currentBand.getMeterBand();
if (meterBand instanceof MeterBandDropCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
assertEquals(BURST_SIZE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
assertEquals(DROP_RATE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
}
if (meterBand instanceof MeterBandDscpRemarkCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
assertEquals(DSCP_REMARK_BURST_SIZE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize());
assertEquals(DSCP_REMARK_RATE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate());
assertEquals(DSCP_PERC_LEVEL, (short) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel());
}
if (meterBand instanceof MeterBandExperimenterCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
assertEquals(EXP_BURST_SIZE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
assertEquals(EXP_RATE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
.getAugmentation(ExperimenterIdMeterBand.class);
assertEquals(EXP_EXPERIMENTER, (long) expBand.getExperimenter().getValue());
}
}
}
@Test
public void testMeterModCommandConvertorBandDataisNULL() {
AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
Long temp = 10L;
// NodeKey key = new NodeKey(new NodeId("24"));
// InstanceIdentifier<Node> path =
// InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
// key).build();
addMeterFromSAL
.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
MeterFlags flagV = new MeterFlags(true, true, true, true);
addMeterFromSAL.setFlags(flagV);
AddMeterInput meterInputCommand = addMeterFromSAL.build();
MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
assertEquals(temp, outMeterModInput.getMeterId().getValue());
}
@Test
public void testMeterModCommandConvertorNoValidBandData() {
// / DROP Band
MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
MeterBandType bandFlag = new MeterBandType(true, false, false);
meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
MeterBandHeader meterBH = meterBandHeaderBuilder.build();
// DSCP Mark
MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
MeterBandType bandFlag1 = new MeterBandType(false, true, false);
meterBandTypesB1.setFlags(bandFlag1);
DscpRemarkBuilder dscp = new DscpRemarkBuilder();
dscp.setDscpRemarkBurstSize(11L);
dscp.setDscpRemarkRate(21L);
dscp.setPrecLevel((short) 1);
DscpRemark dscpRemark = dscp.build();
meterBandHeaderBuilder1.setBandType(dscpRemark);
meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
// Experimental
MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
ExperimenterBuilder exp = new ExperimenterBuilder();
exp.setExperimenterBurstSize(12L);
exp.setExperimenterRate(22L);
exp.setExperimenter(23L);
Experimenter experimenter = exp.build();
meterBandHeaderBuilder2.setBandType(experimenter);
meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
meterBandList.add(0, meterBH);
meterBandList.add(1, meterBH1);
meterBandList.add(2, meterBH2);
// Constructing List of Bands
MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
// added to the
// meter command.
Long temp = 10L;
// NodeKey key = new NodeKey(new NodeId("24"));
// InstanceIdentifier<Node> path =
// InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
// key).build();
addMeterFromSAL
.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
MeterFlags flagV = new MeterFlags(true, true, true, true);
addMeterFromSAL.setFlags(flagV);
AddMeterInput meterInputCommand = addMeterFromSAL.build();
MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
assertEquals(temp, outMeterModInput.getMeterId().getValue());
// BandInformation starts here:
List<Bands> bands = outMeterModInput.getBands();
for (Bands currentBand : bands) {
MeterBand meterBand = currentBand.getMeterBand();
if (meterBand instanceof MeterBandDropCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
assertEquals((long) 20, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
assertEquals((long) 10, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
}
if (meterBand instanceof MeterBandDscpRemarkCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
assertEquals((long) 11, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize());
assertEquals((long) 21, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate());
assertEquals((short) 1, (short) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel());
}
if (meterBand instanceof MeterBandExperimenterCase) {
assertEquals(
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
assertEquals((long) 12, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
assertEquals((long) 22, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
.getAugmentation(ExperimenterIdMeterBand.class);
assertEquals((long) 23, (long) expBand.getExperimenter().getValue());
}
}
}
private MeterModInputBuilder convert(Meter source, VersionConvertorData data) {
Optional<MeterModInputBuilder> outMeterModInputOptional = convertorManager.convert(source, data);
return outMeterModInputOptional.orElse(MeterConvertor.defaultResult(data.getVersion()));
}
}