diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2018-03-12 08:50:58 +0100 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2018-03-12 09:17:33 +0100 |
commit | 30dd5a48584aed8b4edc528218d13b75edfc2b54 (patch) | |
tree | fac8bc0a1e3eb8c65a36c79d84dd4f8edce8c42f /vpp-common | |
parent | 283915ef6f657a8b1fe7a72a6d39465f823033a0 (diff) |
Adapt mpls plugin to recent VPP API changes
MPLS API changes were introduced by:
https://gerrit.fd.io/r/#/c/10781/
Change-Id: I0423a4cfdf3f0654324118a1d34864a079bff5d1
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'vpp-common')
2 files changed, 96 insertions, 0 deletions
diff --git a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslator.java b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslator.java new file mode 100644 index 000000000..00653738d --- /dev/null +++ b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslator.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018 Cisco and/or its affiliates. + * + * 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 io.fd.hc2vpp.common.translate.util; + +import static com.google.common.base.Preconditions.checkNotNull; + +import io.fd.vpp.jvpp.core.types.FibMplsLabel; +import javax.annotation.Nonnull; + +/** + * Utility for Translating between different representations of MPLS label. + */ +public interface MplsLabelTranslator { + /** + * Make available also from static context. + */ + MplsLabelTranslator INSTANCE = new MplsLabelTranslator() { + }; + + /** + * Builds {@link FibMplsLabel} from its YANG representation. + * + * @param label YANG representation of MPLS Label + * @return VPP representation of MPLS label + */ + default FibMplsLabel translate(@Nonnull final Long label) { + checkNotNull(label, "MPLS label should not be null"); + return translate(label.intValue()); + } + + /** + * Builds {@link FibMplsLabel} from int value. + * + * @param label MPLS Label value + * @return VPP representation of MPLS label + */ + default FibMplsLabel translate(final int label) { + final FibMplsLabel fibMplsLabel = new FibMplsLabel(); + fibMplsLabel.label = label; + return fibMplsLabel; + } +} diff --git a/vpp-common/vpp-translate-utils/src/test/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslatorTest.java b/vpp-common/vpp-translate-utils/src/test/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslatorTest.java new file mode 100644 index 000000000..b0e7dd658 --- /dev/null +++ b/vpp-common/vpp-translate-utils/src/test/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslatorTest.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2018 Cisco and/or its affiliates. + * + * 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 io.fd.hc2vpp.common.translate.util; + +import static org.junit.Assert.assertEquals; + +import io.fd.vpp.jvpp.core.types.FibMplsLabel; +import org.junit.Test; + +public class MplsLabelTranslatorTest implements MplsLabelTranslator { + @Test + public void testTranslateLong() { + final int expectedLabel = 1048575; + final FibMplsLabel expected = new FibMplsLabel(); + expected.label = expectedLabel; + assertEquals(expected, translate(Long.valueOf(1048575))); + } + @Test + public void testTranslateInt() { + final int expectedLabel = 11; + final FibMplsLabel expected = new FibMplsLabel(); + expected.label = expectedLabel; + assertEquals(expected, translate(expectedLabel)); + } + +} |