Skip to content

Commit

Permalink
Pin filters behaviour changed: conditions inside the message and meta…
Browse files Browse the repository at this point in the history
…data now combined as "and"
  • Loading branch information
Oleg Smelov committed Jul 21, 2023
1 parent 73663fa commit 1f1b693
Show file tree
Hide file tree
Showing 5 changed files with 462 additions and 34 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,7 @@ dependencies {
### 5.3.0

+ Implemented message routers used th2 transport protocol for interaction
+ Pin filters behaviour changed: conditions inside the message and metadata now combined as "and"

### 5.2.1

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020-2022 Exactpro (Exactpro Systems Limited)
* Copyright 2020-2023 Exactpro (Exactpro Systems Limited)
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
Expand Down Expand Up @@ -52,7 +52,7 @@ public boolean verify(T message, List<? extends RouterFilter> routerFilters) {
protected abstract Map<String, String> getFields(T message);

private boolean checkValues(Map<String, String> messageFields, MultiValuedMap<String, FieldFilterConfiguration> fieldFilters) {
return fieldFilters.isEmpty() || fieldFilters.keys().stream().anyMatch(fieldName -> {
return fieldFilters.isEmpty() || fieldFilters.keys().stream().allMatch(fieldName -> {
String messageValue = messageFields.get(fieldName);
Collection<FieldFilterConfiguration> filters = fieldFilters.get(fieldName);
return !filters.isEmpty() && filters.stream().allMatch(filter -> FieldValueChecker.checkFieldValue(filter, messageValue));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020-2021 Exactpro (Exactpro Systems Limited)
* Copyright 2020-2023 Exactpro (Exactpro Systems Limited)
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
Expand All @@ -15,22 +15,21 @@

package com.exactpro.th2.common.schema.filter.strategy.impl;


import com.exactpro.th2.common.grpc.Message;
import com.exactpro.th2.common.grpc.MessageID;
import com.exactpro.th2.common.grpc.MessageMetadata;

import java.util.Map;
import java.util.stream.Collectors;


public abstract class AbstractTh2MsgFilterStrategy extends AbstractFilterStrategy<com.google.protobuf.Message> {

public static final String BOOK_KEY = "book";
public static final String SESSION_GROUP_KEY = "session_group";
public static final String SESSION_ALIAS_KEY = "session_alias";
public static final String MESSAGE_TYPE_KEY = "message_type";
public static final String DIRECTION_KEY = "direction";
public static final String PROTOCOL_KEY = "protocol";

@Override
public Map<String, String> getFields(com.google.protobuf.Message message) {
Expand All @@ -50,7 +49,8 @@ public Map<String, String> getFields(com.google.protobuf.Message message) {
SESSION_GROUP_KEY, sessionGroup.isEmpty() ? sessionAlias : sessionGroup,
SESSION_ALIAS_KEY, sessionAlias,
MESSAGE_TYPE_KEY, metadata.getMessageType(),
DIRECTION_KEY, messageID.getDirection().name()
DIRECTION_KEY, messageID.getDirection().name(),
PROTOCOL_KEY, metadata.getProtocol()
);

messageFields.putAll(metadataMsgFields);
Expand All @@ -59,5 +59,4 @@ public Map<String, String> getFields(com.google.protobuf.Message message) {
}

public abstract Message parseMessage(com.google.protobuf.Message message);

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,20 +34,24 @@ object AnyMessageFilterStrategy : AbstractFilterStrategy<Message>() {
val metadata = message.message.metadata
val sessionAlias = metadata.id.connectionId.sessionAlias
val sessionGroup = metadata.id.connectionId.sessionGroup
result.putAll(metadata.propertiesMap)
result[AbstractTh2MsgFilterStrategy.BOOK_KEY] = metadata.id.bookName
result[AbstractTh2MsgFilterStrategy.SESSION_GROUP_KEY] = sessionGroup.ifEmpty { sessionAlias }
result[AbstractTh2MsgFilterStrategy.SESSION_ALIAS_KEY] = sessionAlias
result[AbstractTh2MsgFilterStrategy.MESSAGE_TYPE_KEY] = metadata.messageType
result[AbstractTh2MsgFilterStrategy.DIRECTION_KEY] = metadata.id.direction.name
result[AbstractTh2MsgFilterStrategy.PROTOCOL_KEY] = metadata.protocol
}
message.hasRawMessage() -> {
val metadata = message.rawMessage.metadata
val sessionAlias = metadata.id.connectionId.sessionAlias
val sessionGroup = metadata.id.connectionId.sessionGroup
result.putAll(metadata.propertiesMap)
result[AbstractTh2MsgFilterStrategy.BOOK_KEY] = metadata.id.bookName
result[AbstractTh2MsgFilterStrategy.SESSION_GROUP_KEY] = sessionGroup.ifEmpty { sessionAlias }
result[AbstractTh2MsgFilterStrategy.SESSION_ALIAS_KEY] = metadata.id.connectionId.sessionAlias
result[AbstractTh2MsgFilterStrategy.DIRECTION_KEY] = metadata.id.direction.name
result[AbstractTh2MsgFilterStrategy.PROTOCOL_KEY] = metadata.protocol
}
else -> throw IllegalStateException("Message has not messages: ${message.toJson()}")
}
Expand Down
Loading

0 comments on commit 1f1b693

Please sign in to comment.