1 package org.openecomp.sdc.validation.impl.validators.namingconvention;
3 import org.openecomp.core.validation.types.MessageContainer;
4 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
5 import org.openecomp.sdc.validation.impl.validators.NamingConventionGuideLineValidator;
6 import org.openecomp.sdc.validation.util.ValidationTestUtil;
7 import org.testng.Assert;
8 import org.testng.annotations.Test;
10 import java.io.IOException;
14 * Created by TALIO on 2/28/2017.
16 public class NovaServerNamingConventionGuideLineValidatorTest {
18 NamingConventionGuideLineValidator baseValidator = new NamingConventionGuideLineValidator();
19 NovaServerNamingConventionGuideLineValidator resourceValidator = new
20 NovaServerNamingConventionGuideLineValidator();
21 private static final String PATH = "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/";
23 public void testHeatNovaServerMetaDataValidation() {
24 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
25 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
26 PATH + "heatNovaServerMetaDataValidation/positive/");
27 Assert.assertNotNull(messages);
28 Assert.assertEquals(messages.size(), 0);
30 messages = ValidationTestUtil.testValidator(baseValidator,
31 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
32 PATH + "heatNovaServerMetaDataValidation/negative/");
33 Assert.assertNotNull(messages);
34 Assert.assertEquals(messages.size(), 1);
35 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
36 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
37 "WARNING: [NNS1]: Missing Nova Server Metadata property, Resource ID [FSB2]");
41 public void testNovaServerAvailabilityZoneName() {
42 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
43 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
44 PATH + "heatNovaServerAvailabilityZoneName/positive");
45 Assert.assertNotNull(messages);
46 Assert.assertEquals(messages.size(), 0);
48 messages = ValidationTestUtil.testValidator(baseValidator,
49 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
50 PATH + "heatNovaServerAvailabilityZoneName/negative");
51 Assert.assertNotNull(messages);
52 Assert.assertEquals(messages.size(), 1);
53 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 3);
54 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
55 "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");
56 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
57 "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");
61 public void testNovaImageAndFlavorNames() {
62 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
63 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
64 PATH + "heatNovaServerImageAndFlavor/positive");
65 Assert.assertNotNull(messages);
66 Assert.assertEquals(messages.size(), 0);
68 messages = ValidationTestUtil.testValidator(baseValidator,
69 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
70 PATH + "heatNovaServerImageAndFlavor/negative");
71 Assert.assertNotNull(messages);
72 Assert.assertEquals(messages.size(), 1);
73 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
74 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
75 "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");
76 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
77 "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");
81 public void testNovaResourceNetworkUniqueRole() {
82 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
83 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
84 PATH + "heatNovaNetworkUniqueRoleConvention/positive/");
85 Assert.assertNotNull(messages);
86 Assert.assertEquals(messages.size(), 0);
87 messages = ValidationTestUtil.testValidator(baseValidator,
88 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
89 PATH + "heatNovaNetworkUniqueRoleConvention/negative/");
90 Assert.assertNotNull(messages);
91 Assert.assertEquals(messages.size(), 1);
92 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
93 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
94 "WARNING: [NNS12]: A resource is connected twice to the same network role, Network Role [FSB2], Resource ID [Internal1]");
98 public void testNovaServerName() {
99 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
100 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
101 PATH + "heatNovaServerNameValidation/positive");
102 Assert.assertNotNull(messages);
103 Assert.assertEquals(messages.size(), 0);
105 messages = ValidationTestUtil.testValidator(baseValidator,
106 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
107 PATH + "heatNovaServerNameValidation/negative/");
108 Assert.assertNotNull(messages);
109 Assert.assertEquals(messages.size(), 1);
110 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
111 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
112 "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");
116 public void testVMNameSyncInNova() {
117 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
118 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
121 Assert.assertNotNull(messages);
122 Assert.assertEquals(messages.size(), 1);
124 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
125 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
126 "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");
127 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
128 "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");
129 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
130 "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_1]");
131 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
132 "WARNING: [NNS11]: Nova Server naming convention in image, flavor and name properties is not consistent, Resource ID [FSB2_illegal_2]");
136 public void testAvailabilityZoneName() throws IOException {
137 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
138 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
139 PATH + "availability_zone_name/input");
141 Assert.assertNotNull(messages);
142 Assert.assertEquals(messages.size(), 1);
144 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
146 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(0).getMessage(),
147 "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");
149 messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
150 "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");
154 public void testHeatNovaServerVnfIDValidation() {
155 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
156 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
157 "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemissingvnfid/");
158 Assert.assertNotNull(messages);
159 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
160 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
161 "WARNING: [NNS3]: Missing VNF_ID in Metadata property, Resource ID [FSB2]");
165 public void testHeatNovaServerVfModuleValidation() {
166 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
167 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
168 "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/heatNovaServerMetaDataValidation/negativemisningvfmodule/");
169 Assert.assertNotNull(messages);
170 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
171 "WARNING: [NNS2]: Missing VF_MODULE_ID in Metadata property, Resource id [FSB2]");
175 public void testMissingParam() {
176 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
177 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
178 PATH + "heatNovaNetworkUniqueRoleConvention/missingportNetwork/");
179 Assert.assertNotNull(messages);
180 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 4);
181 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
182 "WARNING: [NNS4]: Missing get_param in network or network_id, Resource Id [FSB2]");
183 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
184 "WARNING: [NNS6]: Missing get_param in availability_zone, Resource Id [FSB2]");
185 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(2).getMessage(),
186 "WARNING: [NNS7]: Missing get_param in nova server name, Resource Id [FSB2]");
187 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(3).getMessage(),
188 "WARNING: [NNS8]: Missing get_param in flavor, Resource Id [FSB2]");
192 public void testNovaResource() {
193 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
194 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
195 PATH + "heatNovaNetworkUniqueRoleConvention/invalidresource/");
196 Assert.assertNotNull(messages);
197 Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
198 "ERROR: [NNS14]: invalid get_resource syntax is in use - 1234 , get_resource function should get the resource id of the referenced resource");
202 public void testEnvFileContent() {
203 Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
204 resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
205 PATH + "heatNovaNetworkUniqueRoleConvention/input/");
206 Assert.assertNotNull(messages);
207 Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().get(1).getMessage(),
208 "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");