Prioritization expiry and clean scheduler service
[ccsdk/cds.git] / ms / blueprintsprocessor / functions / message-prioritizaion / src / test / kotlin / org / onap / ccsdk / cds / blueprintsprocessor / functions / message / prioritization / utils / MessageCorrelationUtilsTest.kt
1 /*
2  * Copyright © 2018-2019 AT&T Intellectual Property.
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.onap.ccsdk.cds.blueprintsprocessor.functions.message.prioritization.utils
18
19 import org.junit.Test
20 import org.onap.ccsdk.cds.blueprintsprocessor.functions.message.prioritization.MessageState
21 import org.onap.ccsdk.cds.blueprintsprocessor.functions.message.prioritization.db.MessagePrioritization
22 import org.onap.ccsdk.cds.blueprintsprocessor.functions.message.prioritization.orderByHighestPriority
23 import kotlin.test.assertNotNull
24 import kotlin.test.assertTrue
25
26 class MessageCorrelationUtilsTest {
27
28     @Test
29     fun testCorrelationKeysReordered() {
30
31         val message1 = MessagePrioritizationSample.createMessage(
32             "sample-group", MessageState.NEW.name,
33             "type-0", "key1=value1,key2=value2"
34         )
35         val message2 = MessagePrioritizationSample.createMessage(
36             "sample-group", MessageState.NEW.name,
37             "type-0", "key2=value2,key1=value1"
38         )
39
40         val multipleMessages: MutableList<MessagePrioritization> = arrayListOf()
41         multipleMessages.add(message1)
42         multipleMessages.add(message2)
43         val multipleMessagesResponse = MessageCorrelationUtils.correlatedMessages(multipleMessages)
44         assertTrue(multipleMessagesResponse.correlated, "failed in multipleMessages correlated keys reordered")
45     }
46
47     @Test
48     fun differentTypesWithSameCorrelationMessages() {
49         /** With Types **/
50         /* Assumption is Same group with different types */
51         val differentTypesWithSameCorrelationMessages = MessagePrioritizationSample
52             .sampleMessageWithDifferentTypeSameCorrelation("sample-group", MessageState.NEW.name, 3)
53         val differentTypesWithSameCorrelationMessagesResponse = MessageCorrelationUtils.correlatedMessagesWithTypes(
54             differentTypesWithSameCorrelationMessages,
55             arrayListOf("type-0", "type-1", "type-2")
56         )
57         assertTrue(
58             differentTypesWithSameCorrelationMessagesResponse.correlated,
59             "failed to correlate differentTypesWithSameCorrelationMessagesResponse"
60         )
61
62         /* Assumption is Same group with different types and one missing expected types,
63         In this case type-3 message is missing */
64         val differentTypesWithSameCorrelationMessagesResWithMissingType =
65             MessageCorrelationUtils.correlatedMessagesWithTypes(
66                 differentTypesWithSameCorrelationMessages,
67                 arrayListOf("type-0", "type-1", "type-2", "type-3")
68             )
69         assertTrue(
70             !differentTypesWithSameCorrelationMessagesResWithMissingType.correlated,
71             "failed to correlate differentTypesWithSameCorrelationMessagesResWithMissingType"
72         )
73     }
74
75     @Test
76     fun withSameCorrelationMessagesWithIgnoredTypes() {
77         /** With ignoring Types */
78         /** Assumption is only one message received */
79         val withSameCorrelationOneMessages = MessagePrioritizationSample
80             .sampleMessageWithSameCorrelation("sample-group", MessageState.NEW.name, 1)
81         val withSameCorrelationOneMessagesResp = MessageCorrelationUtils.correlatedMessagesWithTypes(
82             withSameCorrelationOneMessages, null
83         )
84         assertTrue(
85             !withSameCorrelationOneMessagesResp.correlated,
86             "failed to correlate withSameCorrelationMessagesResp"
87         )
88
89         /** Assumption is two message received for same group with same correlation */
90         val withSameCorrelationMessages = MessagePrioritizationSample
91             .sampleMessageWithSameCorrelation("sample-group", MessageState.NEW.name, 2)
92         val withSameCorrelationMessagesResp = MessageCorrelationUtils.correlatedMessagesWithTypes(
93             withSameCorrelationMessages, null
94         )
95         assertTrue(
96             withSameCorrelationMessagesResp.correlated,
97             "failed to correlate withSameCorrelationMessagesResp"
98         )
99     }
100
101     @Test
102     fun differentTypesWithDifferentCorrelationMessage() {
103         /** Assumption is two message received for same group with different expected types and different correlation */
104         val message1 = MessagePrioritizationSample.createMessage(
105             "sample-group", MessageState.NEW.name,
106             "type-0", "key1=value1,key2=value2"
107         )
108         val message2 = MessagePrioritizationSample.createMessage(
109             "sample-group", MessageState.NEW.name,
110             "type-1", "key1=value1,key2=value3"
111         )
112         val differentTypesWithDifferentCorrelationMessage: MutableList<MessagePrioritization> = arrayListOf()
113         differentTypesWithDifferentCorrelationMessage.add(message1)
114         differentTypesWithDifferentCorrelationMessage.add(message2)
115         val differentTypesWithDifferentCorrelationMessageResp = MessageCorrelationUtils.correlatedMessagesWithTypes(
116             differentTypesWithDifferentCorrelationMessage,
117             arrayListOf("type-0", "type-1")
118         )
119         assertTrue(
120             !differentTypesWithDifferentCorrelationMessageResp.correlated,
121             "failed to correlate differentTypesWithDifferentCorrelationMessageResp"
122         )
123     }
124
125     @Test
126     fun testPrioritizationOrdering() {
127         val differentPriorityMessages = MessagePrioritizationSample
128             .sampleMessageWithSameCorrelation("sample-group", MessageState.NEW.name, 5)
129         val orderedPriorityMessages = differentPriorityMessages.orderByHighestPriority()
130         assertNotNull(orderedPriorityMessages, "failed to order the priority messages")
131     }
132 }