Committed by
Gerrit Code Review
[ONOS-5418] JUNIT Test cases for volt-ondemandfwdl as FUJITSU NETCONF
Change-Id: I515d48a664ad2edc18be801977e4bff7713f1052
Showing
3 changed files
with
255 additions
and
39 deletions
... | @@ -43,9 +43,8 @@ public class FujitsuVoltFwdlConfig extends AbstractHandlerBehaviour | ... | @@ -43,9 +43,8 @@ public class FujitsuVoltFwdlConfig extends AbstractHandlerBehaviour |
43 | private static final String MEMBER = "member"; | 43 | private static final String MEMBER = "member"; |
44 | private static final String IMAGE_NAME = "image-name"; | 44 | private static final String IMAGE_NAME = "image-name"; |
45 | private static final String REBOOT_MODE = "reboot-mode"; | 45 | private static final String REBOOT_MODE = "reboot-mode"; |
46 | - private int pon; | 46 | + private static final String AUTO = "auto"; |
47 | - private int onu; | 47 | + private static final String COMMA = ","; |
48 | - | ||
49 | 48 | ||
50 | @Override | 49 | @Override |
51 | public String upgradeFirmwareOndemand(String target) { | 50 | public String upgradeFirmwareOndemand(String target) { |
... | @@ -61,67 +60,84 @@ public class FujitsuVoltFwdlConfig extends AbstractHandlerBehaviour | ... | @@ -61,67 +60,84 @@ public class FujitsuVoltFwdlConfig extends AbstractHandlerBehaviour |
61 | log.warn("Not master for {} Use {} to execute command", | 60 | log.warn("Not master for {} Use {} to execute command", |
62 | ncDeviceId, | 61 | ncDeviceId, |
63 | mastershipService.getMasterFor(ncDeviceId)); | 62 | mastershipService.getMasterFor(ncDeviceId)); |
64 | - return reply; | 63 | + return null; |
65 | } | 64 | } |
66 | 65 | ||
67 | - String[] data = target.split(":"); | 66 | + String[] data = target.split(COLON); |
68 | - if ((data.length < 2) || (data.length > 3)) { | 67 | + if ((data.length < TWO) || (data.length > THREE)) { |
69 | log.error("Invalid number of arguments"); | 68 | log.error("Invalid number of arguments"); |
70 | - return reply; | 69 | + return null; |
71 | } | 70 | } |
72 | 71 | ||
73 | - String[] onuList = data[1].split(","); | 72 | + String[] onuList = data[SECOND_PART].split(COMMA); |
74 | - if (onuList.length == 0) { | 73 | + if (onuList.length == ZERO) { |
75 | log.error("No ONU listed"); | 74 | log.error("No ONU listed"); |
76 | - return reply; | 75 | + return null; |
76 | + } | ||
77 | + | ||
78 | + if ((data.length > TWO) && (!AUTO.equals(data[THIRD_PART]))) { | ||
79 | + log.error("Invalid reboot-mode {}", data[THIRD_PART]); | ||
80 | + return null; | ||
77 | } | 81 | } |
78 | 82 | ||
79 | try { | 83 | try { |
80 | StringBuilder request = new StringBuilder(); | 84 | StringBuilder request = new StringBuilder(); |
81 | - request.append(ANGLE_LEFT).append(ONDEMAND_FIRMWARE_UPGRADE).append(SPACE); | 85 | + request.append(ANGLE_LEFT + ONDEMAND_FIRMWARE_UPGRADE + SPACE); |
82 | - request.append(VOLT_NE_NAMESPACE).append(ANGLE_RIGHT).append(NEW_LINE); | 86 | + request.append(VOLT_NE_NAMESPACE + ANGLE_RIGHT + NEW_LINE); |
83 | request.append(buildStartTag(PARTICIPANT_LIST)); | 87 | request.append(buildStartTag(PARTICIPANT_LIST)); |
84 | 88 | ||
85 | - for (count = 0; count < onuList.length; count++) { | 89 | + for (count = ZERO; count < onuList.length; count++) { |
86 | - String[] onuId = onuList[count].split("-"); | 90 | + String[] onuId = onuList[count].split(HYPHEN); |
87 | - if (onuId.length != 2) { | 91 | + if (onuId.length != TWO) { |
88 | log.error("Invalid ONU identifier"); | 92 | log.error("Invalid ONU identifier"); |
89 | - return reply; | 93 | + return null; |
90 | } | 94 | } |
91 | 95 | ||
92 | try { | 96 | try { |
93 | - pon = Integer.parseInt(onuId[0]); | 97 | + int pon; |
94 | - onu = Integer.parseInt(onuId[1]); | 98 | + pon = Integer.parseInt(onuId[FIRST_PART]); |
99 | + if (pon <= ZERO) { | ||
100 | + log.error("Invalid integer for ponlink-id:{}", onuId[FIRST_PART]); | ||
101 | + return null; | ||
102 | + } | ||
103 | + int onu; | ||
104 | + onu = Integer.parseInt(onuId[SECOND_PART]); | ||
105 | + if (onu <= ZERO) { | ||
106 | + log.error("Invalid integer for onu-id:{}", onuId[SECOND_PART]); | ||
107 | + return null; | ||
108 | + } | ||
95 | } catch (NumberFormatException e) { | 109 | } catch (NumberFormatException e) { |
96 | log.error("Non-number input"); | 110 | log.error("Non-number input"); |
97 | - return reply; | 111 | + return null; |
98 | } | 112 | } |
99 | 113 | ||
100 | - request.append(buildStartTag(MEMBER)); | 114 | + request.append(buildStartTag(MEMBER)) |
101 | - request.append(buildStartTag(PONLINK_ID)); | 115 | + .append(buildStartTag(PONLINK_ID)) |
102 | - request.append(onuId[0]); | 116 | + .append(onuId[FIRST_PART]) |
103 | - request.append(buildEndTag(PONLINK_ID)); | 117 | + .append(buildEndTag(PONLINK_ID)) |
104 | - request.append(buildStartTag(ONU_ID)); | 118 | + .append(buildStartTag(ONU_ID)) |
105 | - request.append(onuId[1]); | 119 | + .append(onuId[SECOND_PART]) |
106 | - request.append(buildEndTag(ONU_ID)); | 120 | + .append(buildEndTag(ONU_ID)) |
107 | - request.append(buildEndTag(MEMBER)); | 121 | + .append(buildEndTag(MEMBER)); |
108 | } | 122 | } |
109 | - request.append(buildEndTag(PARTICIPANT_LIST)); | 123 | + request.append(buildEndTag(PARTICIPANT_LIST)) |
110 | - request.append(buildStartTag(IMAGE_NAME)); | 124 | + .append(buildStartTag(IMAGE_NAME)) |
111 | - request.append(data[0]); | 125 | + .append(data[FIRST_PART]) |
112 | - request.append(buildEndTag(IMAGE_NAME)); | 126 | + .append(buildEndTag(IMAGE_NAME)); |
113 | - if (data.length == 3) { | 127 | + if (data.length == THREE) { |
114 | - request.append(buildStartTag(REBOOT_MODE)); | 128 | + request.append(buildStartTag(REBOOT_MODE)) |
115 | - request.append(data[2]); | 129 | + .append(data[THIRD_PART]) |
116 | - request.append(buildEndTag(REBOOT_MODE)); | 130 | + .append(buildEndTag(REBOOT_MODE)); |
117 | } | 131 | } |
118 | request.append(buildEndTag(ONDEMAND_FIRMWARE_UPGRADE)); | 132 | request.append(buildEndTag(ONDEMAND_FIRMWARE_UPGRADE)); |
119 | 133 | ||
120 | - reply = controller. | 134 | + reply = controller |
121 | - getDevicesMap().get(ncDeviceId).getSession(). | 135 | + .getDevicesMap() |
122 | - doWrappedRpc(request.toString()); | 136 | + .get(ncDeviceId) |
137 | + .getSession() | ||
138 | + .doWrappedRpc(request.toString()); | ||
123 | } catch (IOException e) { | 139 | } catch (IOException e) { |
124 | - log.error("Cannot communicate to device {} exception ", ncDeviceId, e); | 140 | + log.error("Cannot communicate to device {} exception {}", ncDeviceId, e); |
125 | } | 141 | } |
126 | return reply; | 142 | return reply; |
127 | } | 143 | } | ... | ... |
drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuVoltFwdlConfigTest.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.drivers.fujitsu; | ||
18 | + | ||
19 | +import org.junit.Before; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import static org.junit.Assert.assertTrue; | ||
23 | +import static org.junit.Assert.assertNull; | ||
24 | +import static org.junit.Assert.assertNotNull; | ||
25 | +import static org.onosproject.drivers.fujitsu.FujitsuVoltXmlUtilityMock.*; | ||
26 | + | ||
27 | + | ||
28 | +/** | ||
29 | + * Unit tests for methods of FujitsuVoltFwdlConfig. | ||
30 | + */ | ||
31 | +public class FujitsuVoltFwdlConfigTest { | ||
32 | + | ||
33 | + private final FujitsuNetconfSessionListenerTest listener = new InternalSessionListener(); | ||
34 | + | ||
35 | + private static final String TEST_ONDEMAND_FIRMWARE_UPGRADE = "ondemand-firmware-upgrade"; | ||
36 | + private static final String TEST_PARTICIPANT_LIST = "participant-list"; | ||
37 | + private static final String TEST_MEMBER = "member"; | ||
38 | + private static final String TEST_IMAGE_NAME = "image-name"; | ||
39 | + private static final String TEST_REBOOT_MODE = "reboot-mode"; | ||
40 | + private static final String TEST_COMMA = ","; | ||
41 | + | ||
42 | + private static final String TEST_ONDEMAND_FWDL_WITH_NAMESPACE = | ||
43 | + TEST_ANGLE_LEFT + TEST_ONDEMAND_FIRMWARE_UPGRADE + | ||
44 | + TEST_SPACE + TEST_VOLT_NE_NAMESPACE; | ||
45 | + | ||
46 | + private static final String[] INVALID_ONDEMAND_FWDL_TCS = { | ||
47 | + "xy1-b:a1-1", | ||
48 | + "AAA:1-2,--1", | ||
49 | + "CcC:s-1,2-2,3-2:auto", | ||
50 | + "xYZam:1-1,2-2,3-3:false", | ||
51 | + "JKml901:16-1-1,2-16:a-2", | ||
52 | + "abc:&AA-1,11-2:auto", | ||
53 | + "abc:xyz:-1-1", | ||
54 | + "@bcf11:xyz:auto", | ||
55 | + "FJ123:1-1&5-2:auto", | ||
56 | + }; | ||
57 | + private static final String[] VALID_ONDEMAND_FWDL_TCS = { | ||
58 | + "Fujitsu123:1-2", | ||
59 | + "abcDE90f:16-11,1-1,17-3:auto", | ||
60 | + "fujitsuONU12:1-1,2-2,3-3,4-4,5-5,6-6,7-7", | ||
61 | + }; | ||
62 | + private Integer currentKey; | ||
63 | + private FujitsuNetconfControllerMock controller; | ||
64 | + private FujitsuDriverHandlerAdapter driverHandler; | ||
65 | + private FujitsuVoltFwdlConfig voltConfig; | ||
66 | + | ||
67 | + @Before | ||
68 | + public void setUp() throws Exception { | ||
69 | + controller = new FujitsuNetconfControllerMock(); | ||
70 | + driverHandler = controller.setUp(listener); | ||
71 | + voltConfig = new FujitsuVoltFwdlConfig(); | ||
72 | + voltConfig.setHandler(driverHandler); | ||
73 | + } | ||
74 | + | ||
75 | + /** | ||
76 | + * Run to verify handling of invalid input for rpc operation. | ||
77 | + */ | ||
78 | + @Test | ||
79 | + public void testInvalidOndemandFirmwareUpgradeInput() throws Exception { | ||
80 | + String reply; | ||
81 | + String target; | ||
82 | + | ||
83 | + for (int i = ZERO; i < INVALID_ONDEMAND_FWDL_TCS.length; i++) { | ||
84 | + target = INVALID_ONDEMAND_FWDL_TCS[i]; | ||
85 | + reply = voltConfig.upgradeFirmwareOndemand(target); | ||
86 | + assertNull("Incorrect response for INVALID_ONDEMAND_FWDL_TCS", reply); | ||
87 | + } | ||
88 | + } | ||
89 | + | ||
90 | + /** | ||
91 | + * Run to verify handling of valid input for rpc operation. | ||
92 | + */ | ||
93 | + @Test | ||
94 | + public void testValidOndemandFirmwareUpgrade() throws Exception { | ||
95 | + String reply; | ||
96 | + String target; | ||
97 | + | ||
98 | + for (int i = ZERO; i < VALID_ONDEMAND_FWDL_TCS.length; i++) { | ||
99 | + target = VALID_ONDEMAND_FWDL_TCS[i]; | ||
100 | + currentKey = i; | ||
101 | + reply = voltConfig.upgradeFirmwareOndemand(target); | ||
102 | + assertNotNull("Incorrect response for VALID_ONDEMAND_FWDL_TCS", reply); | ||
103 | + } | ||
104 | + } | ||
105 | + | ||
106 | + /** | ||
107 | + * Verifies XML request string by comparing with generated string. | ||
108 | + * | ||
109 | + * @param request XML string for rpc operation | ||
110 | + * @return true or false | ||
111 | + */ | ||
112 | + private boolean verifyWrappedRpcRequest(String request) { | ||
113 | + StringBuilder rpc = new StringBuilder(); | ||
114 | + String target = VALID_ONDEMAND_FWDL_TCS[currentKey]; | ||
115 | + String[] data = target.split(TEST_COLON); | ||
116 | + String[] onuList = data[SECOND_PART].split(TEST_COMMA); | ||
117 | + int count; | ||
118 | + | ||
119 | + rpc.append(TEST_ANGLE_LEFT + TEST_ONDEMAND_FIRMWARE_UPGRADE + TEST_SPACE); | ||
120 | + rpc.append(TEST_VOLT_NE_NAMESPACE + TEST_ANGLE_RIGHT + TEST_NEW_LINE); | ||
121 | + | ||
122 | + rpc.append(startTag(TEST_PARTICIPANT_LIST)); | ||
123 | + for (count = ZERO; count < onuList.length; count++) { | ||
124 | + String[] onuId = onuList[count].split(TEST_HYPHEN); | ||
125 | + rpc.append(startTag(TEST_MEMBER)) | ||
126 | + .append(startTag(TEST_PONLINK_ID)) | ||
127 | + .append(onuId[FIRST_PART]) | ||
128 | + .append(endTag(TEST_PONLINK_ID)) | ||
129 | + .append(startTag(TEST_ONU_ID)) | ||
130 | + .append(onuId[SECOND_PART]) | ||
131 | + .append(endTag(TEST_ONU_ID)) | ||
132 | + .append(endTag(TEST_MEMBER)); | ||
133 | + } | ||
134 | + rpc.append(endTag(TEST_PARTICIPANT_LIST)) | ||
135 | + .append(startTag(TEST_IMAGE_NAME)) | ||
136 | + .append(data[FIRST_PART]) | ||
137 | + .append(endTag(TEST_IMAGE_NAME)); | ||
138 | + if (data.length == THREE) { | ||
139 | + rpc.append(startTag(TEST_REBOOT_MODE)) | ||
140 | + .append(data[THIRD_PART]) | ||
141 | + .append(endTag(TEST_REBOOT_MODE)); | ||
142 | + } | ||
143 | + rpc.append(endTag(TEST_ONDEMAND_FIRMWARE_UPGRADE)); | ||
144 | + | ||
145 | + String testRequest = rpc.toString(); | ||
146 | + String regex = TEST_WHITESPACES_REGEX; | ||
147 | + int index = rpc.indexOf(regex); | ||
148 | + while (index >= ZERO) { | ||
149 | + testRequest = rpc.replace(index, index + regex.length(), TEST_EMPTY_STRING).toString(); | ||
150 | + request = request.replaceAll(regex, TEST_EMPTY_STRING); | ||
151 | + } | ||
152 | + boolean result = request.equals(testRequest); | ||
153 | + assertTrue("Does not match with generated string", result); | ||
154 | + return result; | ||
155 | + } | ||
156 | + | ||
157 | + /** | ||
158 | + * Internal listener for device service events. | ||
159 | + */ | ||
160 | + private class InternalSessionListener implements FujitsuNetconfSessionListenerTest { | ||
161 | + @Override | ||
162 | + public boolean verifyEditConfig(String request) { | ||
163 | + return false; | ||
164 | + } | ||
165 | + | ||
166 | + @Override | ||
167 | + public boolean verifyEditConfig(String target, String mode, String request) { | ||
168 | + return false; | ||
169 | + } | ||
170 | + | ||
171 | + @Override | ||
172 | + public boolean verifyGet(String filterSchema, String withDefaultsMode) { | ||
173 | + return false; | ||
174 | + } | ||
175 | + | ||
176 | + @Override | ||
177 | + public String buildGetReply() { | ||
178 | + return null; | ||
179 | + } | ||
180 | + | ||
181 | + @Override | ||
182 | + public boolean verifyWrappedRpc(String request) { | ||
183 | + boolean result; | ||
184 | + | ||
185 | + request = request.replaceAll(TEST_DUPLICATE_SPACES_REGEX, TEST_SPACE); | ||
186 | + assertTrue("Does not contain:" + TEST_ONDEMAND_FWDL_WITH_NAMESPACE, | ||
187 | + request.contains(TEST_ONDEMAND_FWDL_WITH_NAMESPACE)); | ||
188 | + | ||
189 | + result = verifyWrappedRpcRequest(request); | ||
190 | + assertTrue("XML verification failure", result); | ||
191 | + return result; | ||
192 | + } | ||
193 | + | ||
194 | + @Override | ||
195 | + public void verifyStartSubscription(String filterSchema) { | ||
196 | + } | ||
197 | + } | ||
198 | + | ||
199 | +} |
... | @@ -60,6 +60,7 @@ final class FujitsuVoltXmlUtilityMock { | ... | @@ -60,6 +60,7 @@ final class FujitsuVoltXmlUtilityMock { |
60 | public static final int THIRD_PART = 2; | 60 | public static final int THIRD_PART = 2; |
61 | public static final int ZERO = 0; | 61 | public static final int ZERO = 0; |
62 | public static final int ONE = 1; | 62 | public static final int ONE = 1; |
63 | + public static final int THREE = 3; | ||
63 | 64 | ||
64 | private FujitsuVoltXmlUtilityMock() { | 65 | private FujitsuVoltXmlUtilityMock() { |
65 | } | 66 | } | ... | ... |
-
Please register or login to post a comment