fea0b7f5e2714ef500f54295d68322f3323c5a0f
[sdc.git] /
1 package org.openecomp.sdc.validation.impl.validators.namingconvention;
2
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;
9
10 import java.io.IOException;
11 import java.util.Map;
12
13 /**
14  * Created by TALIO on 2/28/2017.
15  */
16 public class NovaServerNamingConventionGuideLineValidatorTest {
17
18   NamingConventionGuideLineValidator baseValidator = new NamingConventionGuideLineValidator();
19   NovaServerNamingConventionGuideLineValidator resourceValidator = new
20       NovaServerNamingConventionGuideLineValidator();
21   private static final String PATH = "/org/openecomp/validation/validators/guideLineValidator/novaserverValidation/";
22   @Test
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);
29
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]");
38   }
39
40   @Test
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);
47
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");
58   }
59
60   @Test
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);
67
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");
78   }
79
80   @Test
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]");
95   }
96
97   @Test
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);
104
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");
113   }
114
115   @Test
116   public void testVMNameSyncInNova() {
117     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
118             resourceValidator, HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource(),
119             PATH + "input");
120
121     Assert.assertNotNull(messages);
122     Assert.assertEquals(messages.size(), 1);
123
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]");
133   }
134
135   @Test
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");
140
141     Assert.assertNotNull(messages);
142     Assert.assertEquals(messages.size(), 1);
143
144     Assert.assertEquals(messages.get("hot-nimbus-pps_v1.0.yaml").getErrorMessageList().size(), 2);
145     Assert.assertEquals(
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");
148     Assert.assertEquals(
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");
151   }
152
153   @Test
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]");
162   }
163
164   @Test
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]");
172   }
173
174   @Test
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]");
189   }
190
191   @Test
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");
199   }
200
201   @Test
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");
209   }
210 }