2 * Copyright © 2016-2018 European Support Limited
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.openecomp.sdc.validation.impl.validators.namingconvention;
19 import java.io.IOException;
21 import org.junit.Assert;
22 import org.junit.Test;
23 import org.openecomp.core.validation.types.MessageContainer;
24 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
25 import org.openecomp.sdc.validation.impl.validators.NamingConventionGuideLineValidator;
26 import org.openecomp.sdc.validation.util.ValidationTestUtil;
29 * Created by TALIO on 2/28/2017.
31 public class NovaServerNamingConventionGuideLineValidatorTest {
33 NamingConventionGuideLineValidator baseValidator = new NamingConventionGuideLineValidator();
34 NovaServerNamingConventionGuideLineValidator resourceValidator = new
35 NovaServerNamingConventionGuideLineValidator();
36 private static final String PATH = "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/";
38 public void testHeatNovaServerMetaDataValidation() {
39 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
40 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
41 PATH + "heatNovaServerMetaDataValidation/positive/");
42 Assert.assertNotNull(messages);
43 Assert.assertEquals(messages.size(), 0);
45 messages = new ValidationTestUtil().testValidator(baseValidator,
46 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
47 PATH + "heatNovaServerMetaDataValidation/negative/");
48 Assert.assertNotNull(messages);
49 Assert.assertEquals(messages.size(), 1);
50 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
51 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
52 "WARNING: [NNS1]: Missing Nova Server Metadata property, Resource ID [FSB2]");
56 public void testNovaServerAvailabilityZoneName() {
57 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
58 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
59 PATH + "heatNovaServerAvailabilityZoneName/positive");
60 Assert.assertNotNull(messages);
61 Assert.assertEquals(messages.size(), 0);
63 messages = new ValidationTestUtil().testValidator(baseValidator,
64 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
65 PATH + "heatNovaServerAvailabilityZoneName/negative");
66 Assert.assertNotNull(messages);
67 Assert.assertEquals(messages.size(), 1);
68 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 3);
69 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
70 "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone_a], Resource ID [FSB2]. As a result, VF/VFC Profile may miss this information");
71 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
72 "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone], Resource ID [FSB3]. As a result, VF/VFC Profile may miss this information");
76 public void testNovaImageAndFlavorNamesEmptyProperties() {
77 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
78 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
79 PATH + "heatNovaServerImageAndFlavor/negativeEmptyProperties");
80 Assert.assertNotNull(messages);
81 Assert.assertEquals(1, messages.size());
82 Assert.assertEquals(1, messages.get("first.yaml").getErrorMessageList().size());
83 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
84 "WARNING: [NNS13]: Server 'image' Parameter Name not aligned with Guidelines, Parameter Name [fsb2-image], Resource ID [FSB3]. As a result, VF/VFC Profile may miss this information");
88 public void testNovaImageAndFlavorNames() {
89 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
90 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
91 PATH + "heatNovaServerImageAndFlavor/positive");
92 Assert.assertNotNull(messages);
93 Assert.assertEquals(messages.size(), 0);
95 messages = new ValidationTestUtil().testValidator(baseValidator,
96 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
97 PATH + "heatNovaServerImageAndFlavor/negative");
98 Assert.assertNotNull(messages);
99 Assert.assertEquals(messages.size(), 1);
100 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
101 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
102 "WARNING: [NNS13]: Server 'flavor' Parameter Name not aligned with Guidelines, Parameter Name [fsb2-flavor], Resource ID [FSB2]. As a result, VF/VFC Profile may miss this information");
103 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
104 "WARNING: [NNS13]: Server 'image' Parameter Name not aligned with Guidelines, Parameter Name [fsb2-image], Resource ID [FSB3]. As a result, VF/VFC Profile may miss this information");
108 public void testNovaResourceNetworkUniqueRole() {
109 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
110 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
111 PATH + "heatNovaNetworkUniqueRoleConvention/positive/");
112 Assert.assertNotNull(messages);
113 Assert.assertEquals(messages.size(), 0);
114 messages = new ValidationTestUtil().testValidator(baseValidator,
115 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
116 PATH + "heatNovaNetworkUniqueRoleConvention/negative/");
117 Assert.assertNotNull(messages);
118 Assert.assertEquals(messages.size(), 1);
119 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
120 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
121 "WARNING: [NNS12]: A resource is connected twice to the same network role, Network Role [Internal1], Resource ID [FSB2]");
125 public void testNovaServerName() {
126 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
127 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
128 PATH + "heatNovaServerNameValidation/positive");
129 Assert.assertNotNull(messages);
130 Assert.assertEquals(messages.size(), 0);
132 messages = new ValidationTestUtil().testValidator(baseValidator,
133 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
134 PATH + "heatNovaServerNameValidation/negative/");
135 Assert.assertNotNull(messages);
136 Assert.assertEquals(messages.size(), 1);
137 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
138 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
139 "WARNING: [NNS10]: Server 'name' Parameter Name not aligned with Guidelines, Parameter Name [pcrf_pps_server_4], Resource ID [FSB2]. As a result, VF/VFC Profile may miss this information");
143 public void testVMNameSyncInNova() {
144 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
145 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
148 Assert.assertNotNull(messages);
149 Assert.assertEquals(messages.size(), 1);
151 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
152 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
153 "WARNING: [NNS10]: Server 'name' Parameter Name not aligned with Guidelines, Parameter Name [CE_server_name], Resource ID [FSB2_legal_2]. As a result, VF/VFC Profile may miss this information");
154 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
155 "WARNING: [NNS13]: Server 'flavor' Parameter Name not aligned with Guidelines, Parameter Name [fsb_flavor_names], Resource ID [FSB2_legal_3]. As a result, VF/VFC Profile may miss this information");
156 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
157 "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_1]");
158 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
159 "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_2]");
163 public void testAvailabilityZoneName() throws IOException {
164 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
165 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
166 PATH + "availability_zone_name/input");
168 Assert.assertNotNull(messages);
169 Assert.assertEquals(messages.size(), 1);
171 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
173 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
174 "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone_name], Resource ID [availability_zone_illegal_name_1]. As a result, VF/VFC Profile may miss this information");
176 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
177 "WARNING: [NNS5]: Server 'Availability Zone' Parameter Name not aligned with Guidelines, Parameter Name [availability_zone], Resource ID [availability_zone_illegal_name_2]. As a result, VF/VFC Profile may miss this information");
181 public void testHeatNovaServerVnfIDValidation() {
182 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
183 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
184 "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemissingvnfid/");
185 Assert.assertNotNull(messages);
186 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
187 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
188 "WARNING: [NNS3]: Missing VNF_ID in Metadata property, Resource ID [FSB2]");
192 public void testHeatNovaServerVfModuleValidation() {
193 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
194 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
195 "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemisningvfmodule/");
196 Assert.assertNotNull(messages);
197 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
198 "WARNING: [NNS2]: Missing VF_MODULE_ID in Metadata property, Resource id [FSB2]");
202 public void testMissingParam() {
203 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
204 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
205 PATH + "heatNovaNetworkUniqueRoleConvention/missingportNetwork/");
206 Assert.assertNotNull(messages);
207 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
208 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
209 "WARNING: [NNS4]: Missing get_param in network or network_id, Resource Id [FSB2]");
210 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
211 "WARNING: [NNS6]: Missing get_param in availability_zone, Resource Id [FSB2]");
212 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
213 "WARNING: [NNS7]: Missing get_param in nova server name, Resource Id [FSB2]");
214 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
215 "WARNING: [NNS8]: Missing get_param in flavor, Resource Id [FSB2]");
219 public void testNovaResource() {
220 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
221 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
222 PATH + "heatNovaNetworkUniqueRoleConvention/invalidresource/");
223 Assert.assertNotNull(messages);
224 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
225 "ERROR: [NNS14]: invalid get_resource syntax is in use - 1234 , get_resource function should get the resource id of the referenced resource");
229 public void testEnvFileContent() {
230 Map<String, MessageContainer> messages = new ValidationTestUtil().testValidator(baseValidator,
231 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
232 PATH + "heatNovaNetworkUniqueRoleConvention/input/");
233 Assert.assertNotNull(messages);
234 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
235 "WARNING: [NNS9]: Server 'Name' Parameter Name not aligned with Guidelines, Parameter Name [{key=value}], Resource ID [server_1]. As a result, VF/VFC Profile may miss this information");