2 * ============LICENSE_START=======================================================
3 * dcaegen2-collectors-veshv
4 * ================================================================================
5 * Copyright (C) 2018-2020 NOKIA
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.onap.dcae.collectors.veshv.tests.fakes
22 import org.onap.dcae.collectors.veshv.boundary.Metrics
23 import org.onap.dcae.collectors.veshv.domain.WireFrameMessage
24 import org.onap.dcae.collectors.veshv.model.ClientRejectionCause
25 import org.onap.dcae.collectors.veshv.model.MessageDropCause
26 import org.onap.dcae.collectors.veshv.domain.RoutedMessage
27 import org.onap.dcae.collectors.veshv.domain.VesMessage
28 import org.onap.dcae.collectors.veshv.utils.TimeUtils
29 import java.time.Duration
30 import java.time.Instant
31 import kotlin.test.fail
34 * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
37 class FakeMetrics : Metrics {
39 var bytesReceived: Int = 0; private set
40 var messageBytesReceived: Int = 0; private set
41 var messagesDroppedCount: Int = 0; private set
42 var lastProcessingTimeMicros: Double = -1.0; private set
43 var lastProcessingTimeWithoutRoutingMicros: Double = -1.0; private set
44 var lastToCollectorTravelTime: Double = -1.0; private set
45 var messagesSentCount: Int = 0; private set
46 var clientRejectionCause = mutableMapOf<ClientRejectionCause, Int>(); private set
48 private val messagesSentToTopic = mutableMapOf<String, Int>()
49 private val messagesDroppedCause = mutableMapOf<MessageDropCause, Int>()
51 override fun notifyBytesReceived(size: Int) {
55 override fun notifyMessageReceived(msg: WireFrameMessage) {
56 messageBytesReceived += msg.payloadSize
59 override fun notifyMessageReceived(msg: VesMessage) {
60 lastToCollectorTravelTime = Duration.between(TimeUtils.epochMicroToInstant(msg.header.lastEpochMicrosec),
61 Instant.now()).toNanos() / 1000.0
64 override fun notifyMessageReadyForRouting(msg: VesMessage) {
65 lastProcessingTimeWithoutRoutingMicros = Duration.between(msg.wtpFrame.receivedAt, Instant.now()).toNanos() / 1000.0
68 override fun notifyMessageSent(msg: RoutedMessage) {
70 messagesSentToTopic.compute(msg.targetTopic) { k, _ ->
71 messagesSentToTopic[k]?.inc() ?: 1
73 lastProcessingTimeMicros = Duration.between(msg.message.wtpFrame.receivedAt, Instant.now()).toNanos() / 1000.0
76 override fun notifyMessageDropped(cause: MessageDropCause) {
77 messagesDroppedCount++
78 messagesDroppedCause.compute(cause) { k, _ -> messagesDroppedCause[k]?.inc() ?: 1 }
81 override fun notifyClientRejected(cause: ClientRejectionCause) {
82 clientRejectionCause.compute(cause) { k, _ -> clientRejectionCause[k]?.inc() ?: 1 }
85 override fun notifyClientDisconnected() {
88 override fun notifyClientConnected() {
91 fun messagesOnTopic(topic: String) =
92 messagesSentToTopic[topic] ?: fail("No messages were sent to topic $topic")
94 fun messagesDropped(cause: MessageDropCause) =
95 messagesDroppedCause[cause]
96 ?: fail("No messages were dropped due to cause: ${cause.name}")