f5fdcbb1f449a2915f3e0e2c0591b6994acc4235
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.model.enginemodel.concepts;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertTrue;
28 import static org.junit.Assert.fail;
29
30 import org.junit.Test;
31 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
32 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
33 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
34 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult;
35
36 /**
37  * @author Liam Fallon (liam.fallon@ericsson.com)
38  */
39 public class TestEngineStats {
40
41     @Test
42     public void testEngineStats() {
43         assertNotNull(new AxEngineStats());
44         assertNotNull(new AxEngineStats(new AxReferenceKey()));
45
46         final AxReferenceKey statsKey = new AxReferenceKey("EngineKey", "0.0.1", "EngineStats");
47         final AxEngineStats stats = new AxEngineStats(statsKey);
48
49         try {
50             stats.setKey(null);
51             fail("test should throw an exception here");
52         } catch (final Exception e) {
53             assertEquals("key may not be null", e.getMessage());
54         }
55
56         stats.setKey(statsKey);
57         assertEquals("EngineKey:0.0.1:NULL:EngineStats", stats.getKey().getID());
58         assertEquals("EngineKey:0.0.1:NULL:EngineStats", stats.getKeys().get(0).getID());
59
60         stats.setAverageExecutionTime(123.45);
61         assertEquals(new Double(123.45), new Double(stats.getAverageExecutionTime()));
62
63         stats.setEventCount(987);
64         assertEquals(987, stats.getEventCount());
65
66         final long lastExecutionTime = System.currentTimeMillis();
67         stats.setLastExecutionTime(lastExecutionTime);
68         assertEquals(lastExecutionTime, stats.getLastExecutionTime());
69
70         final long timestamp = System.currentTimeMillis();
71         stats.setTimeStamp(timestamp);
72         assertEquals(timestamp, stats.getTimeStamp());
73         assertNotNull(stats.getTimeStampString());
74
75         final long upTime = System.currentTimeMillis() - timestamp;
76         stats.setUpTime(upTime);
77         assertEquals(upTime, stats.getUpTime());
78
79         stats.engineStart();
80         assertTrue(stats.getUpTime() > -1);
81         stats.engineStop();
82         assertTrue(stats.getUpTime() >= 0);
83
84         stats.engineStop();
85
86         stats.reset();
87
88         stats.setEventCount(-2);
89         stats.executionEnter(new AxArtifactKey());
90         assertEquals(2, stats.getEventCount());
91
92         stats.setEventCount(10);
93         stats.executionEnter(new AxArtifactKey());
94         assertEquals(11, stats.getEventCount());
95
96         stats.reset();
97         stats.engineStart();
98         stats.setEventCount(4);
99         stats.executionEnter(new AxArtifactKey());
100         try {
101             Thread.sleep(10);
102         } catch (final Exception e) {
103             fail("test should not throw an exeption");
104         }
105         stats.executionExit();
106         final double avExecutionTime = stats.getAverageExecutionTime();
107         System.err.println(avExecutionTime);
108         assertTrue(avExecutionTime >= 2.0 && avExecutionTime < 3.0);
109         stats.engineStop();
110
111         AxValidationResult result = new AxValidationResult();
112         result = stats.validate(result);
113         assertEquals(ValidationResult.VALID, result.getValidationResult());
114
115         stats.setKey(new AxReferenceKey());
116         result = new AxValidationResult();
117         result = stats.validate(result);
118         assertEquals(ValidationResult.INVALID, result.getValidationResult());
119
120         stats.setKey(statsKey);
121         result = new AxValidationResult();
122         result = stats.validate(result);
123         assertEquals(ValidationResult.VALID, result.getValidationResult());
124
125         stats.clean();
126         stats.reset();
127
128         final AxEngineStats clonedStats = new AxEngineStats(stats);
129         assertEquals("AxEngineStats:(engineKey=AxReferenceKey:(parentKey", clonedStats.toString().substring(0, 50));
130
131         assertNotNull(stats.getKeys());
132
133         assertFalse(stats.hashCode() == 0);
134
135         assertTrue(stats.equals(stats));
136         assertTrue(stats.equals(clonedStats));
137         assertFalse(stats.equals(null));
138         assertFalse(stats.equals("Hello"));
139         assertFalse(stats.equals(new AxEngineStats(new AxReferenceKey())));
140
141         assertEquals(0, stats.compareTo(stats));
142         assertEquals(0, stats.compareTo(clonedStats));
143         assertNotEquals(0, stats.compareTo(new AxArtifactKey()));
144         assertNotEquals(0, stats.compareTo(null));
145         assertNotEquals(0, stats.compareTo(new AxEngineStats(new AxReferenceKey())));
146
147         stats.setTimeStamp(1);
148         assertFalse(stats.equals(new AxEngineStats(statsKey)));
149         assertNotEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
150         stats.setTimeStamp(0);
151         assertTrue(stats.equals(new AxEngineStats(statsKey)));
152         assertEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
153
154         stats.setEventCount(1);
155         assertFalse(stats.equals(new AxEngineStats(statsKey)));
156         assertNotEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
157         stats.setEventCount(0);
158         assertTrue(stats.equals(new AxEngineStats(statsKey)));
159         assertEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
160
161         stats.setLastExecutionTime(1);
162         assertFalse(stats.equals(new AxEngineStats(statsKey)));
163         assertNotEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
164         stats.setLastExecutionTime(0);
165         assertTrue(stats.equals(new AxEngineStats(statsKey)));
166         assertEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
167
168         stats.setAverageExecutionTime(1);
169         assertFalse(stats.equals(new AxEngineStats(statsKey)));
170         assertNotEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
171         stats.setAverageExecutionTime(0);
172         assertTrue(stats.equals(new AxEngineStats(statsKey)));
173         assertEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
174
175         stats.setUpTime(1);
176         assertFalse(stats.equals(new AxEngineStats(statsKey)));
177         assertNotEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
178         stats.setUpTime(0);
179         assertTrue(stats.equals(new AxEngineStats(statsKey)));
180         assertEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
181
182         stats.engineStart();
183         assertFalse(stats.equals(new AxEngineStats(statsKey)));
184         final AxEngineStats newStats = new AxEngineStats(statsKey);
185         newStats.setTimeStamp(stats.getTimeStamp());
186         assertFalse(stats.equals(newStats));
187         assertNotEquals(0, stats.compareTo(newStats));
188         stats.engineStop();
189         stats.reset();
190         assertTrue(stats.equals(new AxEngineStats(statsKey)));
191         assertEquals(0, stats.compareTo(new AxEngineStats(statsKey)));
192     }
193 }