Add message prioritization module
[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 kotlin.test.assertTrue
23
24 class MessageCorrelationUtilsTest {
25
26     @Test
27     fun testCorrelationKeysReordered() {
28
29         val message1 = MessagePrioritizationSample.createMessage("sample-group", MessageState.NEW.name,
30                 "type-0", "key1=value1,key2=value2")
31         val message2 = MessagePrioritizationSample.createMessage("sample-group", MessageState.NEW.name,
32                 "type-0", "key2=value2,key1=value1")
33
34         val multipleMessages: MutableList<MessagePrioritization> = arrayListOf()
35         multipleMessages.add(message1)
36         multipleMessages.add(message2)
37         val multipleMessagesResponse = MessageCorrelationUtils.correlatedMessages(multipleMessages)
38         assertTrue(multipleMessagesResponse.correlated, "failed in multipleMessages correlated keys reordered")
39     }
40
41     @Test
42     fun differentTypesWithSameCorrelationMessages() {
43         /** With Types **/
44         /* Assumption is Same group with different types */
45         val differentTypesWithSameCorrelationMessages = MessagePrioritizationSample
46                 .sampleMessageWithDifferentTypeSameCorrelation("sample-group", MessageState.NEW.name, 3)
47         val differentTypesWithSameCorrelationMessagesResponse = MessageCorrelationUtils.correlatedMessagesWithTypes(
48                 differentTypesWithSameCorrelationMessages,
49                 arrayListOf("type-0", "type-1", "type-2"))
50         assertTrue(differentTypesWithSameCorrelationMessagesResponse.correlated,
51                 "failed to correlate differentTypesWithSameCorrelationMessagesResponse")
52
53         /* Assumption is Same group with different types and one missing expected types,
54         In this case type-3 message is missing */
55         val differentTypesWithSameCorrelationMessagesResWithMissingType = MessageCorrelationUtils.correlatedMessagesWithTypes(
56                 differentTypesWithSameCorrelationMessages,
57                 arrayListOf("type-0", "type-1", "type-2", "type-3"))
58         assertTrue(!differentTypesWithSameCorrelationMessagesResWithMissingType.correlated,
59                 "failed to correlate differentTypesWithSameCorrelationMessagesResWithMissingType")
60     }
61
62     @Test
63     fun withSameCorrelationMessagesWithIgnoredTypes() {
64         /** With ignoring Types */
65         /** Assumption is only one message received */
66         val withSameCorrelationOneMessages = MessagePrioritizationSample
67                 .sampleMessageWithSameCorrelation("sample-group", MessageState.NEW.name, 1)
68         val withSameCorrelationOneMessagesResp = MessageCorrelationUtils.correlatedMessagesWithTypes(
69                 withSameCorrelationOneMessages, null)
70         assertTrue(!withSameCorrelationOneMessagesResp.correlated,
71                 "failed to correlate withSameCorrelationMessagesResp")
72
73         /** Assumption is two message received for same group with same correlation */
74         val withSameCorrelationMessages = MessagePrioritizationSample
75                 .sampleMessageWithSameCorrelation("sample-group", MessageState.NEW.name, 2)
76         val withSameCorrelationMessagesResp = MessageCorrelationUtils.correlatedMessagesWithTypes(
77                 withSameCorrelationMessages, null)
78         assertTrue(withSameCorrelationMessagesResp.correlated,
79                 "failed to correlate withSameCorrelationMessagesResp")
80     }
81
82     @Test
83     fun differentTypesWithDifferentCorrelationMessage() {
84         /** Assumption is two message received for same group with different expected types and different correlation */
85         val message1 = MessagePrioritizationSample.createMessage("sample-group", MessageState.NEW.name,
86                 "type-0", "key1=value1,key2=value2")
87         val message2 = MessagePrioritizationSample.createMessage("sample-group", MessageState.NEW.name,
88                 "type-1", "key1=value1,key2=value3")
89         val differentTypesWithDifferentCorrelationMessage: MutableList<MessagePrioritization> = arrayListOf()
90         differentTypesWithDifferentCorrelationMessage.add(message1)
91         differentTypesWithDifferentCorrelationMessage.add(message2)
92         val differentTypesWithDifferentCorrelationMessageResp = MessageCorrelationUtils.correlatedMessagesWithTypes(
93                 differentTypesWithDifferentCorrelationMessage,
94                 arrayListOf("type-0", "type-1"))
95         assertTrue(!differentTypesWithDifferentCorrelationMessageResp.correlated,
96                 "failed to correlate differentTypesWithDifferentCorrelationMessageResp")
97     }
98 }