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 = 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 = 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 = 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 = 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 testNovaImageAndFlavorNames() {
77 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
78 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
79 PATH + "heatNovaServerImageAndFlavor/positive");
80 Assert.assertNotNull(messages);
81 Assert.assertEquals(messages.size(), 0);
83 messages = ValidationTestUtil.testValidator(baseValidator,
84 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
85 PATH + "heatNovaServerImageAndFlavor/negative");
86 Assert.assertNotNull(messages);
87 Assert.assertEquals(messages.size(), 1);
88 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
89 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
90 "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");
91 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
92 "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");
96 public void testNovaResourceNetworkUniqueRole() {
97 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
98 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
99 PATH + "heatNovaNetworkUniqueRoleConvention/positive/");
100 Assert.assertNotNull(messages);
101 Assert.assertEquals(messages.size(), 0);
102 messages = ValidationTestUtil.testValidator(baseValidator,
103 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
104 PATH + "heatNovaNetworkUniqueRoleConvention/negative/");
105 Assert.assertNotNull(messages);
106 Assert.assertEquals(messages.size(), 1);
107 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
108 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
109 "WARNING: [NNS12]: A resource is connected twice to the same network role, Network Role [FSB2], Resource ID [Internal1]");
113 public void testNovaServerName() {
114 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
115 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
116 PATH + "heatNovaServerNameValidation/positive");
117 Assert.assertNotNull(messages);
118 Assert.assertEquals(messages.size(), 0);
120 messages = ValidationTestUtil.testValidator(baseValidator,
121 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
122 PATH + "heatNovaServerNameValidation/negative/");
123 Assert.assertNotNull(messages);
124 Assert.assertEquals(messages.size(), 1);
125 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
126 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
127 "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");
131 public void testVMNameSyncInNova() {
132 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
133 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
136 Assert.assertNotNull(messages);
137 Assert.assertEquals(messages.size(), 1);
139 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
140 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
141 "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");
142 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
143 "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");
144 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
145 "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_1]");
146 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
147 "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_2]");
151 public void testAvailabilityZoneName() throws IOException {
152 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
153 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
154 PATH + "availability_zone_name/input");
156 Assert.assertNotNull(messages);
157 Assert.assertEquals(messages.size(), 1);
159 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
161 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
162 "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");
164 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
165 "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");
169 public void testHeatNovaServerVnfIDValidation() {
170 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
171 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
172 "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemissingvnfid/");
173 Assert.assertNotNull(messages);
174 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
175 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
176 "WARNING: [NNS3]: Missing VNF_ID in Metadata property, Resource ID [FSB2]");
180 public void testHeatNovaServerVfModuleValidation() {
181 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
182 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
183 "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemisningvfmodule/");
184 Assert.assertNotNull(messages);
185 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
186 "WARNING: [NNS2]: Missing VF_MODULE_ID in Metadata property, Resource id [FSB2]");
190 public void testMissingParam() {
191 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
192 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
193 PATH + "heatNovaNetworkUniqueRoleConvention/missingportNetwork/");
194 Assert.assertNotNull(messages);
195 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
196 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
197 "WARNING: [NNS4]: Missing get_param in network or network_id, Resource Id [FSB2]");
198 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
199 "WARNING: [NNS6]: Missing get_param in availability_zone, Resource Id [FSB2]");
200 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
201 "WARNING: [NNS7]: Missing get_param in nova server name, Resource Id [FSB2]");
202 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
203 "WARNING: [NNS8]: Missing get_param in flavor, Resource Id [FSB2]");
207 public void testNovaResource() {
208 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
209 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
210 PATH + "heatNovaNetworkUniqueRoleConvention/invalidresource/");
211 Assert.assertNotNull(messages);
212 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
213 "ERROR: [NNS14]: invalid get_resource syntax is in use - 1234 , get_resource function should get the resource id of the referenced resource");
217 public void testEnvFileContent() {
218 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
219 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
220 PATH + "heatNovaNetworkUniqueRoleConvention/input/");
221 Assert.assertNotNull(messages);
222 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
223 "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");